Add Fix Information on CardLayoutContainer

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-expression-widget@93031 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Giancarlo Panichi 2014-03-12 19:32:25 +00:00
parent f449a97903
commit b17f8feb03
6 changed files with 349 additions and 151 deletions

View File

@ -350,3 +350,67 @@ Compiling...
Compilation completed in 0.00 seconds
Removing invalidated units
Finding entry point classes
Public resources found in...
Translatable source found in...
Found 0 cached/archived units. Used 0 / 2719 units from cache.
Compiling...
30% complete (ETR: 8 seconds)
30% complete (ETR: 8 seconds)
30% complete (ETR: 8 seconds)
30% complete (ETR: 8 seconds)
40% complete (ETR: 8 seconds)
50% complete (ETR: 6 seconds)
60% complete (ETR: 5 seconds)
70% complete (ETR: 3 seconds)
80% complete (ETR: 2 seconds)
90% complete (ETR: 1 seconds)
100% complete (ETR: 0 seconds)
Compilation completed in 12.16 seconds
Removing invalidated units
Finding entry point classes
Public resources found in...
Translatable source found in...
Found 2719 cached/archived units. Used 2719 / 2719 units from cache.
Compiling...
Compilation completed in 0.00 seconds
Removing invalidated units
Finding entry point classes
Public resources found in...
Translatable source found in...
Found 2719 cached/archived units. Used 2719 / 2719 units from cache.
Compiling...
Compilation completed in 0.00 seconds
Removing invalidated units
Finding entry point classes
Public resources found in...
Translatable source found in...
Found 0 cached/archived units. Used 0 / 2719 units from cache.
Compiling...
40% complete (ETR: 5 seconds)
40% complete (ETR: 5 seconds)
40% complete (ETR: 5 seconds)
40% complete (ETR: 5 seconds)
40% complete (ETR: 5 seconds)
50% complete (ETR: 5 seconds)
60% complete (ETR: 4 seconds)
70% complete (ETR: 3 seconds)
80% complete (ETR: 2 seconds)
90% complete (ETR: 1 seconds)
100% complete (ETR: 0 seconds)
Compilation completed in 13.88 seconds
Removing invalidated units
Finding entry point classes
Public resources found in...
Translatable source found in...
Found 2719 cached/archived units. Used 2719 / 2719 units from cache.
Compiling...
Compilation completed in 0.00 seconds
Removing invalidated units
Finding entry point classes
Public resources found in...
Translatable source found in...
Found 2719 cached/archived units. Used 2719 / 2719 units from cache.
Compiling...
Compilation completed in 0.00 seconds
Removing invalidated units
Finding entry point classes

View File

@ -20,8 +20,6 @@ import com.sencha.gxt.widget.core.client.container.HBoxLayoutContainer;
import com.sencha.gxt.widget.core.client.container.HBoxLayoutContainer.HBoxLayoutAlign;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
import com.sencha.gxt.widget.core.client.event.BeforeShowEvent;
import com.sencha.gxt.widget.core.client.event.BeforeShowEvent.BeforeShowHandler;
import com.sencha.gxt.widget.core.client.event.SelectEvent;
import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler;
import com.sencha.gxt.widget.core.client.form.FieldLabel;
@ -39,6 +37,11 @@ public class ColumnExpressionPanel extends FramedPanel {
MultiColumnFilter, ColumnFilter, ColumnRule;
}
protected String WIDTH_MULTI = "642px";
protected String HEIGHT_MULTI = "300px";
protected String WIDTH = "648px";
protected String HEIGHT = "364px";
protected ColumnExpressionPanelType type;
protected EventBus eventBus;
@ -47,17 +50,21 @@ public class ColumnExpressionPanel extends FramedPanel {
protected MultiColumnFilterTabPanel parentMultiColumnFilterTabPanel;
protected ColumnData column;
protected ConditionWidget conditionWidget;
private TextButton btnApply;
private TextButton btnSearch;
private TextButton btnSave;
private TextButton btnClose;
private FieldSet conditionsField;
private ConditionWidget conditionWidget;
public ColumnExpressionPanel(
MultiColumnFilterTabPanel parentMultiColumnFilterTabPanel,
ColumnData column, EventBus eventBus) {
super();
setWidth(WIDTH_MULTI);
setHeight(HEIGHT_MULTI);
type = ColumnExpressionPanelType.MultiColumnFilter;
this.parentMultiColumnFilterTabPanel = parentMultiColumnFilterTabPanel;
this.column = column;
@ -70,6 +77,8 @@ public class ColumnExpressionPanel extends FramedPanel {
public ColumnExpressionPanel(ColumnFilterDialog parentFilterDialog,
ColumnData column, EventBus eventBus) {
super();
setWidth(WIDTH);
setHeight(HEIGHT);
type = ColumnExpressionPanelType.ColumnFilter;
this.parentFilterDialog = parentFilterDialog;
this.column = column;
@ -87,6 +96,8 @@ public class ColumnExpressionPanel extends FramedPanel {
public ColumnExpressionPanel(ColumnExpressionDialog parent,
ColumnData column, EventBus eventBus) {
super();
setWidth(WIDTH);
setHeight(HEIGHT);
type = ColumnExpressionPanelType.ColumnRule;
this.parentRuleDialog = parent;
this.column = column;
@ -99,16 +110,19 @@ public class ColumnExpressionPanel extends FramedPanel {
protected void create() {
setBodyBorder(false);
setHeaderVisible(false);
VerticalLayoutContainer basicLayout = new VerticalLayoutContainer();
basicLayout.setAdjustForScroll(true);
basicLayout.setScrollMode(ScrollMode.AUTO);
FieldSet properties = null;
VerticalLayoutContainer propertiesLayout;
TextField columnName;
HBoxLayoutContainer flowButton = new HBoxLayoutContainer();
flowButton.setHBoxLayoutAlign(HBoxLayoutAlign.MIDDLE);
flowButton.setPack(BoxLayoutPack.CENTER);
switch (type) {
case ColumnRule:
properties = new FieldSet();
@ -132,57 +146,14 @@ public class ColumnExpressionPanel extends FramedPanel {
propertiesLayout.add(new FieldLabel(dataType, "Data Type"),
new VerticalLayoutData(1, -1));
break;
case ColumnFilter:
properties = new FieldSet();
properties.setHeadingText("Properties");
properties.setCollapsible(false);
conditionsField = new FieldSet();
conditionsField.setHeadingText("Conditions");
conditionsField.setCollapsible(false);
propertiesLayout = new VerticalLayoutContainer();
properties.add(propertiesLayout);
columnName = new TextField();
columnName.setToolTip("Column");
columnName.setReadOnly(true);
columnName.setValue(column.getLabel());
propertiesLayout.add(new FieldLabel(columnName, "Column"),
new VerticalLayoutData(1, -1));
break;
case MultiColumnFilter:
properties = new FieldSet();
properties.setHeadingText("Properties");
properties.setCollapsible(false);
propertiesLayout = new VerticalLayoutContainer();
properties.add(propertiesLayout);
columnName = new TextField();
columnName.setToolTip("Column");
columnName.setReadOnly(true);
columnName.setValue(column.getLabel());
propertiesLayout.add(new FieldLabel(columnName, "Column"),
new VerticalLayoutData(1, -1));
break;
default:
break;
}
FieldSet conditions = new FieldSet();
conditions.setHeadingText("Conditions");
conditions.setCollapsible(false);
conditionWidget = new ConditionWidget(column);
Log.debug("ConditionWidget"+conditionWidget);
conditions.add(conditionWidget);
HBoxLayoutContainer flowButton = new HBoxLayoutContainer();
flowButton.setHBoxLayoutAlign(HBoxLayoutAlign.MIDDLE);
flowButton.setPack(BoxLayoutPack.CENTER);
switch (type) {
case ColumnRule:
conditionWidget = new ConditionWidget(column);
Log.debug("ConditionWidget" + conditionWidget);
conditionsField.add(conditionWidget);
btnApply = new TextButton("Apply");
btnApply.setIcon(ExpressionResources.INSTANCE.apply());
btnApply.setIconAlign(IconAlign.RIGHT);
@ -221,7 +192,7 @@ public class ColumnExpressionPanel extends FramedPanel {
}
});
btnClose = new TextButton("Close");
btnClose.setIcon(ExpressionResources.INSTANCE.close());
btnClose.setIconAlign(IconAlign.RIGHT);
@ -234,13 +205,36 @@ public class ColumnExpressionPanel extends FramedPanel {
}
});
flowButton.add(btnApply, new BoxLayoutData(new Margins(2, 4, 2, 4)));
flowButton
.add(btnApply, new BoxLayoutData(new Margins(2, 4, 2, 4)));
flowButton.add(btnSave, new BoxLayoutData(new Margins(2, 4, 2, 4)));
flowButton.add(btnSearch,
new BoxLayoutData(new Margins(2, 4, 2, 4)));
flowButton.add(btnClose, new BoxLayoutData(new Margins(2, 4, 2, 4)));
flowButton
.add(btnClose, new BoxLayoutData(new Margins(2, 4, 2, 4)));
break;
case ColumnFilter:
properties = new FieldSet();
properties.setHeadingText("Properties");
properties.setCollapsible(false);
propertiesLayout = new VerticalLayoutContainer();
properties.add(propertiesLayout);
columnName = new TextField();
columnName.setToolTip("Column");
columnName.setReadOnly(true);
columnName.setValue(column.getLabel());
propertiesLayout.add(new FieldLabel(columnName, "Column"),
new VerticalLayoutData(1, -1));
conditionsField = new FieldSet();
conditionsField.setHeadingText("Conditions");
conditionsField.setCollapsible(false);
conditionWidget = new ConditionWidget(column);
Log.debug("ConditionWidget" + conditionWidget);
conditionsField.add(conditionWidget);
btnApply = new TextButton("Apply");
btnApply.setIcon(ExpressionResources.INSTANCE.applyFilter());
btnApply.setIconAlign(IconAlign.RIGHT);
@ -253,7 +247,7 @@ public class ColumnExpressionPanel extends FramedPanel {
}
});
btnClose = new TextButton("Close");
btnClose.setIcon(ExpressionResources.INSTANCE.close());
btnClose.setIconAlign(IconAlign.RIGHT);
@ -265,10 +259,35 @@ public class ColumnExpressionPanel extends FramedPanel {
close();
}
});
flowButton.add(btnApply, new BoxLayoutData(new Margins(2, 4, 2, 4)));
flowButton.add(btnClose, new BoxLayoutData(new Margins(2, 4, 2, 4)));
flowButton
.add(btnApply, new BoxLayoutData(new Margins(2, 4, 2, 4)));
flowButton
.add(btnClose, new BoxLayoutData(new Margins(2, 4, 2, 4)));
break;
case MultiColumnFilter:
properties = new FieldSet();
properties.setHeadingText("Properties");
properties.setCollapsible(false);
propertiesLayout = new VerticalLayoutContainer();
properties.add(propertiesLayout);
columnName = new TextField();
columnName.setToolTip("Column");
columnName.setReadOnly(true);
columnName.setValue(column.getLabel());
propertiesLayout.add(new FieldLabel(columnName, "Column"),
new VerticalLayoutData(1, -1));
conditionsField = new FieldSet();
conditionsField.setHeadingText("Conditions");
conditionsField.setCollapsible(false);
conditionWidget = new ConditionWidget(column,"612px", "110px");
Log.debug("ConditionWidget" + conditionWidget);
conditionsField.add(conditionWidget);
btnApply = new TextButton("Add");
btnApply.setIcon(ExpressionResources.INSTANCE.applyFilter());
btnApply.setIconAlign(IconAlign.RIGHT);
@ -281,32 +300,22 @@ public class ColumnExpressionPanel extends FramedPanel {
}
});
flowButton.add(btnApply, new BoxLayoutData(new Margins(2, 4, 2, 4)));
flowButton
.add(btnApply, new BoxLayoutData(new Margins(2, 4, 2, 4)));
break;
default:
break;
}
basicLayout.add(properties, new VerticalLayoutData(-1, -1, new Margins(
1)));
basicLayout.add(conditions, new VerticalLayoutData(-1, -1, new Margins(
1)));
basicLayout.add(flowButton, new VerticalLayoutData(-1, -1, new Margins(
basicLayout.add(conditionsField, new VerticalLayoutData(-1, -1,
new Margins(1)));
basicLayout.add(flowButton, new VerticalLayoutData(-1, 36, new Margins(
5, 2, 5, 2)));
add(basicLayout);
addBeforeShowHandler(new BeforeShowHandler() {
@Override
public void onBeforeShow(BeforeShowEvent event) {
conditionWidget.forceLayout();
}
});
show();
}
protected void applyRule() {

View File

@ -47,7 +47,8 @@ import com.sencha.gxt.widget.core.client.form.TextField;
public class ConditionWidget extends SimpleContainer {
private ConditionWidget thisCont;
protected String HEIGHT = "210px";
protected static final String HEIGHT = "210px";
protected static final String WIDTH = "612px";
protected FieldLabel matchLabel;
protected ToggleGroup groupMatch;
@ -62,13 +63,23 @@ public class ConditionWidget extends SimpleContainer {
protected String readableExpression;
ConditionWidget(ColumnData column) {
public ConditionWidget(ColumnData column) {
super();
create(column,WIDTH, HEIGHT);
}
public ConditionWidget(ColumnData column, String width,String height) {
super();
create(column,width,height);
}
protected void create(ColumnData column, String width, String height){
this.column = column;
setBorders(true);
setHeight(HEIGHT);
setWidth(width);
setHeight(height);
thisCont = this;
itemIdCombo = "ComboConditions"+column.getName();
@ -78,9 +89,7 @@ public class ConditionWidget extends SimpleContainer {
itemIdBtnDel = "BtnDel"+column.getName();
VerticalLayoutContainer baseLayout = new VerticalLayoutContainer();
//baseLayout.setAdjustForScroll(true);
//baseLayout.setScrollMode(ScrollMode.AUTOY);
//baseLayout.getScrollSupport().setScrollMode(ScrollMode.AUTO);
Radio radioAll = new Radio();
radioAll.setName("All");
@ -109,12 +118,6 @@ public class ConditionWidget extends SimpleContainer {
vert = new VerticalLayoutContainer();
vert.setScrollMode(ScrollMode.AUTO);
vert.setAdjustForScroll(true);
/*if(baseLayout.getScrollSupport()==null){
Log.error("ScrollSupport is null");
} else {
Log.info("ScrollSupport:"+baseLayout.getScrollSupport());
baseLayout.getScrollSupport().setScrollMode(ScrollMode.AUTO);
}*/
setup();
@ -122,12 +125,9 @@ public class ConditionWidget extends SimpleContainer {
baseLayout.add(vert, new VerticalLayoutData(1, 1, new Margins(0)));
add(baseLayout);
show();
//show();
}
protected void setup() {

View File

@ -1,20 +1,11 @@
package org.gcube.portlets.user.td.expressionwidget.client;
import java.util.ArrayList;
import org.gcube.portlets.user.td.expressionwidget.client.resource.ExpressionResources;
import org.gcube.portlets.user.td.gwtservice.client.rpc.TDGWTServiceAsync;
import org.gcube.portlets.user.td.gwtservice.shared.tr.ColumnData;
import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId;
import org.gcube.portlets.user.td.widgetcommonevent.shared.expression.C_Expression;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.web.bindery.event.shared.EventBus;
import com.sencha.gxt.widget.core.client.Window;
import com.sencha.gxt.widget.core.client.box.AlertMessageBox;
import com.sencha.gxt.widget.core.client.event.HideEvent;
import com.sencha.gxt.widget.core.client.event.HideEvent.HideHandler;
/**
@ -24,25 +15,23 @@ import com.sencha.gxt.widget.core.client.event.HideEvent.HideHandler;
*
*/
public class MultiColumnFilterDialog extends Window {
private MultiColumnFilterTabPanel mcfTabPanel;
protected String WIDTH = "660px";
protected String HEIGHT = "480px";
protected C_Expression exp = null;
protected TRId trId;
protected EventBus eventBus;
protected ArrayList<ColumnData> columns;
public MultiColumnFilterDialog(TRId trId, EventBus eventBus) {
this.eventBus = eventBus;
this.trId = trId;
initWindow();
load(trId);
create();
}
protected void create(){
mcfTabPanel=new MultiColumnFilterTabPanel(this, "Filter", eventBus);
add(mcfTabPanel);
final MultiColumnFilterPanel mcfPanel=new MultiColumnFilterPanel(this, trId,eventBus);
add(mcfPanel);
}
@ -58,33 +47,6 @@ public class MultiColumnFilterDialog extends Window {
}
protected void load(TRId trId) {
TDGWTServiceAsync.INSTANCE.getColumns(trId,
new AsyncCallback<ArrayList<ColumnData>>() {
@Override
public void onFailure(Throwable caught) {
Log.error("Error retrieving columns: "
+ caught.getMessage());
AlertMessageBox d = new AlertMessageBox(
"Error retrieving columns", caught.getMessage());
d.addHideHandler(new HideHandler() {
public void onHide(HideEvent event) {
hide();
}
});
d.show();
}
@Override
public void onSuccess(ArrayList<ColumnData> result) {
Log.debug("Retrived column: " + result);
columns = result;
create();
}
});
}
}

View File

@ -0,0 +1,101 @@
package org.gcube.portlets.user.td.expressionwidget.client;
import java.util.ArrayList;
import org.gcube.portlets.user.td.gwtservice.client.rpc.TDGWTServiceAsync;
import org.gcube.portlets.user.td.gwtservice.shared.tr.ColumnData;
import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.web.bindery.event.shared.EventBus;
import com.sencha.gxt.widget.core.client.box.AlertMessageBox;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.event.BeforeShowEvent;
import com.sencha.gxt.widget.core.client.event.BeforeShowEvent.BeforeShowHandler;
import com.sencha.gxt.widget.core.client.event.HideEvent;
import com.sencha.gxt.widget.core.client.event.HideEvent.HideHandler;
public class MultiColumnFilterPanel extends SimplePanel {
protected String WIDTH = "648px";
protected String HEIGHT = "444px";
protected TRId trId;
protected ArrayList<ColumnData> columns;
protected EventBus eventBus;
protected MultiColumnFilterDialog multiColumnFilterDialog;
public MultiColumnFilterPanel(
MultiColumnFilterDialog multiColumnFilterDialog,
TRId trId, EventBus eventBus) {
super();
Log.debug("Create MultiColumnFilterPanel");
setHeight(HEIGHT);
setWidth(WIDTH);
this.multiColumnFilterDialog=multiColumnFilterDialog;
this.trId=trId;
this.eventBus = eventBus;
load(trId);
}
protected void create(){
VerticalLayoutContainer vl=new VerticalLayoutContainer();
vl.setBorders(false);
final MultiColumnFilterTabPanel mcfTabPanel=new MultiColumnFilterTabPanel(this,eventBus);
vl.add(mcfTabPanel);
mcfTabPanel.addBeforeShowHandler(new BeforeShowHandler() {
public void onBeforeShow(BeforeShowEvent event) {
mcfTabPanel.forceLayout();
}
});
final SimplePanel bo=new SimplePanel();
bo.add(new HTML("Expression"));
vl.add(bo);
add(vl);
}
protected void load(TRId trId) {
TDGWTServiceAsync.INSTANCE.getColumns(trId,
new AsyncCallback<ArrayList<ColumnData>>() {
@Override
public void onFailure(Throwable caught) {
Log.error("Error retrieving columns: "
+ caught.getMessage());
AlertMessageBox d = new AlertMessageBox(
"Error retrieving columns", caught.getMessage());
d.addHideHandler(new HideHandler() {
public void onHide(HideEvent event) {
multiColumnFilterDialog.hide();
}
});
d.show();
}
@Override
public void onSuccess(ArrayList<ColumnData> result) {
Log.debug("Retrived column: " + result);
columns = result;
create();
}
});
}
}

View File

@ -11,8 +11,6 @@ import com.allen_sauer.gwt.log.client.Log;
import com.google.web.bindery.event.shared.EventBus;
import com.sencha.gxt.widget.core.client.TabItemConfig;
import com.sencha.gxt.widget.core.client.TabPanel;
import com.sencha.gxt.widget.core.client.event.BeforeShowEvent;
import com.sencha.gxt.widget.core.client.event.BeforeShowEvent.BeforeShowHandler;
/**
*
@ -21,20 +19,24 @@ import com.sencha.gxt.widget.core.client.event.BeforeShowEvent.BeforeShowHandler
*
*/
public class MultiColumnFilterTabPanel extends TabPanel {
protected String WIDTH = "648px";
protected String HEIGHT = "300px";
protected EventBus eventBus;
protected MultiColumnFilterDialog multiColumnFilterDialog;
protected MultiColumnFilterPanel multiColumnFilterPanel;
protected ArrayList<ColumnData> columns;
protected HashMap<ColumnData, C_Expression> cexpressionList;
public MultiColumnFilterTabPanel(
MultiColumnFilterDialog multiColumnFilterDialog, String name,
MultiColumnFilterPanel multiColumnFilterPanel,
EventBus eventBus) {
super();
Log.debug("Create MultiColumnFilterTabPanel");
setHeight(HEIGHT);
setWidth(WIDTH);
this.multiColumnFilterPanel=multiColumnFilterPanel;
this.eventBus = eventBus;
this.columns = multiColumnFilterDialog.columns;
setId(name);
this.columns = multiColumnFilterPanel.columns;
setBodyBorder(false);
setBorders(false);
setAnimScroll(true);
@ -47,15 +49,17 @@ public class MultiColumnFilterTabPanel extends TabPanel {
Log.debug("Start MultiColumnFilterTabPanel Tabs");
addFilterColumnsPanel();
setActiveWidget(getWidget(0));
}
protected void addFilterColumnsPanel() {
cexpressionList = new HashMap<ColumnData, C_Expression>();
TabItemConfig columnFilterItemConf;
ColumnExpressionPanel columnExpressionPanel;
for (ColumnData col : columns) {
columnFilterItemConf = new TabItemConfig(col.getLabel(), false);
if (col.getTypeCode().compareTo(
ColumnTypeCode.ANNOTATION.toString()) == 0
|| col.getTypeCode().compareTo(
@ -68,19 +72,77 @@ public class MultiColumnFilterTabPanel extends TabPanel {
ColumnTypeCode.CODENAME.toString()) == 0
|| col.getTypeCode().compareTo(
ColumnTypeCode.MEASURE.toString()) == 0) {
final ColumnExpressionPanel columnExpressionPanel = new ColumnExpressionPanel(
columnExpressionPanel = new ColumnExpressionPanel(
this, col, eventBus);
add(columnExpressionPanel, columnFilterItemConf);
} else {
}
}
};
protected void applyFilter(ColumnData column, C_Expression exp) {
cexpressionList.put(column, exp);
}
//TODO fix CardLayoutContainer in 3.0.1
/*
private CardLayoutContainer container = new CardLayoutContainer() {
@Override
protected Widget getParentLayoutWidget() {
return container.getParent();
};
};
@Override
public void setActiveWidget(Widget widget) {
if (activeWidget == widget) {
return;
}
if (activeWidget != null) {
activeWidget.setVisible(false);
}
if (widget != null) {
if (widget.asWidget().getParent() == this) {
activeWidget = widget;
activeWidget.setVisible(true);
// forcing causes layout to execute every time this method called
// when used with TabPanel this causes layouts to execute every time tab
// selected which is not optimal
// EXTGWT-1550, in example, a panel is collapsed then another tab is
// selected. when returning to tab with collapsed panel
// the layout executes as it was forced
// layoutRequiredThisEventLoop = true;
// forceLayout();
if (GXT.isIE6() || GXT.isIE7()) {
layoutRequiredThisEventLoop = true;
forceLayout();
} else {
doLayout();
}
} else {
activeWidget = widget;
activeWidget.setVisible(true);
add(widget);
if (widget.asWidget().getParent() == this) {
layoutRequiredThisEventLoop = true;
forceLayout();
} else {
activeWidget = null;
}
}
} else {
activeWidget = null;
}
}
*/
}