-package org.simantics.views.swt.client.impl;\r
-\r
-import java.util.Collection;\r
-import java.util.Iterator;\r
-\r
-import org.eclipse.jface.layout.GridDataFactory;\r
-import org.eclipse.jface.layout.GridLayoutFactory;\r
-import org.eclipse.swt.widgets.Composite;\r
-import org.simantics.views.swt.client.base.ISWTViewNode;\r
-import org.simantics.views.swt.client.base.SWTParentNode;\r
-import org.simantics.views.swt.client.base.SingleSWTViewNode;\r
-\r
-public class SWTAlternative extends SingleSWTViewNode<Composite> {\r
- \r
- private static final long serialVersionUID = -3427445018396850285L;\r
-\r
- private org.eclipse.swt.widgets.Composite parent;\r
- \r
- public Boolean condition = false;\r
- \r
- @Override\r
- public void createControls(org.eclipse.swt.widgets.Composite parent) {\r
- \r
- this.parent = parent;\r
- \r
- control = new Composite(parent, style);\r
- \r
- GridLayoutFactory.fillDefaults().applyTo(control);\r
- GridDataFactory.fillDefaults().grab(true, true).applyTo(control);\r
- \r
- Collection<ISWTViewNode> nodes = children.values();\r
- if(nodes.size() > 0) {\r
- Iterator<ISWTViewNode> it = nodes.iterator();\r
- if(condition == null || !condition) {\r
- if(nodes.size() > 1) {\r
- it.next();\r
- it.next().createControls(control);\r
- }\r
- } else {\r
- it.next().createControls(control);\r
- }\r
- }\r
- \r
- // TODO: can not use generic setProperties since if forms a loop through synchronizeCondition\r
- synchronizeForeground(foreground);\r
- synchronizeBackground(background);\r
- synchronizeFont(font);\r
- synchronizeLayoutData(layoutData);\r
- \r
- }\r
- \r
- final private void reset(ISWTViewNode node) {\r
-\r
- node.reset();\r
- if(node instanceof SWTParentNode) {\r
- SWTParentNode parentNode = (SWTParentNode)node;\r
- for(ISWTViewNode child : parentNode.getChildComposites()) reset(child);\r
- }\r
- \r
- }\r
- \r
- final public void synchronizeCondition(Boolean condition) {\r
- \r
- if(condition == null) return;\r
- \r
- Composite currentControl = control;\r
- \r
- reset(this);\r
- \r
- currentControl.dispose();\r
- \r
- createControls(parent);\r
- \r
- parent.layout(true);\r
- \r
- }\r
- \r
-}\r
+package org.simantics.views.swt.client.impl;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.swt.widgets.Composite;
+import org.simantics.views.swt.client.base.ISWTViewNode;
+import org.simantics.views.swt.client.base.SWTParentNode;
+import org.simantics.views.swt.client.base.SingleSWTViewNode;
+
+public class SWTAlternative extends SingleSWTViewNode<Composite> {
+
+ private static final long serialVersionUID = -3427445018396850285L;
+
+ private org.eclipse.swt.widgets.Composite parent;
+
+ public Boolean condition = false;
+
+ @Override
+ public void createControls(org.eclipse.swt.widgets.Composite parent) {
+
+ this.parent = parent;
+
+ control = new Composite(parent, style);
+
+ GridLayoutFactory.fillDefaults().applyTo(control);
+ GridDataFactory.fillDefaults().grab(true, true).applyTo(control);
+
+ Collection<ISWTViewNode> nodes = getNodes();
+ if(nodes.size() > 0) {
+ Iterator<ISWTViewNode> it = nodes.iterator();
+ if(condition == null || !condition) {
+ if(nodes.size() > 1) {
+ it.next();
+ it.next().createControls(control);
+ }
+ } else {
+ it.next().createControls(control);
+ }
+ }
+
+ // TODO: can not use generic setProperties since if forms a loop through synchronizeCondition
+ synchronizeForeground(foreground);
+ synchronizeBackground(background);
+ synchronizeFont(font);
+ synchronizeLayoutData(layoutData);
+
+ }
+
+ final private void reset(ISWTViewNode node) {
+
+ node.reset();
+ if(node instanceof SWTParentNode) {
+ SWTParentNode parentNode = (SWTParentNode)node;
+ for(ISWTViewNode child : parentNode.getChildComposites()) reset(child);
+ }
+
+ }
+
+ final public void synchronizeCondition(Boolean condition) {
+
+ if(condition == null) return;
+
+ Composite currentControl = control;
+
+ reset(this);
+
+ currentControl.dispose();
+
+ createControls(parent);
+
+ parent.layout(true);
+
+ }
+
+}