Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## de.jsystems.framework.tree
Class TreeItem

    java.lang.Object
      de.jsystems.framework.common.Item
          de.jsystems.framework.tree.TreeItem

All Implemented Interfaces:
  MutableTreeNode, Serializable, TreeNode

public class TreeItem
extends Item
implements MutableTreeNode

Basisklasse fuer Items die in einem Baum dargestellt werden sollen. Im Baum wird bei diesen Items nicht der Name eines gesetzten UserObject angezeigt, sondern der Wert des Attributes `Item.getName()` aus dem Item. Deshalb kann ohne den Namen auch kein TreeItem-Objekt erzeugt werden. Ein UserObject kann hier trotzdem gesetzt werden ueber die Methode `setUserObject(Object)`. Ansonsten enthaelt dieses Item keine weiteren Attribute, sndern nur noch verschiedene Methoden um einen Baum aufzubauen. Dazu gehoeren die Methoden zum hinzufuegen oder loeschen eines Items(Knoten) in einem anderen Item(Knoten). Objekte dieser Klasse koennen auch in einem normalen `JTree` angezeigt werden, da sie das Interface `MutableTreeNode` implementieren. Hierbei aber natuerlich unter der Voraussetzung, das Items, die dieser Klasse hinzugefuegt werden sebst wieder vom Typ TreeItem sind. Das wird in den entsprechenden Methoden auch abgefragt.

Version:
  1.0
  Copyright by Jens Homm 2001 - 2003
Author:
  Jens Homm JSYSTEMS
See Also:
  Serialized Form

Field Summary
`protected boolean` | `allowsChildren` Sind Kindobjekte für dieses Item erlaubt?
`protected LinkedList` | `children` Liste aller Kindobjekte zu diesem Item oder null, wenn keine Kindobjekte erlaubt sind.
`protected TreeItem` | `parent` Elternobjekt für dieses Item oder null, wenn es kein Elternobjekt gibt.
`protected Object` | `userObject` UserObject für dieses Item

Fields inherited from class de.jsystems.framework.common.Item
`DISABLE, DISABLE_MUSSFELD, INVISIBLE, INVISIBLE_MUSSFELD, MUSSFELD, STANDARD`

Constructor Summary
`TreeItem(String name)` Erzeugt ein neues TreeItem-Objekt.
`TreeItem(String name, boolean allowsChildren)` Erzeugt ein neues TreeItem-Objekt.
`TreeItem(String name, Object userObject)` Erzeugt ein neues TreeItem-Objekt.
`TreeItem(String name, Object userObject, boolean allowsChildren)` Erzeugt ein neues TreeItem-Objekt.
`TreeItem(String name, Object userObject, boolean allowsChildren, TreeItem parent)` Erzeugt ein neues TreeItem-Objekt.
`TreeItem(String name, String itemId)` Erzeugt ein neues TreeItem.

Method Summary
`Enumeration` | `children()` Gibt eine Enumeration mit allen Einträgen diesen Items zurück.
`boolean` | `containsRekurChild(TreeNode node)` Durchläuft alle Elemente dieses Items und prüft, ob irgendein Element den übergebenen Knoten enthält.
`boolean` | `getAllowsChildren()` Gibt true zurück, wenn dieses Item weitere Einträge erlaubt.
`TreeNode` | `getChildAt(int index)` Gibt das Element am uebergebenen Index zurück.
`int` | `getChildCount()` Gibt die Anzahl enthaltener Elemente in diesem Item zurück.
`int` | `getIndex(TreeNode node)` Gibt den Index des übergebenen Elements zurück.
`TreeNode` | `getParent()` Gibt das ELternobjekt für dieses Item zurück.
`TreeNode` | `getRoot()` Gibt den Rootknoten zu diesem Item zurück.
`Object` | `getUserObject()` Gibt das UserObjekt fuer dieses Item zurück.
`void` | `insert(MutableTreeNode child, int index)` Setzt einen neuen Eintrag für dieses Item.
`boolean` | `isLeaf()` Gibt true zurück, wenn dieses Item keine weiteren Einträge enthält.
`boolean` | `isNodeAncestor(TreeNode node)` Gibt true zurück, wenn der übergebene Knoten ein Elternobjekt von diesem (oder ein Elternobjekt vom Elternobjekt von diesem TreeItem...)
`boolean` | `isNodeChild(TreeNode node)` Gibt true zurück, wenn der übergebene Knoten ein Element von diesem Item ist.
`boolean` | `isNodeDescendant(TreeNode node)` Gibt true zurück, wenn der übergebene Knoten ein Kindelement von diesem Item ist.
`boolean` | `isNodeRelated(TreeNode node)` Gibt true zurück, wenn der übergebene Knoten sich im selben Baum befindet wie dieses Item.
`boolean` | `isRoot()` Gibt true zurück, wenn es sich bei diesem Item um den Root-Knoten handelt.
`void` | `remove(int index)` Löscht den Eintrag aus dem Baum am uebergebenen Index.
`void` | `remove(MutableTreeNode node)` Loescht das uebergebene Item aus diesem Knoten.
`void` | `removeFromParent()` Löscht dieses Item aus seinem Elternknoten.
`void` | `setParent(MutableTreeNode parent)` Setzt den Elternknoten für dieses Item.
`void` | `setUserObject(Object userObject)` Setzt das UserObjekt fuer dieses Item.
`String` | `toString()` Gibt den Namen des Items zurück.

Methods inherited from class de.jsystems.framework.common.Item
`deepCopy, equals, getItemID, getName, isAttributeEditable, isAttributeMussfeld, isAttributeVisible, registerAttribute, setName`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### userObject

    protected Object userObject

  UserObject für dieses Item

### allowsChildren

    protected boolean allowsChildren

  Sind Kindobjekte für dieses Item erlaubt?

### parent

    protected TreeItem parent

  Elternobjekt für dieses Item oder null, wenn es kein Elternobjekt gibt.

### children

    protected LinkedList children

  Liste aller Kindobjekte zu diesem Item oder null, wenn keine Kindobjekte erlaubt sind.

Constructor Detail

### TreeItem

    public TreeItem(String name)

  Erzeugt ein neues TreeItem-Objekt. Dieses hat den uebergebenen Namen. Kindknoten sind fuer diesen Knoten erlaubt. Der Knoten hat noch keinen Elternknoten. Dieser kann durch die Methode `setParent(MutableTreeNode)` gesetzt werden.

  Der Name darf nicht NULL oder leer sein.

Parameters:
  `name` - Der Name fuer den Knoten.

### TreeItem

    public TreeItem(String name,
                    boolean allowsChildren)

  Erzeugt ein neues TreeItem-Objekt. Dieses hat den uebergebenen Namen. Ob Kindknoten fuer diesen Knoten erlaubt sind wird durch den Wert des Parameters `allowsChildren` festgelegt. Wenn er den Wert `true` hat, sind Kindknoten erlaubt, ansonsten nicht. Der Knoten hat noch keinen Elternknoten. Dieser kann durch die Methode `setParent(MutableTreeNode)` gesetzt werden.

  Der Name darf nicht NULL oder leer sein.

Parameters:
  `name` - Der Name fuer den Knoten.
  `allowsChildren` - Legt fest, ob Kindknoten fuer diesen Knoten erlaubt sind oder nicht.

### TreeItem

    public TreeItem(String name,
                    Object userObject)

  Erzeugt ein neues TreeItem-Objekt. Dieses hat den uebergebenen Namen. Kindknoten sind fuer diesen Knoten erlaubt. Hier wird auch schon gleich das UserObject fuer den Knoten uebergeben. Dieses kann von einem beliebigen Typ sein. Der Knoten hat noch keinen Elternknoten. Dieser kann durch die Methode `setParent(MutableTreeNode)` gesetzt werden.

  Der Name darf nicht NULL oder leer sein.

Parameters:
  `name` - Der Name fuer den Knoten.
  `userObject` - Das von diesem Knoten verwaltete UserObject.

### TreeItem

    public TreeItem(String name,
                    Object userObject,
                    boolean allowsChildren)

  Erzeugt ein neues TreeItem-Objekt. Dieses hat den uebergebenen Namen. Ob Kindknoten fuer diesen Knoten erlaubt sind wird durch den Wert des Parameters `allowsChildren` festgelegt. Wenn er den Wert `true` hat, sind Kindknoten erlaubt, ansonsten nicht. Zusaetzlich wird auch schon gleich das UserObject fuer den Knoten uebergeben. Dieses kann von einem beliebigen Typ sein. Der Knoten hat noch keinen Elternknoten. Dieser kann durch die Methode `setParent(MutableTreeNode)` gesetzt werden.

  Der Name darf nicht NULL oder leer sein.

Parameters:
  `name` - Der Name fuer den Knoten.
  `userObject` - Das von diesem Knoten verwaltete UserObject.
  `allowsChildren` - Legt fest, ob Kindknoten fuer diesen Knoten erlaubt sind oder nicht.

### TreeItem

    public TreeItem(String name,
                    Object userObject,
                    boolean allowsChildren,
                    TreeItem parent)

  Erzeugt ein neues TreeItem-Objekt. Dieses hat den uebergebenen Namen. Ob Kindknoten fuer diesen Knoten erlaubt sind wird durch den Wert des Parameters `allowsChildren` festgelegt. Wenn er den Wert `true` hat, sind Kindknoten erlaubt, ansonsten nicht. Zusaetzlich wird auch schon gleich das UserObject fuer den Knoten uebergeben. Dieses kann von einem beliebigen Typ sein. Der Knoten bekommt hier gleich seinen Elternknoten uebergeben. Damit befindet sich dieser Knoten in der Hirarchie des Baumes unterhalb des uebergebenen Elternknotens. Fuer den Knoten darf aber auch NULL uebergeben werden. Dann gibt es keinen Elternknoten. Dieser kann dann durch die Methode `setParent(MutableTreeNode)` gesetzt werden.

  Der Name darf nicht NULL oder leer sein.

Parameters:
  `name` - Der Name fuer den Knoten.
  `userObject` - Das von diesem Knoten verwaltete UserObject.
  `allowsChildren` - Legt fest, ob Kindknoten fuer diesen Knoten erlaubt sind oder nicht.
  `parent` - Der Elternknoten fuer diesen Knoten.

### TreeItem

    public TreeItem(String name,
                    String itemId)

  Erzeugt ein neues TreeItem. Dieses hat den uebergebenen Namen. Der Aufrufer muss dafuer sorgen, das die uebergebene ID eindeutig ist. Ansonsten kann es zu Problemen bei der Verwaltung der Items im Model kommen. Fuer dieses Item sind Kindknoten erlaubt. Der Knoten hat noch keinen Elternknoten. Dieser kann durch die Methode `setParent(MutableTreeNode)` gesetzt werden.

  Werder der uebergebene Name noch die ID duerfen NULL oder leer sein.

Parameters:
  `itemId` - Eine eindeutige ID fuer das Item.
  `name` - Der Name fuer den Knoten.

Method Detail

### isLeaf

    public boolean isLeaf()

  Gibt true zurück, wenn dieses Item keine weiteren Einträge enthält.

  Specified by:
    `isLeaf` in interface `TreeNode`
  Returns:
    true, wenn keine weiteren Einträge in diesem Item vorhanden sind, ansonsten false.

### getChildAt

    public TreeNode getChildAt(int index)

  Gibt das Element am uebergebenen Index zurück. Wenn das Item keine Einträge hat, wird NULL zurückgegeben. Wenn der übergebene Index kleiner als 0 oder größer als die Anzahl vorhandener Einträge ist, wird eine `ArrayIndexOutOfBoundsException` ausgelöst. Diese Methode geht nicht rekursiv durch alle Objekte. Es werden nur die Objekte der ersten Ebene beruecksichtigt. Wenn also Kindknoten dieses Knotens selbst wiederum Kindknoten haben, so werden diese nicht beruecksichtigt.

  Specified by:
    `getChildAt` in interface `TreeNode`
  Parameters:
    `index` - Der Index des gesuchten Elements.
  Returns:
    Das mit dem Index spezifizierte Element oder null.
  Throws:
    `ArrayIndexOutOfBoundsException,` - wenn der uebergebene Index kleiner als 0 oder größer als die Anzahl enthaltener Kindelemente ist.

### getChildCount

    public int getChildCount()

  Gibt die Anzahl enthaltener Elemente in diesem Item zurück. Diese Methode geht nicht rekursiv durch alle Objekte. Es werden nur die Objekte der ersten Ebene beruecksichtigt. Wenn also Kindknoten dieses Knotens selbst wiederum Kindknoten haben, so werden diese nicht beruecksichtigt.

  Specified by:
    `getChildCount` in interface `TreeNode`
  Returns:
    Die Anzahl Kindknoten in diesem Knoten.

### children

    public Enumeration children()

  Gibt eine Enumeration mit allen Einträgen diesen Items zurück. Falls dieser Knoten keine Kinder hat wird eine leere Enumeration zurückgegeben. Die Methode geht nicht rekursiv durch alle Objekte. Es werden nur die Kindknoten der ersten Ebene in der Enumeration zurueckgegeben.

  Specified by:
    `children` in interface `TreeNode`
  Returns:
    Eine Enumeration ueber alle Kinder dieses Knotens.

### getParent

    public TreeNode getParent()

  Gibt das ELternobjekt für dieses Item zurück. Wenn es kein Elternobjekt gibt, wird NULL zurückgegeben.

  Specified by:
    `getParent` in interface `TreeNode`
  Returns:
    Das Elternobjekt zu diesem Knoten.

### getIndex

    public int getIndex(TreeNode node)

  Gibt den Index des übergebenen Elements zurück. Wenn es das Element in diesem Item nicht gibt, wird -1 zurückgegeben. Dabei geht diese Methode nicht rekursiv durch alle Objekte. Es werden nur die Kindknoten der ersten Ebene beruecksichtigt.

  Specified by:
    `getIndex` in interface `TreeNode`
  Parameters:
    `node` - Der Knoten dessen Index in diesem Knoten ermittelt werden soll.
  Returns:
    Der Index des uebergebenen Knotens oder -1, wenn es diesen Knoten nicht als Kindknoten in diesem Knoten gibt.

### getAllowsChildren

    public boolean getAllowsChildren()

  Gibt true zurück, wenn dieses Item weitere Einträge erlaubt.

  Specified by:
    `getAllowsChildren` in interface `TreeNode`
  Returns:
    true, wenn der Knoten selbst weitere Eintraege haben kann, ansonsten false.

### setUserObject

    public void setUserObject(Object userObject)

  Setzt das UserObjekt fuer dieses Item. Dabei kann es sich um ein beliebiges Objekt handeln.

  Specified by:
    `setUserObject` in interface `MutableTreeNode`
  Parameters:
    `userObject` - Das UserObject fuer dieses Item.

### getUserObject

    public Object getUserObject()

  Gibt das UserObjekt fuer dieses Item zurück.

  Returns:
    Das UserObject, das in diesem Item hinterlegt wurde.

### insert

    public void insert(MutableTreeNode child,
                       int index)

  Setzt einen neuen Eintrag für dieses Item. Dabei wird dieser Eintrag aus dem alten Parent-Objekt gelöscht, falls es eines gegeben hat. Im übergebenen Eintrag wird der Parent auf `this` gesetzt. Wenn der übergebene Index größer ist als die bisherige Größe der Liste für die Childrenobjekte, wird der neue Eintrag am Ende eingefügt. Wenn der Index kleiner als 0 ist, wird er am Anfang eingefügt. Der übergebene Knoten muß vom Typ TreeItem sein. Der uebergebene Knoten darf kein Elternknoten dieses Knotens sein.

  Specified by:
    `insert` in interface `MutableTreeNode`
  Parameters:
    `child` - Der Knoten, der diesem Knoten als Kindknoten hinzugefuegt werden soll.
    `index` - Der Index, an dem der neue Eintrag erscheinen soll. Wenn der Index kleiner als 0 oder größer als die bisherige Anzahl an Einträgen ist, wird er entweder ganz am Anfang oder ganz am Ende eingefügt.
  Throws:
    `IllegalArgumentException` - wenn der übergebene Eintrag
    - NULL
    - ein übergeordnetes TreeItem(parent,...) oder
    - keine Instanz von `TreeItem` ist.
    `IllegalStateException` - wenn dieses Item keine Einträge erlaubt.
  See Also:
    `isNodeDescendant(TreeNode)`

### setParent

    public void setParent(MutableTreeNode parent)

  Setzt den Elternknoten für dieses Item. Der Elternknoten muß vom Typ `TreeItem` sein und darf nicht das Objekt selbst(this) oder eines seiner Kindobjekte sein, da es sonst zu Kreisreferenzen kommt. Das wird hier vor dem setzen abgeprüft. Dabei werden die Kindelemente rekursiv durchsucht. Wenn NULL übergeben wird (der Parent also gelöscht wird), findet keine Prüfungen statt, da das immer erlaubt ist.

  Specified by:
    `setParent` in interface `MutableTreeNode`
  Parameters:
    `parent` - Das neue Parentobjekt für dieses Item.

### remove

    public void remove(int index)

  Löscht den Eintrag aus dem Baum am uebergebenen Index. Wenn der Index kleiner 0 oder groeßer als die Anzahl vorhandener Kindknoten ist, wird eine `ArrayIndexOutOfBoundsException` ausgeloest. Die Methode geht nicht rekursiv durch die Objekte. Der uebergebene Index bezieht sich nur auf Kindknoten der ersten Ebene. Wenn der Knoten ueberhaupt keine Kindknoten enthaelt passiert nichts.

  Specified by:
    `remove` in interface `MutableTreeNode`
  Parameters:
    `index` - Der Index des zu loeschenden Knotens.

### remove

    public void remove(MutableTreeNode node)

  Loescht das uebergebene Item aus diesem Knoten. Der uebergebene Knoten muss vom Typ TreeItem sein und darf nciht NULL sein. Und er muss als Kindknoten in diesem Knoten existieren. Andernfalls wird eine `IllegalArgumentException` ausgeloest.

  Specified by:
    `remove` in interface `MutableTreeNode`
  Parameters:
    `node` - Der aus diesem Knoten zu loeschende Kindknoten.

### removeFromParent

    public void removeFromParent()

  Löscht dieses Item aus seinem Elternknoten. Falls dieser Knoten aber der Root-Knoten ist(=kein Parentobjekt vorhanden), passiert nichts.

  Specified by:
    `removeFromParent` in interface `MutableTreeNode`

### isNodeAncestor

    public boolean isNodeAncestor(TreeNode node)

  Gibt true zurück, wenn der übergebene Knoten ein Elternobjekt von diesem (oder ein Elternobjekt vom Elternobjekt von diesem TreeItem...) TreeItem ist. Der uebergebene Knoten muss vom Typ TreeItem sein.

  Parameters:
    `node` - Knoten, der geprüft werden soll.
  Returns:
    true, wenn dieser Knoten ein Kindobjekt des übergebenen Knoten ist.

### isNodeDescendant

    public boolean isNodeDescendant(TreeNode node)

  Gibt true zurück, wenn der übergebene Knoten ein Kindelement von diesem Item ist. Der uebergebene Knoten muss vom Typ TreeItem sein.

  Parameters:
    `node` - Knoten, der getestet werden soll.
  Returns:
    true wenn der übergebene Knoten ein Kindelement von diesem Knoten ist.

### isNodeRelated

    public boolean isNodeRelated(TreeNode node)

  Gibt true zurück, wenn der übergebene Knoten sich im selben Baum befindet wie dieses Item. Dafür werden die Root-Knoten von `this` und vom übergebenen Knoten verglichen. Der uebergebene Knoten muss vom Typ TreeItem sein.

  Returns:
    true, wenn `node` im gleichen Baum wie dieses Item ist. Ansonsten, oder wenn NULL übergeben wurde, wird false zurückgegeben.

### isNodeChild

    public boolean isNodeChild(TreeNode node)

  Gibt true zurück, wenn der übergebene Knoten ein Element von diesem Item ist. Es wird nicht rekursiv geprüft. Der uebergebene Knoten muss vom Typ TreeItem sein.

  Returns:
    true, wenn `node` ein Element von diesem Item ist. Ansonsten, oder wenn NULL übergeben wurde, wird false zurückgegeben.

### getRoot

    public TreeNode getRoot()

  Gibt den Rootknoten zu diesem Item zurück. Dafür wird solange das Parentobjekt ausgelesen, bis ein Knoten ohne Parentobjekt gefunden wurde. Dieses ist das Root-Objekt.

  Returns:
    Der Root-Knoten von diesem Knoten.

### isRoot

    public boolean isRoot()

  Gibt true zurück, wenn es sich bei diesem Item um den Root-Knoten handelt. Das wird daran festgemacht, ob dieses Item ein Parentobjekt hat oder nicht.

  Returns:
    true wenn dieses Item der Root-Knoten ist.

### containsRekurChild

    public boolean containsRekurChild(TreeNode node)

  Durchläuft alle Elemente dieses Items und prüft, ob irgendein Element den übergebenen Knoten enthält. Das geschieht rekursiv, bis alle Baumelemente geprüft wurden. Der uebergebene Knoten muss vom Typ TreeItem sein.

  Parameters:
    `node` - Der zu pruefende Knoten.
  Returns:
    true, wenn der uebergebene Knoten ein an diesem Knoten haengender Knoten ist, ansonsten false.

### toString

    public String toString()

  Gibt den Namen des Items zurück.

  Overrides:
    `toString` in class `Item`
  Returns:
    Der Name des Items.

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD