-package org.simantics.views.swt.client.base;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Collection;\r
-import java.util.Hashtable;\r
-import java.util.Map;\r
-import java.util.Set;\r
-\r
-import org.eclipse.jface.resource.ResourceManager;\r
-import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.Control;\r
-import org.eclipse.ui.IWorkbenchSite;\r
-import org.simantics.scenegraph.INode;\r
-import org.simantics.scenegraph.ParentNode;\r
-\r
-abstract public class SWTParentNode extends ParentNode<ISWTViewNode> implements ISWTViewNode {\r
-\r
- private boolean disposed = false;\r
- \r
- private static final long serialVersionUID = -3548136282051185971L;\r
-\r
- class M implements Map<String, ISWTViewNode> {\r
- \r
- ArrayList<ISWTViewNode> list = new ArrayList<ISWTViewNode>();\r
- Hashtable<String, ISWTViewNode> table = new Hashtable<String, ISWTViewNode>();\r
- \r
- @Override\r
- public void clear() {\r
- table.clear();\r
- list.clear();\r
- }\r
- @Override\r
- public boolean containsKey(Object arg0) {\r
- return table.containsKey(arg0);\r
- }\r
- @Override\r
- public boolean containsValue(Object arg0) {\r
- return table.containsValue(arg0);\r
- }\r
- @Override\r
- public Set<java.util.Map.Entry<String, ISWTViewNode>> entrySet() {\r
- return table.entrySet();\r
- }\r
- @Override\r
- public ISWTViewNode get(Object arg0) {\r
- return table.get(arg0);\r
- }\r
- @Override\r
- public boolean isEmpty() {\r
- return table.isEmpty();\r
- }\r
- @Override\r
- public Set<String> keySet() {\r
- return table.keySet();\r
- }\r
- @Override\r
- public ISWTViewNode put(String arg0, ISWTViewNode arg1) {\r
- ISWTViewNode exist = table.put(arg0, arg1);\r
- if(exist != null) list.remove(exist);\r
- list.add(arg1);\r
- return exist;\r
- }\r
- @Override\r
- public void putAll(Map<? extends String, ? extends ISWTViewNode> arg0) {\r
- for(Map.Entry<? extends String, ? extends ISWTViewNode> entry : arg0.entrySet())\r
- put(entry.getKey(), entry.getValue());\r
- }\r
- @Override\r
- public ISWTViewNode remove(Object arg0) {\r
- ISWTViewNode node = table.remove(arg0);\r
- if(node != null) list.remove(node);\r
- return node;\r
- }\r
- @Override\r
- public int size() {\r
- return table.size();\r
- }\r
- @Override\r
- public Collection<ISWTViewNode> values() {\r
- return list;\r
- }\r
- \r
- }\r
- \r
- @Override\r
- public SWTRoot getRootNode() {\r
- ParentNode<?> root = super.getRootNode();\r
- return (root instanceof SWTRoot) ? (SWTRoot) root : null;\r
- }\r
- \r
- public ResourceManager getResourceManager() {\r
- SWTRoot root = getRootNode();\r
- if (root == null)\r
- throw new IllegalStateException(this + " not attached to SWTRoot root node");\r
- return root.getResourceManager();\r
- }\r
- \r
- public ResourceManager peekResourceManager() {\r
- SWTRoot root = getRootNode();\r
- return root != null ? root.peekResourceManager() : null;\r
- }\r
-\r
- @Override\r
- final public void asyncRemoveNode(INode node) {\r
- throw new Error();\r
- }\r
- \r
- @Override\r
- protected Map<String, ISWTViewNode> createChildMap() {\r
- return new M();\r
- }\r
- \r
- protected void createChildComposites() {\r
- createChildComposites((Composite)getControl());\r
- }\r
-\r
- protected void createChildComposites(Composite composite) {\r
- for(ISWTViewNode node : children.values()) node.createControls(composite);\r
- }\r
- \r
- @Override\r
- public Control getControl() {\r
- return null;\r
- }\r
- \r
- @Override\r
- public IWorkbenchSite getSite() {\r
- \r
- ParentNode<?> parentNode = getParent();\r
- ISWTViewNode swtParent = (ISWTViewNode)parentNode;\r
- return swtParent.getSite();\r
- \r
- }\r
-\r
- public Collection<ISWTViewNode> getChildComposites() {\r
- return children.values();\r
- }\r
- \r
- @Override\r
- public boolean isNodeDisposed() {\r
- return disposed;\r
- }\r
- \r
- public void dispose() {\r
- assert(!isNodeDisposed());\r
- for(ISWTViewNode child : getChildComposites())\r
- child.dispose();\r
- cleanup();\r
- disposed = true;\r
- }\r
- \r
-}\r
+package org.simantics.views.swt.client.base;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.jface.resource.ResourceManager;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.IWorkbenchSite;
+import org.simantics.scenegraph.INode;
+import org.simantics.scenegraph.ParentNode;
+
+abstract public class SWTParentNode extends ParentNode<ISWTViewNode> implements ISWTViewNode {
+
+ private boolean disposed = false;
+
+ private static final long serialVersionUID = -3548136282051185971L;
+
+ class M implements Map<String, ISWTViewNode> {
+
+ ArrayList<ISWTViewNode> list = new ArrayList<ISWTViewNode>();
+ Hashtable<String, ISWTViewNode> table = new Hashtable<String, ISWTViewNode>();
+
+ @Override
+ public void clear() {
+ table.clear();
+ list.clear();
+ }
+ @Override
+ public boolean containsKey(Object arg0) {
+ return table.containsKey(arg0);
+ }
+ @Override
+ public boolean containsValue(Object arg0) {
+ return table.containsValue(arg0);
+ }
+ @Override
+ public Set<java.util.Map.Entry<String, ISWTViewNode>> entrySet() {
+ return table.entrySet();
+ }
+ @Override
+ public ISWTViewNode get(Object arg0) {
+ return table.get(arg0);
+ }
+ @Override
+ public boolean isEmpty() {
+ return table.isEmpty();
+ }
+ @Override
+ public Set<String> keySet() {
+ return table.keySet();
+ }
+ @Override
+ public ISWTViewNode put(String arg0, ISWTViewNode arg1) {
+ ISWTViewNode exist = table.put(arg0, arg1);
+ if(exist != null) list.remove(exist);
+ list.add(arg1);
+ return exist;
+ }
+ @Override
+ public void putAll(Map<? extends String, ? extends ISWTViewNode> arg0) {
+ for(Map.Entry<? extends String, ? extends ISWTViewNode> entry : arg0.entrySet())
+ put(entry.getKey(), entry.getValue());
+ }
+ @Override
+ public ISWTViewNode remove(Object arg0) {
+ ISWTViewNode node = table.remove(arg0);
+ if(node != null) list.remove(node);
+ return node;
+ }
+ @Override
+ public int size() {
+ return table.size();
+ }
+ @Override
+ public Collection<ISWTViewNode> values() {
+ return list;
+ }
+
+ }
+
+ @Override
+ public SWTRoot getRootNode() {
+ ParentNode<?> root = super.getRootNode();
+ return (root instanceof SWTRoot) ? (SWTRoot) root : null;
+ }
+
+ public ResourceManager getResourceManager() {
+ SWTRoot root = getRootNode();
+ if (root == null)
+ throw new IllegalStateException(this + " not attached to SWTRoot root node");
+ return root.getResourceManager();
+ }
+
+ public ResourceManager peekResourceManager() {
+ SWTRoot root = getRootNode();
+ return root != null ? root.peekResourceManager() : null;
+ }
+
+ @Override
+ final public void asyncRemoveNode(INode node) {
+ throw new Error();
+ }
+
+ @Override
+ protected Map<String, ISWTViewNode> createChildMap() {
+ return new M();
+ }
+
+ protected void createChildComposites() {
+ createChildComposites((Composite)getControl());
+ }
+
+ protected void createChildComposites(Composite composite) {
+ for(ISWTViewNode node : children.values()) node.createControls(composite);
+ }
+
+ @Override
+ public Control getControl() {
+ return null;
+ }
+
+ @Override
+ public IWorkbenchSite getSite() {
+
+ ParentNode<?> parentNode = getParent();
+ ISWTViewNode swtParent = (ISWTViewNode)parentNode;
+ return swtParent.getSite();
+
+ }
+
+ public Collection<ISWTViewNode> getChildComposites() {
+ return children.values();
+ }
+
+ @Override
+ public boolean isNodeDisposed() {
+ return disposed;
+ }
+
+ public void dispose() {
+ assert(!isNodeDisposed());
+ for(ISWTViewNode child : getChildComposites())
+ child.dispose();
+ cleanup();
+ disposed = true;
+ }
+
+}