Module: sdw/templates/containerGUI/treeContainerView

Dieses Modul definiert die Klasse TreeContainerView Der ContainerView stelt ein komplexes GUI-Objekt im Sidebarstil dar, welches als Tab in den ViewContainer eingehängt wird. Er basiert auf dem ContainerView und erweitert diesen um einen eigenen Outlinetree als Sidebar und einem ButtonPane für TollbarButtons im rechten Breich über dem ContentPane. Der ContentBereich wird von einem Editormanager verwaltet, der in Abhängigkeit der fachlichen Klasse des angeklickten TreeItems geladen wird, seinen Toolbar in den ButtonPane einhängt und die Anzeige und Bearbeitung der Daten im Tree ermöglicht.

Author:
  • sdw.systems
Source:
See:

Extends

  • sdw/templates/containerGUI/containerView

Requires

Members

(private) additionalCommandArgs

Source:

contentPaneToolbar

Properties:
Name Type Description
contentPaneToolbar module:dijit/layout/ContenePane
Source:

contentPaneTree

Properties:
Name Type Description
contentPaneTree module:dijit/layout/ContenePane
Source:

editormanager

Properties:
Name Type Description
Eine module:sdw/templates/containerGUI/editormanager

von EditorManager abgeleitete Klasse. Wird von der abgeleiteten Klasse bei Bedarf instantiiert

Source:

moduleName

Properties:
Name Type Description
moduleName String

Name des Moduls aus lokaler Konstante

Source:

(private) oidPopulateTree

Source:

(private) opcodePopulateTree

Source:

selectedTreeItem

Properties:
Name Type Description
Zeiger Object

auf das aktuell ausgewählte item des Outlinetrees

Source:

tree

Properties:
Name Type Description
tree module:sdw/templates/widgets/treeController

Tree-Widget

Source:

treeClass

Properties:
Name Type Description
treeClass String

Konstanter Name des Moduls einer von sdw/templates/widgets/treeController abgeleiteten Klasse. Muss von der abgeleiteten Klasse in der Methode setProperties() gesetzt werden.

Source:

treeDelegate

Properties:
Name Type Description
treeDelegate module:sdw/templates/widgets/treeController

Delegate-Objekt das die Callbacks des Trees bearbeitet. Im allgemeinen this

Source:

widthOutlinePane

Properties:
Name Type Description
widthOutlinePane String

Breite des Outlinepanes aus lokaler Konstante

Source:

Methods

constructor(args)

Der Konstruktor stellt alle Argumente innerhalb der Klasse unter this.argument zur Verfügung. Danach wird setProperties() aufgerufen um abgeleiteten Klassen nochmals Gelegenheit zu geben Eigenschaften zu setzen.

Parameters:
Name Type Description
args Object

Argumentobjekt

Properties
Name Type Description
debug Boolean

Debugflag [von Vaterklasse]

languagePack module:sdw/languagePack

Zeiger auf das I18N Objekt des Applikationscontainers [von Vaterklasse]

viewContainer module:sdw/templates/containerGUI/viewContainer

Zeiger auf den umgebenden Viewcontainer [von Vaterklasse]

canvas module:dijit/layout/ContentPane

Zeiger auf den ContentPane, in dem dieser treeContainerView dargestellt werden soll. In der Methode createGUI() wird das content-Attribut des ViewPanes auf den Bordercontainer dieses ContainerViews gesetzt. [von Vaterklasse]

opcodePopulateTree Boolean

[Optional, sonst default 0] Falls der ContainerView sich beim Initialisieren Daten von der API holen soll, kann hier der Opcode angegeben werden.

oidPopulateTree Boolean

[Optional, sonst default 0] Falls der ContainerView sich beim Initialisieren Daten von der API holen soll, kann hier die OID angegeben werden.

additionalCommandArgs Object

[Optional, sonst default null] Falls der ContainerView sich beim Initialisieren Daten von der API holen soll, kann hier ein Objekt mit weiteren Daten für das Commandobjekt übergeben werden, die ggf. notwendig sind um die Daten korrekt von der API zu holen.

Source:

createGUI()

Überschriebene Methode der Basisklasse. Erzeugt einen BorderContainer im Sidebarstil und fügt 3 ContentPanes hinzu

  1. contentPaneTree in der Sidebar
  2. contentPaneToolbar im Headbereich
  3. contentPaneContent für den eigentlichen Inhalt Danach wird der BorderContainer als Content des Canvas gerendert
Source:

deleteEditormanager()

Löscht den Editormanager und gibt alle Resourcen frei. Dadurch wird auch der ContenPane gelöscht, so dass auch der Teil des GUI den der EditorManager belegt wieder leer ist.

Source:

dispatchTreeNodeClick(treeItem,)

Wird von onClickTreeNode() aufgerufen und muss von den abgeleiteten Klassen überschrieben werden. Diese können dann in Abhängigkiet der fachlichen Klasse des treeItems entscheiden, wie damit zu Verfahren ist, also ob ein EditorManager geladen werden soll oder eben etwas anderes.

Parameters:
Name Type Description
treeItem, Object

auf das geklickt worden ist

Source:

dispose()

Überschriebene Methode der Basisklasse. Ruft zuerst deleteEditormanager() auf, danach this.tree.dispose und dann die Implementierung der Basisklasse

Source:

onClickTreeNode(treeItem)

Wird vom Treeobjekt an seinen Delegate gesendet. Macht Basisarbeiten bevor dispatchTreeNodeClick() aufgerufen wird, das von den abgeleiteten Klassen überschrieben werden muss um dann die fachlich spezifischen Aktionen anzustoßen, z.B. in Abhängigkeit der fachlichen Klasse des treeItems zu entscheiden, ob ein Editormanager geladen werden soll oder etwas anderes mit den Daten passieren soll. Diese Methode macht

  1. Prüfen,ob ein Editormanager existiert der mindestens einen Editor mit nicht gespeicherten Daten hat. In dem Fall wird mit Meldung abgebrochen.
  2. this.selectedTreeItem auf das neu angeklcikte treeItem setzen
  3. einen ggf. existierenden EditorManager löschen
  4. this.dispatchTreeNodeClick() aufrufen.
Parameters:
Name Type Description
treeItem Object

Zeiger auf das TreeItem, auf das geklickt worden ist

Source:

onClickTreeNodeContextmenue(domId, treeItem)

Wird vom Tree aufgerufen nachdem die Basisarbeiten als Reakton auf den Rechtsklick eines Treenodes passiert sind. In den abgeleiteten Klassen muss jetzt entschieden werden, wie mit dem Event umgegangen wird. Dazu wird die fachliche Klasse des treeItems dispatcht und entschieden was zu tun ist Diese Implementierung macht die Delete-Events da diese standardisiert sind. Die abgeleiteten Klassen sollten diese Methode überschreiben und per this.inherited(arguments) aufrufen.

Parameters:
Name Type Description
domId String

Konstante, die den Typ des angeklickten MenüItems angibt, z.B. SDWConst.domIdInsert

treeItem Object

Zeiger auf das TreeItem, auf das geklickt worden ist

Properties
Name Type Description
klasse String

Die fachliche Klasse die dieses treeItem repräsentiert.

Source:

onContextMenueDelete(treeItem, treeNode)

Wird aufgerufen nachdem ein treeItem über das Kontextmenü gelöscht wurde um den abgeleiteten Klassen Gelegenheit zu geben spezifische Aufräumarbeiten zu implementieren. Diese Implementierung macht nichts sondern gibt nur einen Hinweis aus Kann in diesem Fall von den abgeleiteten Klassen überschrieben werden.

Parameters:
Name Type Description
treeItem Object

Zeiger auf das TreeItem, das gelöscht worden ist

treeNode Object

DomNode des treeItems das gelöscht worden ist.

Source:

onContextMenueDuplicate(treeItem, treeNode)

Wird aufgerufen nachdem ein treeItem über das Kontextmenü geclont wurde um den abgeleiteten Klassen Gelegenheit zu geben spezifische Konstruktoren zu implementieren. Diese Implementierung macht nichts sondern gibt nur einen Hinweis aus Kann in diesem Fall von den abgeleiteten Klassen überschrieben werden.

Parameters:
Name Type Description
treeItem Object

Zeiger auf das TreeItem, das gelöscht worden ist

treeNode Object

DomNode des treeItems das gelöscht worden ist.

Source:

onContextMenueInsert(newItem, treeNode)

Wird aufgerufen nachdem ein treeItem über das Kontextmenü eingefügt wurde um den abgeleiteten Klassen Gelegenheit zu geben spezifische Konstruktoren zu implementieren. Diese Implementierung macht nichts sondern gibt nur einen Hinweis aus Kann in diesem Fall von den abgeleiteten Klassen überschrieben werden.

Parameters:
Name Type Description
newItem Object

Zeiger auf das TreeItem, das hinzugefügt worden ist

treeNode Object

DomNode des treeItems das hinzugefügt worden ist.

Source:

onItemHasBeenDeleted(deletedItem)

Falls der OutlineTree die Eigenschaft useNotificationAPI=true gesetz hat: Wird von der Notification-API aufgerufen nachdem ein treeItem gelöscht wurde. Kann von den abgeleiteten Klassen überschrieben werden um spezifische Destruktoren zu implementieren. Diese Implementierung macht nichts sondern gibt nur einen Hinweis aus

Parameters:
Name Type Description
deletedItem Object

Zeiger auf das gelöschte TreeItem

Source:

onItemHasBeenInserted(newItem, parentInfo)

Falls der OutlineTree die Eigenschaft useNotificationAPI=true gesetz hat: Wird von der Notification-API aufgerufen nachdem ein treeItem neu eingefügt wurde. Kann von den abgeleiteten Klassen überschrieben werden um spezifische Konstruktoren zu implementieren. Diese Implementierung macht nichts sondern gibt nur einen Hinweis aus

Parameters:
Name Type Description
newItem Object

Zeiger auf das neue TreeItem

parentInfo Object

Objekt mit Informationen zum Parentobjekt des neues Items.

Source:

onItemHasBeenUpdated(item, attribute, oldValue, newValue)

Falls der OutlineTree die Eigenschaft useNotificationAPI=true gesetz hat: Wird von der Notification-API aufgerufen nachdem ein treeItem gendert wurde. Kann von den abgeleiteten Klassen überschrieben werden um spezifische Handler zu implementieren. Diese Implementierung macht nichts sondern gibt nur einen Hinweis aus

Parameters:
Name Type Description
item Object

Zeiger auf das geänderte TreeItem

attribute Object

Attribut welches geändert wurde.

oldValue Object

beforeImage des Attributes

newValue Object

afterImage des Attributes

Source:

refeshToolbarPaneWithPane(contentPane)

Ersetzt den aktuellen ToolbarPane durch einen neuen dijit/layout/ContentPane. Falls ein alter ContentPane existiert wird er gelöscht

Parameters:
Name Type Description
contentPane dijit/layout/ContentPane

Der neue ContentPane

Source:

updateIdentifiers(name)

Die Identifizierung von Tabs im Tabcontainer erfolgt anhand des Attributes name. Diese Methode ändert die Identität des Tabs indem das Name-Attribut sowohl im Tab-Array als auch im Contentpane überschrieben wird. Wird insbesondere aufgerufen, wenn nach dem Erzeugen eines leeren Tabs das template-Objekt vom Server zurückkommt und die neue OID als Identität zur Verfügung steht.

Parameters:
Name Type Description
name String

Der neue Name, i.A. die OID

Source:

updateStoresAndViews(dataItem, metadataItem, afterImageForStore, newLabel)

Wird vom Editormanager aufgerufen wenn ein Editor commitAfterImage() des Editormanagers aufruft. Das bedeutet, dass diese Methode für jedes geänderte Datenobjekt einzeln aufgerufen wird, unabhängig davon wie die geänderten Daten an den Server propagiert werden. Muss von der abgeleiteten klasse überschrieben werden, aber aufgerufen werden

  1. Aktualisiert den Stode des Trees mit dem neuen Wert für das Attribut
  2. Falls Labelvalues mitgegeben wurden wird das neue Label aus den Values zusammengebout und per this.tree.setLabel() gesetzt.
Parameters:
Name Type Description
dataItem Object

Das dataItem, das im Tree angeklickt worden ist und bearbeitet wurde

metadataItem Object

Das zu dem dataItem passende MetadataItem

afterImageForStore Object

Das afterImage des bearbeiteten Attributes als Ergebnis eines Editoraufrufes

newLabel String

Neues Label. Ist bereits im Baum gesetzt und wird hier im ContainerView und in den Searchtrees gesetzt

Source: