> Inhalt: JavaScout-Fat-Client-Framework (JS-FCF) 

Tutorial: Programmierung mit dem JS-FCF 

Tutorial:
JavaScout ProjectAssist, Task-Frame Grundlagen (Java_Fatclient_01)) –
Klasse für das Task-Frame zur Verwaltung von Projekt und Sprache eröffnen

* Bitte beachten Sie die Hinweise und Bestimmungen bezüglich Urheberrecht, Haftungsausschluß und geschützte Marken oder Warenzeichen die für dieses Web-Dokument und möglicherweise auch für 'verlinkte' Dokumente gelten.

  • Der Betreiber dieser Web-Site (www.javascout.biz) ist nicht verantwortlich für den Inhalt von Web-Sites, die innerhalb dieses Web-Dokumentes oder anderer Dokumente von www.javascout.biz verlinkt sind.

  • Wenn dieses Web-Dokument oder andere Dokumente dieser Web-Site (www.javascout.biz) Rechte von Ihnen verletzen, oder sie glauben, daß Rechte Anderer (Dritter Personen) dadurch verletzt werden, informieren Sie bitte den Betreiber dieser Web-Site.
    Eine E-Mail können Sie ganz einfach durch anklicken des Symbols oder Textes im Frame rechts oben senden.

Dieses Dokument drucken.

 Letzte Bearbeitung dieses  Dokuments:
2008-05-08



Voraussetzungen für das Verständnis dieses Dokuments:

Grundkenntnisse in der Programmierung von Java (Klassen, Methoden, Schleifen) oder anderer Objekt-Orientierter Programmiersprachen (z.B. C++, Modula-2, Pascal).

Tutorial Datenbank-Ladeprogramm mit Graphischer Benutzeroberfläche (Java_Intro_02) durchgearbeitet.

Ungefährer Zeitbedarf zum Durcharbeiten dieses Dokuments:

Arbeitszeit:
Ca. 20 bis 60 Minuten; abhängig von der bei den vorigen Beispielen erworbenen Routine
.

In diesem Dokument wird begonnen, das Task-Frame für die Verwaltung von Projekt-Code und Sprache zu implementieren.

Allgemein gesprochen ist ein Task-Frame ist ein Fenster, das durch Auswahl des entsprechenden Codes im Start-Frame (CommandCenter) geöffnet wird und zur Bearbeitung von Geschäftsfällen dient.

Inhaltsverzeichnis:

Voriger Schritt: JavaScout ProjectAssist, Start-Frame Grundlagen (Java_Fatclient_01) – Auswählen der Geschäftsanwendung 

Vorbemerkung 
Vorbedingungen 
Klasse für das Task-Frame für die Verwaltung von Projekt und Sprache eröffnen 
Spezieller Code für das Task-Frame 
* Von Basisklasse erben 
* 'Constructor' mit Start-Frame als Parameter 
* Methoden die vor, nach und zum Anzeigen des Fensters ausgeführt werden 
* Möglicher Zwischentest 
* Spezielle GUI-Elemente für die Geschäftsanwendung entwerfen 
* Variablen für die GUI-Elemente definieren 
* Überschreiben der Methode
get_pnl_DetailFields 
* Methode zum Zuordnen der sprachabhängigen Texte zu den GUI-Elementen aufrufen 
Datei mit der XML-Struktur mit den sprachabhängigen Texten erweitern 
Zusätzlicher Code in der Klasse
JS_ProjAssist_CommandCenter__ActionHandler 
Test 
Gesamter Code am Ende des Schrittes 
Klasse JS_ProjAssist_Project 
Weitere Schritte und verwandte Dokumentation 

Nächster Schritt: DataBase-Access (DBA) Klasse für DB-Tabelle 'ProjLang' 

Vorbemerkung

Obwohl Eclipse in 'deutscher Version' installiert werden kann, sind die Abbildungen in diesem Dokument mit der 'english Version' erstellt.
Grund ist, daß zum Zeitpunkt der Erstellung dieses Dokumentes (Oktober 2007) die Eclipse-Texte nur sehr unvollständig ins Deutsche übersetzt sind.
Damit ist (meiner Meinung nach)
1.) Eclipse in deutscher Version wesentlich schwerer verständlich als in englischer Version und
2.) wenn Eclipse weiter übersetzt wird, ist dieses Dokument stark abweichend von den dann vorhandenen deutschen Texten.



zum Inhaltsverzeichnis

Vorbedingungen:

zum Inhaltsverzeichnis

Klasse für das Task-Frame zur Verwaltung von Projekt und Sprache eröffnen

Um eine neue Java-Klasse zu eröffnen wird mit der rechten Maustaste das bereits existierende Java-Package (js_projassist.client) angeklickt und aus dem Kontext-Menu >New>Class ausgewählt.

  

Im darauf hin erscheinenden Fenster (New Java Class) wird

  • Das 'Package' (js_projassist.client) festgelegt; dieses ist bereits eingetragen.

  • Der Name der Klasse (JS_ProjAssist_Project) festgelegt.

  • Folgende Auswahl-Möglichkeiten werden markiert:
    [  ] public static void main(String[] args)
    [  ] Constructors from superclass

    [  ] Inherited abstract methods

Die anderen bereits vorgegebenen Werte werden nicht verändert.

Durch Anklicken der Schaltfläche [ Finish ] wird die Datei für den Quell-Code der Klasse angelegt.



zum Inhaltsverzeichnis

Spezieller Code für das Task-Frame

Der Code für das Task-Frame besteht zu großen Teilen aus Algorithmen, die bereits in früheren Tutorials ausführlich erklärt wurden.

Methoden, die vor dem, nach dem und zum Aufbau der Benutzeroberfläche ausgeführt werden sind gleich oder sehr ähnlich jenen, die bereits in JavaScout ProjectAssist, Start-Frame Grundlagen (Java_Fatclient_01) – Klasse für das StartFrame eröffnen erklärt wurden.

Das Erstellen von GUI-Elementen für die Eingabe wurde bereits im Einführungs-Tutorial Datenbank-Ladeprogramm mit Graphischer Benutzeroberfläche (Java_Intro_02) – Schritt 2: Benutzeroberfläche codieren beschrieben.

Im folgenden werden nur die Änderungen gegenüber bereits einmal erklärten Algorithmen und neue Algorithmen ausführlich erklärt.
Eine komplette Liste des in diesem Schritt erstellen Codes finden Sie unter
KompletterCode am Ende dieses Schrittes.

zum Inhaltsverzeichnis

Von Basisklasse erben

package js_projassist.client;
/*
 * Package mit der Basisklasse für das TaskFrame. */

import js_base.frame.*;
/* */
public class JS_ProjAssist_Project extends JSBS_TaskFrame {
/*

Variablen, Methoden und GUI-Elemente die für alle Klassen, mit denen Fenster für die Abwicklung von Geschäftsfällen dargestellt werden, sind in der Basisklasse JSBS_TaskFrame definiert.
Mit den obigen Anweisungen wird die Bibliothek, in der diese Klasse enthalten ist, importiert und von dieser Klasse 'geerbt'.

zum Inhaltsverzeichnis

'Constructor' mit Start-Frame als Parameter

public class JS_ProjAssist_Project extends JSBS_TaskFrame {
/*
 * Constructor der Klasse.
 * Code darin wird aufgerufen wenn ein Objekt dieser Klasse erstellt wird.
 * Als Parameter wird das StartFrame (CommandCenter) übernommen;
 * das StartFrame enthält alle Einstellungen, die für die gesamte Anwendung gelten
 * und die Verbindung zu Datenbank oder Java-Application-Server (JAS). */

    
public JS_ProjAssist_Project(JS_ProjAssist_CommandCenter parmCC) {
/*
 * Aufruf des Constructors der Basisklasse (JSBS_TaskFrame).
 * Darin werden die Klasse des StartFrames und eventuell Werte einzelner Variablen
 * in lokale Variablen übertragen. */

        
super (parmCC);
/* 
 * Aufrufen der Methoden mit den individuellen Initialisierungen für diese Klasse. */
      initialize_before_frame();
      initialize_frame();
      initialize_after_frame();
    }
/* 
 * Methode mit den Initialisierungen die notwendig sind bevor das Frame (Window)
 * angezeigt wird. */

    
private void initialize_before_frame() {

Der 'Constructor' ist eine spezielle Methode, die aufgerufen wird wenn ein Objekt dieser Klasse erstellt (konstruiert) wird.
An diese Methode wird das Start-Frame (CommandCenter) als Parameter übergeben.
Durch den Aufruf des 'Constructor's der geerbten Klasse (
super (parmCC)) werden Werte aus dem Start-Frame (vor allem für die Verbindung uir Datenbank oder dem Java-Application-Server / JAS) übernommen.

Nach dem Ausführen des 'Constructor's der geerbten Klasse werden Methoden aufgerufen, in die später Code eingefügt wird, der vor dem Anzeigen des Fensters, zum Anzeigen des Fensters und nach dem Anzeigen des Fensters ausgeführt wird.

zum Inhaltsverzeichnis

Methoden die vor, nach und zum Anzeigen des Fensters ausgeführt werden

      initialize_frame();
      initialize_after_frame();
    }
/* 
 * Methode mit den Initialisierungen die notwendig sind bevor das Frame (Window)
 * angezeigt wird. */

    
private void initialize_before_frame() {
    }
/* 
 * Methode mit der das Frame (Window) angezeigt wird. */

    
private void initialize_frame() {
/* Frame (Window) sichtbar machen (anzeigen). */
      setVisible(
true);
/* Anfangsgröße festlegen. */
      setSize(800, 600);
/* Grund-Panel mit den weiteren GUI-Elementen anzeigen.
 * Die GUI-Elemente und deren Anordnung sind in der geerbten Klasse
 * (JSBS_StartFrame) festgelegt. */

      setContentPane(get_pnl_Main());
    }
/* 
 * Methode mit den Initialisierungen die notwendig sind nachdem das Frame (Window)
 * angezeigt wird. */

    
private void initialize_after_frame() {
    }

}

Zum jetzigen Zeitpunkt werden vor und nach dem Anzeigen des Fensters keine Verarbeitungen ausgeführt.

In der Methode private void initialize_frame() ist der Code enthalten, der das 'Frame' (Fenster) sichtbar macht.
Zum jetzigen Zeitpunkt sind noch keine zusätzlichen GUI-Elemente definiert; das Layout des Fensters (Anordnung der GUI-Elemente) wird von der geerbten Klasse (JSBS_TaskFrame) übernommen.
Durch die Anweisung
setContentPane(get_pnl_Main()) wird der 'Startpunkt der Hierarchie' (pnl_Main) der GUI-Elemente definiert.

zum Inhaltsverzeichnis

Möglicher Zwischentest

Ab jetzt ist es möglich, ein (bescheidenes) Zwischenergebnis zu sehen.
Dazu ist es notwendig, die unter
Zusätzlicher Code in der Klasse JS_ProjAssist_CommandCenter__ActionHandler beschriebenen Erweiterungen jetzt auszuführen.

Wenn Sie die Anwendung so wie unter Test beschrieben starten und dann 'P' auswählen, sehen Sie das Task-Frame so wie in der Abbildung rechts.


zum Inhaltsverzeichnis

Spezielle GUI-Elemente für die Geschäftsanwendung entwerfen

Zum Platzieren der GUI-Elemente steht ein Entwurfsblatt als pdf-Datei zur Verfügung.
Sollten Sie pdf-Dateien nicht anzeigen können, ist dieses Entwurfblatt auch im Dokument
Poster für das GUI-Layout der Basisklasse JSBS_TaskFrame enthalten.

Die Abbildung zeigt den Entwurf mit der Platzierung der für die Geschäftsanwendung notwendigen GUI-Elemente.

Eine graphische Übersicht über die Layout-Hierarchie finden Sie im Dokument Definierte GUI-Elemente der Basisklasse JSBS_TaskFrame.



zum Inhaltsverzeichnis

Variablen für die GUI-Elemente definieren

Wie GUI-Elemente innerhalb eine Java-Programms definiert werden, wurde bereits unter Tutorial: Datenbank-Ladeprogramm mit Graphischer Benutzeroberfläche (Java_Intro_02) – GUI codieren > Code für die Anzeige der GUI ausführlich beschrieben.

public class JS_ProjAssist_Project extends JSBS_TaskFrame {
/*
 * GUI-Elemente die für diesen Task-Frame spezifisch sind. */

    
protected JLabel lbl_ProjectCode;
    
protected JTextField txt_ProjectCode;
    
protected JLabel lbl_LanguageCode;
    
protected JTextField txt_LanguageCode;
    
protected JLabel lbl_TargetDirectoryName;
    
protected JTextField txt_TargetDirectoryName;
    
protected JButton btn_TargetDirectorySelection;
/*
 * Constructor der Klasse.
 * Code darin wird aufgerufen wenn ein Objekt dieser Klasse erstellt wird.

Die GUI-Elemente für die Geschäftsabwicklung werden definiert und über eigene Methoden 'konstruiert'.

    private void initialize_after_frame() {
    }
/* 
 * ******************************
 * Methoden zum 'Construct' (Initialisierung) der einzelnen GUI-Elemente.
 * */

    
protected JLabel get_lbl_ProjectCode() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      
if (lbl_ProjectCode == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        
try {
          
lbl_ProjectCode = new JLabel();
          lbl_ProjectCode.setName("lbl_ProjectCode");
          lbl_ProjectCode.setHorizontalAlignment(SwingConstants.TRAILING);
        }
        catch (Throwable Exc) {
/* Fehler beim 'construct' ist sehr unwahrscheinlich und kann nur beim 'Starten'
 * des Tasks auftreten.
 * Deswegen werden Fehlermeldungen nur auf der Konsole ausgegeben. */

          System.
out.println("Error while building lbl_ProjectCode in class JS_ProjAssist_Project");
          Exc.printStackTrace();
        }
      }
      return lbl_ProjectCode;
    }

/* */
    
protected JTextField get_txt_ProjectCode() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      
if (txt_ProjectCode == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        
try {
          
txt_ProjectCode = new JTextField();
          txt_ProjectCode.setName("txt_ProjectCode");
        }
        catch (Throwable Exc) {
          System.
out.println("Error while building txt_ProjectCode in class JS_ProjAssist_Project");
          Exc.printStackTrace();
        }
      }
      return txt_ProjectCode;
    }

/* */
    
protected JLabel get_lbl_LanguageCode() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
. . . . . . . .
. . . . . . . .

Da sich die Algorithmen für das 'konstruieren' der GUI-Elemente ähnlich sind, wurde hier nicht der komplette Code widergegeben.
Die Liste des gesamten Codes für die Klasse finden Sie in diesem Dokument unter
Klasse JS_ProjAssist_Project.

zum Inhaltsverzeichnis

Überschreiben der Methode get_pnl_DetailFields

Für das 'Anordnen' der GUI-Elemente für diese Geschäftsfallabwicklung wird die Eigenschaft von Java ausgenutzt, daß Methoden einer geerbten Klasse in der erbenden Klasse 'überschrieben' werden können.
'Überschreiben' bedeutet für diese Anwendung, daß beim Aufruf der Methode (
get_pnl_DetailFields in diesem Beispiel) in der geerbten Klasse (in diesem Beispiel: aufgerufen in der Methode get_pnl_Detail in der Klasse JSBS_TaskFrame) der Code in der erbenden Klasse (JS_ProjAssist_Project in diesem Beispiel) ausgeführt wird - und nicht der Code in der geerbten Klasse (JSBS_TaskFrame).

/* 
 * ******************************
 * Methode zum 'Construct' (Initialisierung) des Panels mit den GUI-Elementen für
 * die Abwicklung des Geschäftsfalles.
 * Diese Methode überschreibt das 'Construct' des JPanel (mit gleichem Namen) in der
 * geerbten Methode aus der Klasse JSBS_TaskFrame.
 * */

    
protected JPanel get_pnl_DetailFields() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      
if (pnl_DetailFields == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        
try {
          
pnl_DetailFields = new JPanel();
          pnl_DetailFields.setName("pnl_DetailFields");
/* 
 * Mit der folgenden Anweisung wird die Eigenschaft 'GridBagLayout festgelegt
 * 'GridBagLayout' unterteilt das JPanel in 'dehnbare' Felder; damit 'wachsen' oder
 * 'schrumpfen' darin platzierte GUI-Elemente abhängig von der Größe des JPanel. */

          
pnl_DetailFields.setLayout(new GridBagLayout());
/* 
 * Die folgenden Anweisungen platzieren GUI-Elemente in den 'Feldern' des JPanel. */
/* Zuerst wird eine Variable für die Platzierungs-Eigenschaften erstellt. */

          GridBagConstraints gbc_lbl_ProjectCode =
new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_lbl_ProjectCode.
gridx = 0;
          gbc_lbl_ProjectCode.gridy = 0;
          gbc_lbl_ProjectCode.fill = GridBagConstraints.HORIZONTAL;
          gbc_lbl_ProjectCode.weightx = 1;
          gbc_lbl_ProjectCode.anchor = GridBagConstraints.LINE_END;
          gbc_lbl_ProjectCode.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_lbl_ProjectCode(), gbc_lbl_ProjectCode);

/* 
 * Platzieren des nächsten GUI-Elements. */

          GridBagConstraints gbc_txt_ProjectCode =
new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_txt_ProjectCode.
gridx = 0;
          gbc_txt_ProjectCode.gridy = 1;
          gbc_txt_ProjectCode.fill = GridBagConstraints.HORIZONTAL;
          gbc_txt_ProjectCode.weightx = 1;
          gbc_txt_ProjectCode.anchor = GridBagConstraints.LINE_START;
          gbc_txt_ProjectCode.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_txt_ProjectCode(), gbc_txt_ProjectCode);
. . . . . . . .
. . . . . . . .

        }
        catch (Throwable Exc) {
/* Fehler beim 'construct' ist sehr unwahrscheinlich und kann nur beim 'Starten'
 * des Tasks auftreten.
 * Deswegen werden Fehlermeldungen nur auf der Konsole ausgegeben. */

          System.
out.println("Error while building lbl_ProjectCode in class JS_ProjAssist_Project");
          Exc.printStackTrace();
        }
      }
      return pnl_DetailFields;
    }

Da sich die Algorithmen für das hinzufügen von GUI-Elementen zu einem Panel ähnlich sind, wurde hier nicht der komplette Code widergegeben.
Die Liste des gesamten Codes für die Klasse finden Sie in diesem Dokument unter
Klasse JS_ProjAssist_Project.

zum Inhaltsverzeichnis

Methode zum Zuordnen der sprachabhängigen Texte zu den GUI-Elementen aufrufen

/* 
 * Methode mit den Initialisierungen die notwendig sind nachdem das Frame (Window)
 * angezeigt wird. */

    
private void initialize_after_frame() {
/* Methode zum Zuordnen des sprachabhängigen Textes zu den GUI-Elementen aufrufen. */
      JSBS_GUIServices.processLanguageDependantElements(
this);
    }

Mit diesem einfachen Aufruf werden die sprachabhängig definierten Texte aus der Datei 'DisplayStrings.xml' den jeweiligen GUI-Elementen zugeordnet.
Die XML-Struktur aus der Datei wurde bereits beim Starten des CommandCenters (Start-Frame) eingelesen; eine Detailbeschreibung finden Sie unter
Tutorial: JavaScout ProjectAssist, Start-Frame Grundlagen (Java_FatClient_01) – Text für die GUI-Elemente von XML-Datei einlesen > XML-Struktur für sprachabhängige Texte konstruieren.
Der Code dazu ist in den Basisklassen des JavaScout Fat-Client-Frameworks (JS-FCF) enthalten.

zum Inhaltsverzeichnis

Datei mit der XML-Struktur mit den sprachabhängigen Texten erweitern

In den folgenden Vorlagen sind nur die neuen Teile der Datei 'DisplayStrings.xml' dokumentiert.
Bitte fügen Sie die Texte in die Datei ein und achten Sie darauf, daß Sie nicht bestehenden Text versehentlich löschen !

Der Bereich <CommonElements> wird um jene GUI-Elemente ergänzt, die häufig verwendet werden.

<root>
. . . . .
. . . . .
  <CommonElements>
    
<CommonElement>
      
<ElementName>btn_Continue</ElementName>
. . . . .
. . . . .
    
<CommonElement>
      
<ElementName>btn_CC</ElementName>
      
<ElementText>CommandCenter</ElementText>
      
<ToolTipText>Fenster für das CommandCenter aufrufen</ToolTipText>
    
</CommonElement>
    
<CommonElement>
      
<ElementName>btn_Print</ElementName>
      
<ElementText>Drucken</ElementText>
      
<ToolTipText>Druckmöglichkeiten anzeigen</ToolTipText>
    
</CommonElement>
    
<CommonElement>
      
<ElementName>btn_Store</ElementName>
      
<ElementText>Speichern</ElementText>
      
<ToolTipText>Speichern der Daten</ToolTipText>
    
</CommonElement>
    
<CommonElement>
      
<ElementName>btn_Copy</ElementName>
      
<ElementText>Kopieren</ElementText>
      
<ToolTipText>Kopieren der Daten auf einen neuen Datensatz</ToolTipText>
    
</CommonElement>
    
<CommonElement>
      
<ElementName>btn_Previous</ElementName>
      
<ElementText>Vorige</ElementText>
      
<ToolTipText>Vorigen Datensatz anzeigen</ToolTipText>
    
</CommonElement>
    
<CommonElement>
      
<ElementName>btn_Next</ElementName>
      
<ElementText>Nächste</ElementText>
      
<ToolTipText>Nächsten Datensatz anzeigen</ToolTipText>
    
</CommonElement>
    
<CommonElement>
      
<ElementName>btn_Get</ElementName>
      
<ElementText>Bearbeiten</ElementText>
      
<ToolTipText>Übertragen der ausgewählten Daten zum Bearbeiten</ToolTipText>
    
</CommonElement>
    
<CommonElement>
      
<ElementName>btn_Delete</ElementName>
      
<ElementText>Löschen</ElementText>
      
<ToolTipText>Ausgewählten Datensatz löschen</ToolTipText>
    
</CommonElement>
    
<CommonElement>
      <ElementName>lbl_ApplicationTitle1</ElementName>
. . . . .
. . . . .

    
<CommonElement>
      
<ElementName>lbl_LanguageCode</ElementName>
      
<ElementText>ISO-Sprach-Code:</ElementText>
      
<ToolTipText>Code der Sprache für die die Daten gelten</ToolTipText>
    
</CommonElement>
    
<CommonElement>
      
<ElementName>lbl_ProjectCode</ElementName>
      
<ElementText>Projekt-Code:</ElementText>
      
<ToolTipText>Code des Projektes für das die Daten gelten</ToolTipText>
    
</CommonElement>
    
<CommonElement>
      
<ElementName>txt_LanguageCode</ElementName>
      
<ToolTipText>Code der Sprache für die die Daten gelten</ToolTipText>
    
</CommonElement>
    
<CommonElement>
      
<ElementName>txt_ProjectCode</ElementName>
      
<ToolTipText>Code des Projektes für das die Daten gelten</ToolTipText>
    
</CommonElement>
    
<CommonElement>
      
<ElementName>lbl_Selection</ElementName>
      
<ElementText>Auswahl:</ElementText>
      
<ToolTipText>Zum Bearbeiten die Nummer des Datensatzes in diesem Feld eintragen und [Weiter] anklicken</ToolTipText>
    
</CommonElement>
    
<CommonElement>
      
<ElementName>txt_Selection</ElementName>
      
<ToolTipText>Zum Bearbeiten die Nummer des Datensatzes in diesem Feld eintragen und [Weiter] anklicken</ToolTipText>
    
</CommonElement>
    
<CommonElement>
      
<ElementName>lbl_SelectionListHeader</ElementName>
      
<ElementText>Gefundene Datensätze:</ElementText>
      
<ToolTipText>Zum Bearbeiten die Nummer des Datensatzes im Feld 'Auswahl' eintragen und [Weiter] anklicken</ToolTipText>
    
</CommonElement>
  
</CommonElements>
  
<FrameIndividual>
    
<Frame>
. . . . .
. . . . .

</root>

Der Bereich <FrameIndividual> enthält alle GUI-Elemente des Frames für den Geschäftsfall.

<root>
. . . . .
. . . . .
    </CommonElement>
  
</CommonElements>
  <FrameIndividual>
    
<Frame>
      
<FrameClass>js_projassist.client.JS_ProjAssist_CommandCenter</FrameClass>
      
<FrameTitle>CommandCenter – ProjectAssist für das JavaScout Fat-Client-Framework / © 2008 www.javascout.biz</FrameTitle>
      
<Element>
        
<ElementName>btn_Help</ElementName>
. . . . .
. . . . .
      </Element>
    
</Frame>
    
<Frame>
      
<FrameClass>js_projassist.client.JS_ProjAssist_Project</FrameClass>
      
<FrameTitle>Projekt- und Sprache-Verwaltung – ProjectAssist für das JavaScout Fat-Client-Framework / © 2008 www.javascout.biz</FrameTitle>
      
<Element>
        
<ElementName>btn_Help</ElementName>
        
<CommonElementReference>btn_Help</CommonElementReference>
      
</Element>
      
<Element>
        
<ElementName>btn_CC</ElementName>
        
<CommonElementReference>btn_CC</CommonElementReference>
      
</Element>
      
<Element>
        
<ElementName>btn_Print</ElementName>
        
<CommonElementReference>btn_Print</CommonElementReference>
      
</Element>
      
<Element>
        
<ElementName>btn_Store</ElementName>
        
<CommonElementReference>btn_Store</CommonElementReference>
      
</Element>
      
<Element>
        
<ElementName>btn_Copy</ElementName>
        
<CommonElementReference>btn_Copy</CommonElementReference>
      
</Element>
      
<Element>
        
<ElementName>btn_Previous</ElementName>
        
<CommonElementReference>btn_Previous</CommonElementReference>
      
</Element>
      
<Element>
        
<ElementName>btn_Next</ElementName>
        
<CommonElementReference>btn_Next</CommonElementReference>
      
</Element>
      
<Element>
        
<ElementName>btn_Get</ElementName>
        
<CommonElementReference>btn_Get</CommonElementReference>
      
</Element>
      
<Element>
        
<ElementName>btn_Delete</ElementName>
        
<CommonElementReference>btn_Delete</CommonElementReference>
      
</Element>
      
<Element>
        
<ElementName>btn_TargetDirectorySelection</ElementName>
        
<ElementText>Datei-Auswahl</ElementText>
        
<ToolTipText>Klicken für die Auswahl des Unterverzeichnisses</ToolTipText>
      
</Element>
      
<Element>
        
<ElementName>lbl_ApplicationTitle1</ElementName>
        
<CommonElementReference>lbl_ApplicationTitle1</CommonElementReference>
        
<FontSize>14</FontSize>
        
<FontStyle>2</FontStyle>
      
</Element>
      
<Element>
        
<ElementName>lbl_ApplicationTitle2</ElementName>
        
<ElementText>Projekt- und Sprachen-Definition</ElementText>
        
<FontStyle>2</FontStyle>
      
</Element>
      
<Element>
        
<ElementName>lbl_ProjectCode</ElementName>
        
<CommonElementReference>lbl_ProjectCode</CommonElementReference>
      
</Element>
      
<Element>
        
<ElementName>txt_ProjectCode</ElementName>
        
<CommonElementReference>txt_ProjectCode</CommonElementReference>
      
</Element>
      
<Element>
        
<ElementName>lbl_LanguageCode</ElementName>
        
<CommonElementReference>lbl_LanguageCode</CommonElementReference>
      
</Element>
      
<Element>
        
<ElementName>txt_LanguageCode</ElementName>
        
<CommonElementReference>txt_LanguageCode</CommonElementReference>
      
</Element>
      
<Element>
        
<ElementName>lbl_TargetDirectoryName</ElementName>
        
<ElementText>Stamm-Unterverzeichnis für generierte Daten:</ElementText>
        
<ToolTipText>Verzeichnis, in dem weitere Verzeichnisse mit generierten Daten erstellt werden</ToolTipText>
      
</Element>
      
<Element>
        
<ElementName>txt_TargetDirectoryName</ElementName>
        
<ToolTipText>Verzeichnis, in dem weitere Verzeichnisse mit generierten Daten erstellt werden</ToolTipText>
      
</Element>
      
<Element>
        
<ElementName>lbl_SelectionListHeader</ElementName>
        
<CommonElementReference>lbl_SelectionListHeader</CommonElementReference>
      
</Element>
      
<Element>
        
<ElementName>lbl_Selection</ElementName>
        
<CommonElementReference>lbl_Selection</CommonElementReference>
      
</Element>
      
<Element>
        
<ElementName>txt_Selection</ElementName>
        
<CommonElementReference>txt_Selection</CommonElementReference>
      
</Element>
    
</Frame>
  </FrameIndividual>
</root>

Für das einfache Verwalten von sprachabhängigen Texten und das Generieren der Datei mit der XML-Struktur wird die Verwendung JavaScout ProjectAssist empfohlen.

zum Inhaltsverzeichnis

Zusätzlicher Code in der Klasse JS_ProjAssist_CommandCenter__ActionHandler

Damit das Frame aufgerufen werden kann ist in der Klasse JS_ProjAssist_CommandCenter__ActionHandler der folgende Code zusätzlich notwendig:

        openBusinessTask(parmCC);
      }

    }
/*
 * Methode zum Auslesen des gewählten Codes und Aufrufen der Geschäftsanenwendung. */
    public static void openBusinessTask(JS_ProjAssist_CommandCenter parmCC) {
/* 
 * Methode der Basisklassen verwenden um den Internen Code der gewählten Anwendung
 * zu ermitteln. */
      String strInternalCode =
          parmCC.
structJSBS_XML_Tasks.processParameterFields(
              parmCC.get_txt_Code(),
              parmCC.get_lbl_Parameter1(), parmCC.get_txt_Parameter1(),
              parmCC.get_lbl_Parameter2(), parmCC.get_txt_Parameter2(),
              parmCC.get_lbl_Parameter3(), parmCC.get_txt_Parameter3());
/* 
 * Abfragen welcher interner Code gewählt wurde und aufrufen des entsprechenden
 * Task-Frames. */
      if (strInternalCode.equals("P")) {
/* 
 * Ein Objekt der entsprechenden Klasse 'konstruieren'
 * und die notwendigen Parameter mitgeben. */
        JS_ProjAssist_Project frm_JS_ProjAssist_Project =
                                       
new JS_ProjAssist_Project(parmCC);
        frm_JS_ProjAssist_Project.setVisible(
true);
      }
    }
}

Im Tutorial-Schritt JavaScout ProjectAssist, Start-Frame Grundlagen (Java_Fatclient_01) – weitere XML-Strukturen einlesen > Datei mit XML-Struktur für wählbare Geschäftsanwendungen (Tasks) erstellen wurde bereits der 'Auswählbare' Code, der 'Interne' Code und andere Werte (z.B. die Kurz-Beschreibung) in der Datei 'Tasks.xml' erfasst.

zum Inhaltsverzeichnis

Test

Die Einstellungen und die Angabe der zu verwendenden Sprache als Parameter wurden schon im Schritt 2 ausgeführt und bleiben als Einstellung für das 'Project' erhalten.
Die Abfolge zum Starten wurde bereits in den beiden vorigen Schritten mit Abbildungen dokumentiert; deswegen folgen nur Stichworte:

Daraufhin erscheint das Fenster mit der Benutzeroberfläche wie schon im vorigen Schritt.

Anmerkung:
Bei der zur Zeit der Erstellung dieses Tutorials (Februar 2008) installierten Version von Java und/oder Eclipse erscheinen die Elemente der Benutzeroberfläche erst nachdem die Größe des Fensters verändert wurde.
Dieser Fehler ist hoffentlich bereits behoben wenn Sie dieses Tutorial durcharbeiten.


 

Durch Anklicken der Auswahlmöglichkeit 'P- Projekt und Sprache verwalten' wird der Code in das Feld 'Auswahl' übertragen.


 

Nach Anklicken der Schaltfläche [ Weiter ] wird das in diesem Schritt erstellte Task-Frame aufgerufen.


 



zum Inhaltsverzeichnis

Gesamter Code am Ende des Schrittes

zum Inhaltsverzeichnis

Klasse JS_ProjAssist_Project

zum Inhaltsverzeichnis

Weitere Schritte und verwandte Dokumentation

Dokument

Inhalt

Tutorial: JavaScout ProjectAssist, Task-Frame Grundlagen (Java_Fatclient_01) – DataBase-Access (DBA) Klasse für DB-Tabelle 'ProjLang'  

Im nächsten Schritt des Tutorials wird die unterste Ebene des Zugriffs auf Daten einer Datenbank entwickelt. Eine DBA-Klasse ist genau einer Datenbank-Tabelle zugeordnet.

zum Inhaltsverzeichnis