1 package org.simantics.views.swt.client.impl;
\r
3 import java.util.Collection;
\r
4 import java.util.Iterator;
\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
13 public class SWTAlternative extends SingleSWTViewNode<Composite> {
\r
15 private static final long serialVersionUID = -3427445018396850285L;
\r
17 private org.eclipse.swt.widgets.Composite parent;
\r
19 public Boolean condition = false;
\r
22 public void createControls(org.eclipse.swt.widgets.Composite parent) {
\r
24 this.parent = parent;
\r
26 control = new Composite(parent, style);
\r
28 GridLayoutFactory.fillDefaults().applyTo(control);
\r
29 GridDataFactory.fillDefaults().grab(true, true).applyTo(control);
\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
37 it.next().createControls(control);
\r
40 it.next().createControls(control);
\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
52 final private void reset(ISWTViewNode node) {
\r
55 if(node instanceof SWTParentNode) {
\r
56 SWTParentNode parentNode = (SWTParentNode)node;
\r
57 for(ISWTViewNode child : parentNode.getChildComposites()) reset(child);
\r
62 final public void synchronizeCondition(Boolean condition) {
\r
64 if(condition == null) return;
\r
66 Composite currentControl = control;
\r
70 currentControl.dispose();
\r
72 createControls(parent);
\r
74 parent.layout(true);
\r