Hi,
I have a LayoutPanel containing two custom widgets. The widgets both extend ResizeComposite in order to be able to receive the onResize call. The main idea is illustrated in the code below. The two widgets share the same space and depending on user input they are shown in one of three different ways: widget #1 taking up the entire width, widget #1 & #2 are displayed side by side (sharing the available width 50/50) and widget #2 taking up the entire width.
LayoutPanel viewPanel = new LayoutPanel();
CustomWidgetExtendingResizeComposite1 custom1 = new CustomWidgetExtendingResizeComposite1();
CustomWidgetExtendingResizeComposite2 custom2 = new CustomWidgetExtendingResizeComposite2();
viewPanel.add(custom1;)
viewPanel.add(custom2);
public void onClick(String mode)
{
if (mode == "show widget #1")
{
this.viewPanel.setWidgetLeftWidth(
custom1 , 0, Unit.PCT, 0, Unit.PCT);
this.viewPanel.setWidgetLeftWidth(
custom2 , 0, Unit.PCT, 100, Unit.PCT);
}
else if (mode == "show widget #1 and #2")
{
this.viewPanel.setWidgetLeftWidth(
custom1 , 0, Unit.PCT, 50, Unit.PCT);
this.viewPanel.setWidgetLeftWidth(
custom2 , 50, Unit.PCT, 50, Unit.PCT);
else if (mode == "show widget #2")
{
this.viewPanel.setWidgetLeftWidth(
custom1 , 0, Unit.PCT, 100, Unit.PCT);
this.viewPanel.setWidgetLeftWidth(
custom2 , 100, Unit.PCT, 0, Unit.PCT);
}
Now to the weird part: When the parent (viewPanel) fires the onResize event it doesn't actually change the child widgets' size immidiately, but only does so after a while. I know this because I've overriden the onResize functions in both the custom widget classes and at the time of the onResize they still have their old width values. However, if I introduce a timer into my code that after a small time period (say 100 ms) manually fires the viewPanel's onResize function it works. By then the custom widgets have both somehow had their width set to the correct valules.
How can this be? Why don't the child widgets have their width values changed immidiately when the parent fires their respective onResize functions?