ComponentConnector and LayoutManager usage in custom layout

we are working on a quite complex custom layout widget. In short this layout looks like a ‘horizontal multi split panel’, that contains different content layouts. In addition an animation can be triggered where a slide is performed and some content layouts slide out of the view and new ones are slided in. The custom layout is implemented with a GWT AbsolutePanel and the positions of splitters and custom layouts are calculated on client side. The layout worked fine under Vaadin6. We are now facing some problems with porting to Vaadin7, that occur due to the new communication and layout mechanisms.

After porting, “moving the splitter” lead to unexpected behaviour. After setting the width of the page, layouts like Horizontal- or GridLayout, inside the content layouts did not resize (e.g. v-horizontallayout-slot in DOM). In the Vaadin7 implementation of the SplitPanel (VAbstractSplitPanel) this is handled by telling the LayoutManager that the size of a widget associated to a ComponentConnector has changed. To make this call of the LayoutManager possible the code breaks the actually wanted separation between the GWT only Widget and the Vaadin Connector.

  • Do you have any plans to separate it? Are there any guidelines how separation can be achieved?

A similar problem occurs during the animations. A content layout can shrink during the animation. So after every change of the size of the content layout, the child widget has to be updated. In this case the animation has a low framerate compared to the behaviour in Vaadin6.

  • Is it possible to influence the rate of the LayoutManager recalculations?

Overall we are dealing with the question, which functionality should be implemented in the Connector and which in the Widget? Conceptually it would be nice, if the Widget is a fully functional GWT widget. But in case of layouts this seems to be hard to accomplish.