de.guibuilder.framework
Class GuiContainer

java.lang.Object
  |
  +--de.guibuilder.framework.GuiMember
        |
        +--de.guibuilder.framework.GuiContainer
All Implemented Interfaces:
MemberAble, java.io.Serializable
Direct Known Subclasses:
GuiPanel, GuiSplit

public abstract class GuiContainer
extends GuiMember

Diese Klasse ist von allen Komponenten zu erweitern, die als Container für Daten haltende Komponenten fungieren sollen: Panel, Group, Tab, Split.

Zusammen mit GuiMember und GuiElement bildet diese Klasse ein Compositum-Pattern.

Die Hauptfenster (Form, Dialog, Applet, InternalFrame) haben alle eine Referenz auf ein Objekt der Klasse GuiRootPane.
GuiRootPane hat genau ein WurzelPanel, dem alle weiteren Komponenten zugeordnet sind.

Typischer Code:
GuiPanel root = myForm.getRootPane().getMainPanel();
Die Container halten zwei Hashtables von Komponenten, die durch die Methode addMember bzw. addAction aufgebaut werden. Daher müssen die Namen der Komponenten je Container eindeutig sein.
Zusätzlich wird eine ArrayList mit den Namen der Komponenten in der Reihenfolge geführt, in der sie dem Container hinzugefügt wurden (siehe getMemberNames).

Wichtig zum Verständnis ist, daß ein Container zwei Rollen einnehmen kann:
1. Layout-Container
2. Parent-Container
Welche Rolle ein Container einnimmt liefert die Methode isParentContainer.
Layout-Container dienen nur der Gliederung im GridBagLayout; sie haben keine Members!
Parent-Container haben neben ihrer Layout-Funktion zusätzlich eine Liste von Members.

Die Schachtelung der Parent-Container wird von der Factory nach folgenden Regeln aufgebaut:

Mit den Methoden "getValue" und "setValue" kann der Inhalt einer Komponente gelesen oder gesetzt werden.
Der Name der Komponente kann hierbei in Punkt-Notation erfolgen, bei der die Schachtelung der Container abgebildet wird:
strasse = frm.getValue("tabAdresse.panelRechnung.strasse");

Die Komponenten selbst implementieren die Methoden "getValue" und "setValue" um auf ihren Inhalt zuzugreifen.

Per default ist den Container das GridBagLayout zugeordnet. Mit dem Attribut layout= kann auch ein anderer LayoutManager gesetzt werden.

See Also:
GuiMember, GuiElement, GuiPanel, GuiRootPane.getMainPanel(), Serialized Form

Field Summary
static int BORDER
           
static int FLOW
           
static int GRID
           
static int GRIDBAG
           
static int NULL
           
static int SPLIT
           
 
Fields inherited from class de.guibuilder.framework.GuiMember
GUI_ACTION, GUI_COMPONENT, GUI_CONTAINER, GUI_TABLE, GUI_TREE, GUI_TYPE_NAMES, hasMouseListener, OID
 
Method Summary
 void add(java.awt.Component comp, java.lang.Object constraints)
          Wird von der Factory aufgerufen, wenn die Komponente in einer ScrollBox steckt (wie z.B. bei Table, Tree, Memo, List).
 void add(GuiMember member, java.lang.Object constraints)
          Wird von GuiSplit überschrieben.
 void addAction(GuiAction comp)
          Fügt eine anklickbare Komponente hinzu (MenuItem, Tool, Button).
 void addMember(GuiMember comp)
          Fügt dem Container eine neue Daten haltende Komponente hinzu.
 void enableAllActions(boolean b)
          En- oder disabled alle Menüitems und Buttons
 GuiAction getAction(java.lang.String name)
          Liefert eine Aktion unter dem angegebenen Namen.
 java.util.Hashtable getAllModifiedValues()
          Liefert eine Hashtable mit den Namen und den Inhalten aller Komponenten, die vom Benutzer modifiziert wurden.
 java.util.Hashtable getAllValues()
          Liefert eine Hashtable mit den Namen und den Inhalten aller Komponenten.
 java.util.Hashtable getAllValues(boolean modified)
          Liefert die Werte des Containers und seiner Kinder.
 electric.xml.Document getAllValuesXml()
          Liefert den Inhalt dieses Containers als XML-Dokument.
 GuiContainer getContainer(java.lang.String name)
          Liefert einen ChildContainer unter Angabe seines Namens (auch mit Punkt-Notation).
 GuiComponent getGuiComponent(java.lang.String name)
          Liefert eine Komponente unter dem angegebenen Namen.
 GuiTable getGuiTable(java.lang.String name)
          Liefert eine Tabelle unter Angabe ihres Namens.
 GuiTree getGuiTree(java.lang.String name)
          Liefert einen Baum unter Angabe seines Namens (auch mit Punkt-Notation).
 int getGuiType()
          Liefert GUI_CONTAINER
abstract  int getLayoutManager()
           
 GuiMember getMember(java.lang.String name)
          Liefert einen Member unter dem angegebenen Namen.
 java.util.ArrayList getMemberNames()
          Liefert die Namen der Komponenten dieses Container in der Reihenfolge ihrer Anordnung.
 java.util.Hashtable getMembers()
          Liefert die Hashtable mit allen Komponenten dieses Panel.
 void getModelValues(GuiModel model)
          Füllt das angegebene Model mit den Inhalten der Oberfläche.
 java.util.Vector getSearchables(java.util.Vector ret)
          Liefert alle Komponenten, die in der Oberfläche als Suchfelder gekennzeichnet sind (search="y"), und die vom Anwender auch ausgefüllt wurden.
 java.lang.Object getValue(java.lang.String name)
          Liefert den Wert eine Komponente unter Angabe ihres Namens (auch mit Punkt-Notation).
 java.util.Vector getValues(java.util.List list)
          Liefert die Liste mit den Werten von den Komponenten, deren Namen in einer weiteren Liste übergeben wurden.
 void getValues(java.util.Map vals)
          Liefert die Werte einer Menge von Komponente unter Angabe ihrer Namen.
 boolean isParentContainer()
          Liefert "true" wenn dieses Panel zur Schachtelung der Componenten verwendet wird bzw.
 boolean removeMember(GuiMember member)
          Entfernt eine Komponente aus dem Container.
 void reset()
          Setzt den Feldinhalt aller Komponenten dieser Panel auf leer (null).
 void setAllValues(java.util.Hashtable hash)
          Es wird eine Hashtable übergeben, die die Namen von Komponenten und deren zu setzenden Inhalt enthält.
 void setAllValuesXml(electric.xml.Document doc)
          Setzt den Inhalt dieses Container mit einem XmlDocument.
 void setAllValuesXml(electric.xml.Element node)
          Setzt den Inhalte der Komponenten dieses Panel mit den Werten des übergebenen XML-Knotens.
 void setEnabled(java.util.HashSet comps, boolean b)
          Aktiviert oder deaktiviert die übergebene Menge von Members (GuiElement).
 void setFieldValues(java.lang.Object obj)
          Setzt mehrere Komponenten dieses Panels auf den Werte der (public) Attribute des übergebenen Objects.
abstract  void setLayoutManager(int lm)
           
 void setModelValues(GuiModel model)
          Füllt die Oberfläche mit den Daten aus dem angegebenen Model.
 void setValue(java.lang.String name, java.lang.Object value)
          Setzt den Wert eine Komponente unter Angabe ihres Namens (auch mit Punkt-Notation).
 void setValues(java.util.List vals)
          Setzt den Wert aller Daten haltenden Componenten dieses Panels.
 void setValues(java.util.Map vals)
          Setzt den Wert von mehreren Daten haltenden Componenten dieses Panels.
 void updateIfNull(electric.xml.Element node)
          Es werden nur die Felder upgedatet, wenn sie leer sind.
 void verify()
          Ruft den InputVerifier der Componenten von diesem Container auf.
 
Methods inherited from class de.guibuilder.framework.GuiMember
click, d_click, getBackground, getConstraints, getControler, getElementName, getFont, getForeground, getFullName, getGuiParent, getGuiTypeName, getJComponent, getLabel, getMaximumSize, getMinimumSize, getMsgMouseOver, getName, getOid, getParentNames, getParentTab, getPreferredSize, getRef, getRootPane, getTag, getToolTipText, getUserObject, getXValue, isVisible, setBackground, setConstraints, setControler, setFont, setForeground, setGuiParent, setLabel, setMaximumSize, setMinimumSize, setMsgMouseMoved, setMsgMouseOver, setName, setOid, setPopupMenu, setPreferredSize, setRef, setToolTipText, setUserObject, setVisible
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NULL

public static final int NULL
See Also:
Constant Field Values

GRIDBAG

public static final int GRIDBAG
See Also:
Constant Field Values

GRID

public static final int GRID
See Also:
Constant Field Values

FLOW

public static final int FLOW
See Also:
Constant Field Values

BORDER

public static final int BORDER
See Also:
Constant Field Values

SPLIT

public static final int SPLIT
See Also:
Constant Field Values
Method Detail

getGuiType

public int getGuiType()
Liefert GUI_CONTAINER

Specified by:
getGuiType in class GuiMember

getLayoutManager

public abstract int getLayoutManager()
See Also:
NULL

setLayoutManager

public abstract void setLayoutManager(int lm)
See Also:
NULL

add

public void add(java.awt.Component comp,
                java.lang.Object constraints)
Wird von der Factory aufgerufen, wenn die Komponente in einer ScrollBox steckt (wie z.B. bei Table, Tree, Memo, List).

From awt.Container


add

public void add(GuiMember member,
                java.lang.Object constraints)
Wird von GuiSplit überschrieben.


addMember

public final void addMember(GuiMember comp)
Fügt dem Container eine neue Daten haltende Komponente hinzu.

Diese Methode unterscheidet zwischen der Spezifikations- und der Laufzeit-Umgebung GuiUtil.isAPI().
Wenn Laufzeitumgebung gesetzt ist, dürfen die Namen der Komponente nicht leer sein und es dürfen auch keine doppelten Namen vergeben werden.

Throws:
java.lang.IllegalArgumentException - wenn Name leer oder doppelt.

removeMember

public final boolean removeMember(GuiMember member)
Entfernt eine Komponente aus dem Container.

Wird auch beim Umbenennen von Members eingesetzt.

Returns:
true, wenn erfolgreich gelöscht
See Also:
GuiMember.setName(java.lang.String)

getMember

public final GuiMember getMember(java.lang.String name)
Liefert einen Member unter dem angegebenen Namen. Wirft eine IllegalArgumentException, wenn Member fehlt.


getGuiComponent

public final GuiComponent getGuiComponent(java.lang.String name)
Liefert eine Komponente unter dem angegebenen Namen. Wirft eine IllegalArgumentException, wenn Member fehlt oder wenn Member keine Instanz von GuiComponent (weil Container).


getGuiTable

public final GuiTable getGuiTable(java.lang.String name)
Liefert eine Tabelle unter Angabe ihres Namens.

Wirft eine IllegalArgumentException, wenn Member nicht GuiTable.


getContainer

public final GuiContainer getContainer(java.lang.String name)
Liefert einen ChildContainer unter Angabe seines Namens (auch mit Punkt-Notation). Wirft eine IllegalArgumentException, wenn Member nicht GuiContainer.


getGuiTree

public final GuiTree getGuiTree(java.lang.String name)
Liefert einen Baum unter Angabe seines Namens (auch mit Punkt-Notation). Wirft eine IllegalArgumentException, wenn Member nicht GuiTree.


getMembers

public final java.util.Hashtable getMembers()
Liefert die Hashtable mit allen Komponenten dieses Panel.

Die Hashtable kann Komponenten halten, die vom Typ GuiComponent, GuiTable oder GuiPanel sind.


getMemberNames

public final java.util.ArrayList getMemberNames()
Liefert die Namen der Komponenten dieses Container in der Reihenfolge ihrer Anordnung.


addAction

public final void addAction(GuiAction comp)
Fügt eine anklickbare Komponente hinzu (MenuItem, Tool, Button).
Die Komponente muß je Container einen eindeutigen Namen haben.

See Also:
getAction(java.lang.String)

getAction

public final GuiAction getAction(java.lang.String name)
Liefert eine Aktion unter dem angegebenen Namen. Wirft eine IllegalArgumentException, wenn Item oder Button fehlt.


enableAllActions

public final void enableAllActions(boolean b)
En- oder disabled alle Menüitems und Buttons


setEnabled

public final void setEnabled(java.util.HashSet comps,
                             boolean b)
Aktiviert oder deaktiviert die übergebene Menge von Members (GuiElement). Die nicht aufgeführten Members werden invers hierzu behandelt.


getSearchables

public final java.util.Vector getSearchables(java.util.Vector ret)
Liefert alle Komponenten, die in der Oberfläche als Suchfelder gekennzeichnet sind (search="y"), und die vom Anwender auch ausgefüllt wurden. Dient vor allem dazu, eine Datenbankabfrage zu formulieren.

Der Vector enthält nur Komponenten, die bei denen isSearch() true ergibt.

Parameters:
ret - Ein Vector, an den die Einträge angehängt werden oder null.
Returns:
Einen Vector von GuiMembers
See Also:
GuiComponent#isSearch

verify

public final void verify()
                  throws java.lang.IllegalStateException
Ruft den InputVerifier der Componenten von diesem Container auf. ChildContainer werden mit überprüft.

Overrides:
verify in class GuiMember
Throws:
IllegalStateException, - wenn Eingaben unzulässig.
java.lang.IllegalStateException

reset

public void reset()
Setzt den Feldinhalt aller Komponenten dieser Panel auf leer (null).

Wird von GuiTab überschrieben; daher nicht final.

Overrides:
reset in class GuiMember

getValue

public final java.lang.Object getValue(java.lang.String name)
Liefert den Wert eine 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".


setValue

public final void setValue(java.lang.String name,
                           java.lang.Object value)
Setzt den Wert eine Komponente unter Angabe ihres Namens (auch mit Punkt-Notation).

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

getValues

public final void getValues(java.util.Map vals)
Liefert die Werte einer Menge von Komponente unter Angabe ihrer Namen.

Parameters:
vals - Eine Map, die als Keys die Namen der Komponenten enthält; die Map wird mit den Werten der Komponenten gefüllt.

getValues

public final java.util.Vector getValues(java.util.List list)
Liefert die Liste mit den Werten von den Komponenten, deren Namen in einer weiteren Liste übergeben wurden.

Parameters:
list - Eine Liste mit den Namen von Komponenten die in diesem Panel enthalten sind.
Returns:
Ein Vector mit den Werten dieser Komponenten.

getAllModifiedValues

public final java.util.Hashtable getAllModifiedValues()
Liefert eine Hashtable mit den Namen und den Inhalten aller Komponenten, die vom Benutzer modifiziert wurden.
ChildPanels werden rekursiv unter ihrem Namen und mit ihrer Hashtable mit geliefert.

Returns:
Eine Hashtable oder null, wenn keine Komponenten geändert wurde.
See Also:
setAllValues(java.util.Hashtable), GuiComponent.isModified()

getAllValues

public final java.util.Hashtable getAllValues()
Liefert eine Hashtable mit den Namen und den Inhalten aller Komponenten.
ChildPanels werden rekursiv unter ihrem Namen und mit ihrer Hashtable mit geliefert.

Returns:
Eine Hashtable oder null, wenn keine Komponenten vorhanden.
See Also:
setAllValues(java.util.Hashtable)

getAllValues

public final java.util.Hashtable getAllValues(boolean modified)
Liefert die Werte des Containers und seiner Kinder. PENDING: GuiTree liefert nix!

Parameters:
modified - Wenn "true", werden nur die geänderten Komponenten geliefert; ansonsten alle.

setAllValues

public final void setAllValues(java.util.Hashtable hash)
Es wird eine Hashtable übergeben, die die Namen von Komponenten und deren zu setzenden Inhalt enthält.

See Also:
getAllValues()

setValues

public final void setValues(java.util.List vals)
Setzt den Wert aller Daten haltenden Componenten dieses Panels. Es wird eine Liste von Daten übergeben, dessen Einträge der Reihe nach den Komponenten zugewiesen wird.
Die Liste darf auch kleiner oder größer als die Menge der Komponenten sein.

See Also:
GuiComponent.setValue(java.lang.Object)

setValues

public final void setValues(java.util.Map vals)
Setzt den Wert von mehreren Daten haltenden Componenten dieses Panels.
Es wird ein Name/Value-Paar von Namen von Komponenten und deren Daten übergeben.

Parameters:
vals - Map (TreeMap, HashMap, Hashtable, ...) keys als String und values als Object

setFieldValues

public final void setFieldValues(java.lang.Object obj)
Setzt mehrere Komponenten dieses Panels auf den Werte der (public) Attribute des übergebenen Objects.
Auch die Klasse des Objektes muß public sein.
Hierbei müssen die Namen der Attributes der Klassen den Namen der Oberflächen-Komponenten entsprechen. Auf Groß- und Kleinschreibung ist zu achten.
Auf alle Attribute wird die Methode toString() angewendet. Voraussetzung ist, daß die angegebenen Komponenten einen String als Wert akzeptieren; also z.B. keine Tabellen.

Parameters:
obj - Ein Object dessen Attributnamen mit den Namen der Komponenten übereinstimmen.

getAllValuesXml

public final electric.xml.Document getAllValuesXml()
Liefert den Inhalt dieses Containers als XML-Dokument. Ggf. vorhandene ChildContainer werden mitgeliefert. Es werden nur die Feldinhalte geliefert der nicht null sind.
Das XML-Dokument entspricht "guivalues.dtd".

Returns:
Ein XML-Document oder null, wenn kein ParentContainer

setAllValuesXml

public final void setAllValuesXml(electric.xml.Document doc)
Setzt den Inhalt dieses Container mit einem XmlDocument. Ggf. im Dokument enthaltene ChildContainer werden mit versorgt.

Das XML-Dokument muß "guivalues.dtd" entsprechen.


setAllValuesXml

public final void setAllValuesXml(electric.xml.Element node)
Setzt den Inhalte der Komponenten dieses Panel mit den Werten des übergebenen XML-Knotens.

Throws:
java.lang.IllegalArgumentException - wenn ElementName != "Panel"

updateIfNull

public final void updateIfNull(electric.xml.Element node)
Es werden nur die Felder upgedatet, wenn sie leer sind.


setModelValues

public final void setModelValues(GuiModel model)
Füllt die Oberfläche mit den Daten aus dem angegebenen Model.
Zuvor sollte mit reset() die Oberfläche zurückgesetzt werden.


getModelValues

public final void getModelValues(GuiModel model)
Füllt das angegebene Model mit den Inhalten der Oberfläche.


isParentContainer

public final boolean isParentContainer()
Liefert "true" wenn dieses Panel zur Schachtelung der Componenten verwendet wird bzw. "false", wenn es allein dem Layout dient.

Achtung!
Diese Methode liefert immer dann true, wenn dem Container ein Member zugewiesen wurde.
Sie liefert false, wenn addMember nie aufgerufen wurde. Dieses ist folglich auch bei neuen Panels der Fall, denen später noch Members zugewiesen werden sollen!

See Also:
addMember(de.guibuilder.framework.GuiMember)