]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTAlternative.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.views.swt.client / src / org / simantics / views / swt / client / impl / SWTAlternative.java
diff --git a/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTAlternative.java b/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTAlternative.java
new file mode 100644 (file)
index 0000000..1647b3b
--- /dev/null
@@ -0,0 +1,78 @@
+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