From f44eec19eacbae6f6642363369f414acba69f262 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Thu, 8 Mar 2012 14:30:14 +0000 Subject: [PATCH] Deprecate TreeObject (not used anywhere anymore) git-svn-id: https://svn.argeo.org/commons/trunk@5161 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../ui/AbstractTreeContentProvider.java | 6 +- .../java/org/argeo/eclipse/ui/TreeObject.java | 2 + .../java/org/argeo/eclipse/ui/TreeParent.java | 82 ++++++++++++++++--- 3 files changed, 76 insertions(+), 14 deletions(-) diff --git a/eclipse/runtime/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/ui/AbstractTreeContentProvider.java b/eclipse/runtime/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/ui/AbstractTreeContentProvider.java index 0d5cbd23d..adc87e1c2 100644 --- a/eclipse/runtime/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/ui/AbstractTreeContentProvider.java +++ b/eclipse/runtime/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/ui/AbstractTreeContentProvider.java @@ -5,7 +5,7 @@ import org.eclipse.jface.viewers.Viewer; /** * Tree content provider dealing with tree objects and providing reasonable - * defualts. + * defaults. */ public abstract class AbstractTreeContentProvider implements ITreeContentProvider { @@ -26,8 +26,8 @@ public abstract class AbstractTreeContentProvider implements } public Object getParent(Object element) { - if (element instanceof TreeObject) { - return ((TreeObject) element).getParent(); + if (element instanceof TreeParent) { + return ((TreeParent) element).getParent(); } return null; } diff --git a/eclipse/runtime/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/ui/TreeObject.java b/eclipse/runtime/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/ui/TreeObject.java index 35732ce03..96ec836d0 100644 --- a/eclipse/runtime/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/ui/TreeObject.java +++ b/eclipse/runtime/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/ui/TreeObject.java @@ -16,6 +16,8 @@ package org.argeo.eclipse.ui; +/** @deprecated use {@link TreeParent} instead */ +@Deprecated class TreeObject implements Comparable { private String name; private TreeParent parent; diff --git a/eclipse/runtime/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/ui/TreeParent.java b/eclipse/runtime/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/ui/TreeParent.java index c4e74a96f..a086c17aa 100644 --- a/eclipse/runtime/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/ui/TreeParent.java +++ b/eclipse/runtime/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/ui/TreeParent.java @@ -19,42 +19,71 @@ package org.argeo.eclipse.ui; import java.util.ArrayList; import java.util.List; -public class TreeParent extends TreeObject { +/** Parent / children semantic to be used for simple UI Tree structure */ +public class TreeParent { + private String name; + private TreeParent parent; + private List children; - private boolean loaded; + /** False until at least one child has been added, then true until cleared */ + private boolean loaded = false; public TreeParent(String name) { - super(name); + this.name = name; children = new ArrayList(); - loaded = false; } public synchronized void addChild(Object child) { loaded = true; children.add(child); - // bsinou: was 'if (child instanceof TreeParent)' - if (child instanceof TreeObject) - ((TreeObject) child).setParent(this); + if (child instanceof TreeParent) + ((TreeParent) child).setParent(this); } + /** + * Remove this child. The child is disposed. + */ public synchronized void removeChild(Object child) { children.remove(child); - if (child instanceof TreeParent) - ((TreeParent) child).setParent(null); - // TODO: clear subtree recursively + if (child instanceof TreeParent) { + ((TreeParent) child).dispose(); + } } public synchronized void clearChildren() { + for (Object obj : children) { + if (obj instanceof TreeParent) + ((TreeParent) obj).dispose(); + } loaded = false; children.clear(); - // TODO: clear also the objects + } + + /** + * If overridden, super.dispose() must be called, typically + * after custom cleaning. + */ + public synchronized void dispose() { + clearChildren(); + parent = null; + children = null; } public synchronized Object[] getChildren() { return children.toArray(new Object[children.size()]); } + @SuppressWarnings("unchecked") + public synchronized List getChildrenOfType(Class clss) { + List lst = new ArrayList(); + for (Object obj : children) { + if (clss.isAssignableFrom(obj.getClass())) + lst.add((T) obj); + } + return lst; + } + public synchronized boolean hasChildren() { return children.size() > 0; } @@ -70,4 +99,35 @@ public class TreeParent extends TreeObject { public synchronized Boolean isLoaded() { return loaded; } + + public String getName() { + return name; + } + + public void setParent(TreeParent parent) { + this.parent = parent; + } + + public TreeParent getParent() { + return parent; + } + + public String toString() { + return getName(); + } + + public int compareTo(TreeParent o) { + return name.compareTo(o.name); + } + + @Override + public int hashCode() { + return name.hashCode(); + } + + @Override + public boolean equals(Object obj) { + return name.equals(obj.toString()); + } + } -- 2.30.2