de.guibuilder.framework
Class GuiTreeNode

java.lang.Object
  |
  +--javax.swing.tree.DefaultMutableTreeNode
        |
        +--de.guibuilder.framework.GuiTreeNode
All Implemented Interfaces:
java.lang.Cloneable, MemberAble, javax.swing.tree.MutableTreeNode, java.io.Serializable, java.awt.datatransfer.Transferable, javax.swing.tree.TreeNode

public final class GuiTreeNode
extends javax.swing.tree.DefaultMutableTreeNode
implements MemberAble, java.io.Serializable, java.awt.datatransfer.Transferable

Implementierung eines Knotens in einer Baum-Komponente.

Dem Knoten kann für das Navigator-Pattern eine relative URL auf eine gültige Gui-Spezifikations zugewiesen werden.
setFileName(java.lang.String)
Dort darf nur ein Child Container spezifiziert werden (also zumeist ein Panel).
GuiFactory.createPanel(java.lang.String, de.guibuilder.framework.GuiWindow)
Die Tree-Komponente hält Referenzen auf alle Panels der Knoten.
Der Knoten selbst hält die jeweiligen Werte zu seinem Panel.
getAllValuesXml()

Wechselt der Benutzer von einem Knoten zum anderen, so werden diese Werte dem Panel jeweils zugewiesen. GuiTree.valueChanged(javax.swing.tree.TreePath)

Die vom Knoten gehaltenen Werte können mit getValue(java.lang.String) und setValue(java.lang.String, java.lang.Object) ausgelesen und geändert werden.

See Also:
Serialized Form

Field Summary
static java.awt.datatransfer.DataFlavor GUI_TREENODE_FLAVOR
           
 
Fields inherited from class javax.swing.tree.DefaultMutableTreeNode
allowsChildren, children, EMPTY_ENUMERATION, parent, userObject
 
Constructor Summary
GuiTreeNode(java.lang.String title)
          Erzeugt einen neuen Ast für einen Baum.
GuiTreeNode(java.lang.String title, java.lang.String name)
          Erzeugt einen neuen Knoten mit einer Beschriftung und einem davon abweichenden Namen.
GuiTreeNode(java.lang.String title, java.lang.String name, java.lang.String element)
          Erzeugt einen neuen Knoten mit einer Beschriftung, einem davon abweichenden Namen und definiert den KnotenTyp (Name eine GuiTreeElements).
 
Method Summary
 void createMandatoryChildNodes()
          Erzeugt die zwingenden ChildNodes.
 electric.xml.Document getAllValuesXml()
          Liefert die vom Knoten gehaltenen Werte aus den Benutzereigaben, die zwischen dem Knoten und seinem Panel hin und hergeschaufelt werden.
 GuiTreeNode getChildByName(java.lang.String name)
          Liefert einen Tochterknoten (sowie Enkel usw.)
 java.lang.Object getControler()
          Rekursive Suche nach einem Controler
 GuiTreeElement getElement()
           
 java.lang.String getElementName()
           
 electric.xml.Element getElementXY()
           
 java.lang.String getFileName()
          Liefert den Dateiname der zu diesem Knoten gehörenden GUI-Spezifikation.
 java.util.Vector getFiles()
           
 GuiTreeNode getGuiParentNode()
          DefaultMutableTreeNode mit cast
 java.lang.String getGuiPath()
          Liefert den Pfad dieses Knotens in Punkt-Notation: "root.myFolder.myNode"
Es wird der Name des Knotens verwendet;
 java.lang.String getIconName()
           
 java.lang.String getMsgNodeClick()
          Rekursive Suche nach einem ActionCommand
 GuiTree getMyTree()
          Liefert die Tree-Komponete, zu dem dieser Knoten gehört.
 java.lang.String getName()
           
 long getOid()
          Liefert die Oid.
 GuiPanel getPanel()
          Liefert die diesem Knoten zugeordnete Oberflächenkomponente.
 java.util.Vector getPossibleChildNodeNames()
          Liefert einen Vector von erzeugbaren ChildNodes.
 java.lang.String getTag()
          Liefert den XML-Element-Tag der Komponente ("Form", "Text", "Panel", ...).
 java.lang.String getTitle()
          Liefert die Beschriftung des Knotens in der Oberfläche.
 java.lang.Object getTransferData(java.awt.datatransfer.DataFlavor flavor)
           
 java.awt.datatransfer.DataFlavor[] getTransferDataFlavors()
           
 java.lang.String getValue(java.lang.String xpath)
          Liefert den Wert einer Komponente unter Angabe ihres Namens (auch mit Punkt-Notation).
 GuiTreeNode guiClone()
          Clont diesen TreeNode z.B. für copy-paste.
 boolean isDataFlavorSupported(java.awt.datatransfer.DataFlavor flavor)
           
 void setAllValuesXml(electric.xml.Document doc)
           
 void setAllValuesXml(electric.xml.Element ele)
          Das Element wird geclont
 void setControler(java.lang.Object o)
           
 void setElementName(java.lang.String name)
          Setzt den Namen des TreeElements
 void setFileName(java.lang.String f)
          Setzt den Dateiname der zu diesem Knoten gehörenden GUI-Spezifikation.
 void setFiles(java.lang.String[] s)
          Setzt die Menge der Gui-Spezifikationen, die für diesen Folder erlaubt sind.
 void setFiles(java.util.Vector v)
          Setzt die Menge der Gui-Spezifikationen, die für diesen Folder erlaubt sind.
 void setIconName(java.lang.String name)
           
 void setMsgNodeClick(java.lang.String s)
          Setzt das ActionCommand, daß bei der Selection eines anderen Knotens geliefert wird.
 void setName(java.lang.String name)
          Die Namen der Schwester-Nodes müssen eindeutig sein, wenn später auf sie gezielt zugegriffen werden soll.
 void setOid(long id)
          Setzt die beliebige Oid.
 void setTitle(java.lang.String title)
          Setzt die Beschriftung des Knotens neu.
 void setTitle(java.lang.String title, int index)
          Setzt die Beschriftung des Nodes an dem angegebenen Index neu.
 void setValue(java.lang.String xpath, java.lang.Object value)
          Setzt den Wert einer Komponente unter Angabe ihres Namens (auch mit Punkt-Notation).
 
Methods inherited from class javax.swing.tree.DefaultMutableTreeNode
add, breadthFirstEnumeration, children, clone, depthFirstEnumeration, getAllowsChildren, getChildAfter, getChildAt, getChildBefore, getChildCount, getDepth, getFirstChild, getFirstLeaf, getIndex, getLastChild, getLastLeaf, getLeafCount, getLevel, getNextLeaf, getNextNode, getNextSibling, getParent, getPath, getPathToRoot, getPreviousLeaf, getPreviousNode, getPreviousSibling, getRoot, getSharedAncestor, getSiblingCount, getUserObject, getUserObjectPath, insert, isLeaf, isNodeAncestor, isNodeChild, isNodeDescendant, isNodeRelated, isNodeSibling, isRoot, pathFromAncestorEnumeration, postorderEnumeration, preorderEnumeration, remove, remove, removeAllChildren, removeFromParent, setAllowsChildren, setParent, setUserObject, toString
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

GUI_TREENODE_FLAVOR

public static final java.awt.datatransfer.DataFlavor GUI_TREENODE_FLAVOR
Constructor Detail

GuiTreeNode

public GuiTreeNode(java.lang.String title)
Erzeugt einen neuen Ast für einen Baum.

Parameters:
title - Beschriftung des Knotens; wird gleichzeitig als Name und ElementName verwendet.

GuiTreeNode

public GuiTreeNode(java.lang.String title,
                   java.lang.String name)
Erzeugt einen neuen Knoten mit einer Beschriftung und einem davon abweichenden Namen.

Parameters:
title - Beschriftung des Knotens
name - Name des Knotens; wird gleichzeitig als Element verwendet.

GuiTreeNode

public GuiTreeNode(java.lang.String title,
                   java.lang.String name,
                   java.lang.String element)
Erzeugt einen neuen Knoten mit einer Beschriftung, einem davon abweichenden Namen und definiert den KnotenTyp (Name eine GuiTreeElements).

Parameters:
title - Beschriftung des Knotens
name - Name des Knotens
element - Name des GuiTreeElements
Method Detail

getTag

public final java.lang.String getTag()
Description copied from interface: MemberAble
Liefert den XML-Element-Tag der Komponente ("Form", "Text", "Panel", ...).

Specified by:
getTag in interface MemberAble

getElementXY

public final electric.xml.Element getElementXY()

getElementName

public final java.lang.String getElementName()

getElement

public final GuiTreeElement getElement()

setElementName

public final void setElementName(java.lang.String name)
Setzt den Namen des TreeElements

See Also:
GuiTreeElement

getIconName

public java.lang.String getIconName()

setIconName

public void setIconName(java.lang.String name)

setControler

public final void setControler(java.lang.Object o)

getControler

public final java.lang.Object getControler()
Rekursive Suche nach einem Controler


setMsgNodeClick

public final void setMsgNodeClick(java.lang.String s)
Setzt das ActionCommand, daß bei der Selection eines anderen Knotens geliefert wird.


getMsgNodeClick

public final java.lang.String getMsgNodeClick()
Rekursive Suche nach einem ActionCommand


createMandatoryChildNodes

public final void createMandatoryChildNodes()
Erzeugt die zwingenden ChildNodes.

Voraussetzungen:


getPossibleChildNodeNames

public java.util.Vector getPossibleChildNodeNames()
Liefert einen Vector von erzeugbaren ChildNodes.

Es werden die ElementNamen weggelassen, die die Eigenschaft typ='n' haben (multi) und zu denen bereits ein ChildNode existiert.


getTransferDataFlavors

public java.awt.datatransfer.DataFlavor[] getTransferDataFlavors()
Specified by:
getTransferDataFlavors in interface java.awt.datatransfer.Transferable

getTransferData

public java.lang.Object getTransferData(java.awt.datatransfer.DataFlavor flavor)
                                 throws java.awt.datatransfer.UnsupportedFlavorException,
                                        java.io.IOException
Specified by:
getTransferData in interface java.awt.datatransfer.Transferable
java.awt.datatransfer.UnsupportedFlavorException
java.io.IOException

isDataFlavorSupported

public boolean isDataFlavorSupported(java.awt.datatransfer.DataFlavor flavor)
Specified by:
isDataFlavorSupported in interface java.awt.datatransfer.Transferable

getTitle

public java.lang.String getTitle()
Liefert die Beschriftung des Knotens in der Oberfläche.


setTitle

public void setTitle(java.lang.String title)
Setzt die Beschriftung des Knotens neu.


setTitle

public void setTitle(java.lang.String title,
                     int index)
Setzt die Beschriftung des Nodes an dem angegebenen Index neu.


getFileName

public java.lang.String getFileName()
Liefert den Dateiname der zu diesem Knoten gehörenden GUI-Spezifikation.


setFileName

public void setFileName(java.lang.String f)
Setzt den Dateiname der zu diesem Knoten gehörenden GUI-Spezifikation.
In der Spezifikation sollte nur ein Panel definiert werden


setFiles

public void setFiles(java.util.Vector v)
Setzt die Menge der Gui-Spezifikationen, die für diesen Folder erlaubt sind. Aus dem Schlüsselwort Items= bei Folder und Node.
Siehe auch die eingebaute Methode "NewNode()".

Ein besser Lösung ist mit den GuiTreeElement und GuiTreeContent zu arbeiten.


setFiles

public void setFiles(java.lang.String[] s)
Setzt die Menge der Gui-Spezifikationen, die für diesen Folder erlaubt sind. Aus dem Schlüsselwort Items= bei Folder und Node.
Siehe auch die eingebaute Methode "NewNode()". Ein besser Lösung ist mit den GuiTreeElement und GuiTreeContent zu arbeiten.


getFiles

public java.util.Vector getFiles()

getPanel

public GuiPanel getPanel()
Liefert die diesem Knoten zugeordnete Oberflächenkomponente.

Ist dem Knoten eine Gui-Spezifikation zugeordnet (setFileName), wird das Panel erzeugt (falls noch nicht geschehen). Panels gleichen Namens werden wiederverwendet.

See Also:
setFileName(java.lang.String)

getAllValuesXml

public electric.xml.Document getAllValuesXml()
Liefert die vom Knoten gehaltenen Werte aus den Benutzereigaben, die zwischen dem Knoten und seinem Panel hin und hergeschaufelt werden.


setAllValuesXml

public void setAllValuesXml(electric.xml.Document doc)

setAllValuesXml

public void setAllValuesXml(electric.xml.Element ele)
Das Element wird geclont


getMyTree

public GuiTree getMyTree()
Liefert die Tree-Komponete, zu dem dieser Knoten gehört.

Ist der Baum des Wurzelknotens.


guiClone

public GuiTreeNode guiClone()
Clont diesen TreeNode z.B. für copy-paste.


getGuiPath

public java.lang.String getGuiPath()
Liefert den Pfad dieses Knotens in Punkt-Notation: "root.myFolder.myNode"
Es wird der Name des Knotens verwendet;

See Also:
getName(), getChildByName(java.lang.String)

getChildByName

public GuiTreeNode getChildByName(java.lang.String name)
Liefert einen Tochterknoten (sowie Enkel usw.) unter Angabe seines Namens oder null wenn nix zu finden.

See Also:
setName(java.lang.String)

getName

public java.lang.String getName()
Specified by:
getName in interface MemberAble
See Also:
setName(java.lang.String)

setName

public void setName(java.lang.String name)
Die Namen der Schwester-Nodes müssen eindeutig sein, wenn später auf sie gezielt zugegriffen werden soll.

Specified by:
setName in interface MemberAble
See Also:
getChildByName(java.lang.String), GuiTree.setSelectedNode(java.lang.String)

setOid

public final void setOid(long id)
Setzt die beliebige Oid.


getOid

public final long getOid()
Liefert die Oid. Wenn -1, dann ist keine Oid gesetzt.


getGuiParentNode

public final GuiTreeNode getGuiParentNode()
DefaultMutableTreeNode mit cast


getValue

public final java.lang.String getValue(java.lang.String xpath)
Liefert den Wert einer Komponente unter Angabe ihres Namens (auch mit Punkt-Notation).

Der Rüchgabewert ist zumeist vom Typ "String"; bei Tabellen ein Vector von Vectoren, bei CheckBoxen ein "Boolean".
PENDING: Liefert immer "String"; ChildContainer (Table, Tree) funktionieren nicht!

Parameters:
xpath - XPath mit dem Namen der Komponente.

setValue

public final void setValue(java.lang.String xpath,
                           java.lang.Object value)
Setzt den Wert einer Komponente unter Angabe ihres Namens (auch mit Punkt-Notation). PENDING: ChildContainer (Table, Tree) funktionieren nicht!

Parameters:
xpath - Name der Komponente in Punktnotation
value - In der Regel kann ein String verwendet werden; Tabellen erwarten einen Vector von Vectoren.