1 package org.simantics.views.swt.client.impl;
3 import java.util.Collection;
4 import java.util.Iterator;
6 import org.eclipse.jface.layout.GridDataFactory;
7 import org.eclipse.jface.layout.GridLayoutFactory;
8 import org.eclipse.swt.widgets.Composite;
9 import org.simantics.views.swt.client.base.ISWTViewNode;
10 import org.simantics.views.swt.client.base.SWTParentNode;
11 import org.simantics.views.swt.client.base.SingleSWTViewNode;
13 public class SWTAlternative extends SingleSWTViewNode<Composite> {
15 private static final long serialVersionUID = -3427445018396850285L;
17 private org.eclipse.swt.widgets.Composite parent;
19 public Boolean condition = false;
22 public void createControls(org.eclipse.swt.widgets.Composite parent) {
26 control = new Composite(parent, style);
28 GridLayoutFactory.fillDefaults().applyTo(control);
29 GridDataFactory.fillDefaults().grab(true, true).applyTo(control);
31 Collection<ISWTViewNode> nodes = getNodes();
32 if(nodes.size() > 0) {
33 Iterator<ISWTViewNode> it = nodes.iterator();
34 if(condition == null || !condition) {
35 if(nodes.size() > 1) {
37 it.next().createControls(control);
40 it.next().createControls(control);
44 // TODO: can not use generic setProperties since if forms a loop through synchronizeCondition
45 synchronizeForeground(foreground);
46 synchronizeBackground(background);
47 synchronizeFont(font);
48 synchronizeLayoutData(layoutData);
52 final private void reset(ISWTViewNode node) {
55 if(node instanceof SWTParentNode) {
56 SWTParentNode parentNode = (SWTParentNode)node;
57 for(ISWTViewNode child : parentNode.getChildComposites()) reset(child);
62 final public void synchronizeCondition(Boolean condition) {
64 if(condition == null) return;
66 Composite currentControl = control;
70 currentControl.dispose();
72 createControls(parent);