I think you will be able to use a tree for editable items.
Just write your own cell, based Cell<C>, override onBrowserEvent and onRender with the behavior you want and use setCell(yourCell) to set the Cell inside the tree.
TreeGrid now implements HasBeforeCollapseItemHandlers, HasCollapseItemHandlers, HasBeforeExpandItemHandlers, and HasExpandItemHandlers. Changes are in RC2: