]> gerrit.simantics Code Review - simantics/platform.git/blob - 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
1 package org.simantics.views.swt.client.impl;\r
2 \r
3 import java.util.Collection;\r
4 import java.util.Iterator;\r
5 \r
6 import org.eclipse.jface.layout.GridDataFactory;\r
7 import org.eclipse.jface.layout.GridLayoutFactory;\r
8 import org.eclipse.swt.widgets.Composite;\r
9 import org.simantics.views.swt.client.base.ISWTViewNode;\r
10 import org.simantics.views.swt.client.base.SWTParentNode;\r
11 import org.simantics.views.swt.client.base.SingleSWTViewNode;\r
12 \r
13 public class SWTAlternative extends SingleSWTViewNode<Composite> {\r
14         \r
15         private static final long serialVersionUID = -3427445018396850285L;\r
16 \r
17         private org.eclipse.swt.widgets.Composite parent;\r
18         \r
19         public Boolean condition = false;\r
20         \r
21         @Override\r
22         public void createControls(org.eclipse.swt.widgets.Composite parent) {\r
23                 \r
24                 this.parent = parent;\r
25                 \r
26         control = new Composite(parent, style);\r
27         \r
28         GridLayoutFactory.fillDefaults().applyTo(control);\r
29         GridDataFactory.fillDefaults().grab(true, true).applyTo(control);\r
30         \r
31         Collection<ISWTViewNode> nodes = children.values();\r
32         if(nodes.size() > 0) {\r
33                 Iterator<ISWTViewNode> it = nodes.iterator();\r
34                 if(condition == null || !condition) {\r
35                         if(nodes.size() > 1) {\r
36                                 it.next();\r
37                                 it.next().createControls(control);\r
38                         }\r
39                 } else {\r
40                         it.next().createControls(control);\r
41                 }\r
42         }\r
43         \r
44         // TODO: can not use generic setProperties since if forms a loop through synchronizeCondition\r
45                 synchronizeForeground(foreground);\r
46                 synchronizeBackground(background);\r
47                 synchronizeFont(font);\r
48                 synchronizeLayoutData(layoutData);\r
49         \r
50         }\r
51         \r
52         final private void reset(ISWTViewNode node) {\r
53 \r
54                 node.reset();\r
55                 if(node instanceof SWTParentNode) {\r
56                         SWTParentNode parentNode = (SWTParentNode)node;\r
57                         for(ISWTViewNode child : parentNode.getChildComposites()) reset(child);\r
58                 }\r
59                 \r
60         }\r
61         \r
62         final public void synchronizeCondition(Boolean condition) {\r
63                 \r
64                 if(condition == null) return;\r
65                 \r
66                 Composite currentControl = control;\r
67                 \r
68                 reset(this);\r
69                 \r
70                 currentControl.dispose();\r
71                 \r
72                 createControls(parent);\r
73                 \r
74                 parent.layout(true);\r
75                 \r
76         }\r
77         \r
78 }\r