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

> Verzeichnis der Dokumente mit den Muster-Codes 

Muster-Code für die Klassen des Task-Frames zur Verwaltung der Sprache

* 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, dass 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:
2012-05-11

Voraussetzungen für das Verständnis dieses Dokuments:

Grundkenntnisse in der Programmierung von Java (Klassen, Methoden, Schleifen).

Ungefährer Zeitbedarf zum Durcharbeiten dieses Dokuments:

Arbeitszeit: 
Abhängig von Ihrer Routine beim 'Find and Replace'.
Als Basis für das Erstellen der Klassen sind ca. 30 bis 60 Minuten zu kalkulieren.


Dieses Dokument enthält Muster-Codes für ein Task-Frame (Teilprogramm für einen Geschäftsfall) zur Verwaltung von Sprachen und die Anleitungen zur Adaptierung.

Inhaltsverzeichnis:

Vorbedingung 
Muster-Code für die Klasse für das Frame (GUI)
 
Muster-Code für die Klasse für den ActionHandler
 
Muster-Code für die Klasse für den DocumentListener
 

Anleitung zur Adaptierung in allen Klassen 
* Änderung des Namens des Java-Packages 
* Änderung des Namens der Klassen 
* Adaptieren der Kommentare


Anleitung zur Adaptierung in der Klasse für das Frame (GUI)

* Änderung des Namens der Klasse des CommandCenters
 
* Einsetzen des internen Codes für den Aufruf des Task-Frames

* Entfernen der nicht benötigten 'Marker' aus dem
pnl_DetailFields

Anleitung zur Adaptierung bei Verwendung von Währungen in der Klasse für die GUI 
* Adaptieren in der Methode
initialize_frame 
* Adaptieren in der Methode
initialize_after_frame 

Anleitung zur Adaptierung in der Klasse für den ActionHandler

* Verarbeiten eventuell im CommandCenter eingegebener Parameter - Methode
processCCParameters(...)
* Adaptieren der Methode 
processDeactivate(...)

Anleitung zur Adaptierung in der Klasse für den DocumentListener


Tätigkeiten ausserhalb des Codierens
* Einträge in 'Tasks.xml'

* Allgemein und individuell verwendbare Text-Elemente erfassen

* Texte für Fehler- und Warnungs-Meldungen erfassen


Weitere Schritte und verwandte Dokumentation 

Vorbedingung:

zum Inhaltsverzeichnis

Muster-Code für die Klasse für das Frame (GUI)

Welche Platzhalter durch Bezeichnungen des eigentlichen Projektes zu ersetzen sind finden Sie im Abschnitt
Anleitung zur Adaptierung in allen Klassen und
Anleitung zur Adaptierung in der Klasse für das Frame (GUI) .

package application_package.client;
/*
 * Packages mit den GUI-Elementen. */

import java.awt.*;
import javax.swing.*;
/*
 * Packages mit den Klassen zum Bearbeiten von Events */

import java.awt.event.*;
import java.beans.*;
import javax.swing.event.*;
/*
 * Package mit der Basisklasse für das TaskFrame. */

import js_base.frame.*;
/*
 * Package mit den Business-Objects. */

import js_base.boc.*;
import application_package.boc.*;
/**
 * 
 * @author name[at]company
 * @date 20xx-xx-xx
 *
 * @description
 *  Klasse für den Aufbau der Benutzeroberfläche eines Frames (Fensters)
 *  für die Geschäftsanwendung (Task)
 *  Verwalten von Sprachen.
 *
 *  Die Geschäftsanwendung (Task) ermöglicht
 *  das Erfassen von Sprachen die innerhalb der Anwendung verwendet werden können
 *  Zu jeder Sprache kann eine Bezeichnung in verschiedenen Sprachen und verschiedenen Marker,
 *  für welches Teilprogramm die Sprache ausgewählt werden kann, erfasst werden.
 * 
 * @change-log
 * when          who                       why
 * -----------------------------------------------------------------
 * 
 */

public class application_Language extends JSBS_TaskFrame {
/*
 * Variable für die Referenz auf die Klasse des Start-Frame (CommandCenter). */

    
protected application_CommandCenter frmCC;
/*
 * Zugehöriges DocumentListener Objekt definieren. */

    
protected application_Language__DocumentListener
                
structapplication_Language__DocumentListener;
/*
 * Business-Objects (Client-Side-Klasse)
 * für die Detail-Anzeige und-Bearbeitung definieren. */

    
protected application_Language_BOC
                
structapplication_Language_BOC_Read;
    
protected application_Language_BOC
                
structapplication_Language_BOC_Processed;
/*
 * Liste mit Business-Objects (Client-Side-Klasse)
 * für die Auswahl-Liste definieren. */

    
protected JSBS_Language_BOC_Set
                
structJSBS_Language_BOC_Set;
/*
 * Werte der Selektion für die Anzeige der Auswahl-Liste.
 * Diese werden gesetzt wenn die Liste neu angezeigt wird und werden gebraucht,
 * wenn die Liste neu angezeigt werden soll aber die GUI-Elemente für die Auswahl
 * schon geändert sein können.
 * Das ist der Fall, wenn ein BO gelöscht wurde. */

    
protected String str_Selection_ISOLanguageCode = "";
/*
 * GUI-Elemente für die Attribute eines einzelnen BO. */

    
protected JLabel lbl_ISOLanguageCode;
    
protected JTextField txt_ISOLanguageCode;
    
protected JLabel lbl_LanguageCodeForLabelling;
    
protected JComboBox combo_LanguageCodeForLabelling;
   
protected JLabel lbl_LanguageName;
    
protected JTextField txt_LanguageName;
   
private JSBS_Dividerline dl_AboveMarkers;
    protected JLabel lbl_MarkerHeadline;
    protected JCheckBox chk_Marker01;
    protected JCheckBox chk_Marker02;
    protected JCheckBox chk_Marker03;
    protected JCheckBox chk_Marker04;
    protected JCheckBox chk_Marker05;
 
   protected JCheckBox chk_Marker06;
 
   protected JCheckBox chk_Marker07;
 
   protected JCheckBox chk_Marker08;
 
   protected JCheckBox chk_Marker09;
 
   protected JCheckBox chk_Marker10;
 
   protected JCheckBox chk_Marker11;
 
   protected JCheckBox chk_Marker12;
 
   protected JCheckBox chk_Marker13;
 
   protected JCheckBox chk_Marker14;
 
   protected JCheckBox chk_Marker15;
 
   protected JCheckBox chk_Marker16;
 
   protected JCheckBox chk_Marker17;
 
   protected JCheckBox chk_Marker18;
 
   protected JCheckBox chk_Marker19;
 
   protected JCheckBox chk_Marker20;
/*
 * GUI-Elemente für die Auswahl der zu verwaltenden Sprache. */

    
protected JLabel lbl_SelectLanguage;
    
protected JComboBox combo_SelectLanguage;
/*
 * Constructor der Klasse.
 * Code darin wird aufgerufen wenn ein Objekt dieser Klasse erstellt wird.
 * Als Parameter wird das StartFrame (CommandCenter) und die Parameter,
 * die der Anwender bereits im StartFrame erfaßt hat, übernommen.
 * Das StartFrame enthält alle Einstellungen, die für die gesamte Anwendung gelten
 * und die Klassen für die Verbindung zur Datenbank oder
 * zum Java-Application-Server (JAS).
 * Die Parameter, die der Anwender bereits im StartFrame erfaßt hat,
 * steuern individuell für jedes TaskFrame, welche Liste oder welches einzelne BO
 * sofort nach der 'Konstruktion' des TaskFrame angezeigt wird. */

    public application_Language(application_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, parmCC.get_txt_Parameter1().getText(),
               parmCC.get_txt_Parameter2().getText(), parmCC.get_txt_Parameter3().getText());
/*
 * Übernehmen der Klasse des CommandCenters in die dafür bestimmte Variable dieser Klasse. */

        
frmCC = 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() {
/* 
 * 'Konstruieren' der Business-Objects, die in diesem Task-Frame verwendet werden. */

      
structapplication_Language_BOC_Read =
                
new application_Language_BOC(frmCC, this);
      
structapplication_Language_BOC_Processed =
                
new application_Language_BOC (frmCC, this);
      
structJSBS_Language_BOC_Set =
                
new JSBS_Language_BOC_Set(frmCC, this);
    }
/* 
 * 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_TaskFrame) festgelegt. */

      setContentPane(get_pnl_Main());
/* 
 * Wenn in Ihrer Anwendung die Auswahl von Währungen möglich sein soll,
 * dann kommentieren Sie bitte die folgende Zeile aus und setzen die
 * Zeile oberhalb unter Kommentar. */

//      setContentPane(get_pnl_Main_With_Currency_Selection());
/*
 * Methode aufrufen die die Größe und Position des Fensters beim letzten Schließen
 * wieder herstellen.
 * Die dafür notwendige Datenstruktur und die aufgerufenen Methode ist in der
 * geerbten Basisklasse codiert. */

      setFramePosition();

/* Mouse-Listener zu der JTable, in der die auswählbaren Business-Objects angezeigt
 * werden, hinzufügen. Damit wird beim Anklicken einer Zeile der JTable die Nummer der
 * Zeile in das JTextField für die Auswahl (txt_Selection) übertragen.
 * Das Feststellen der Zeile und das Übertragen wird durch eine Methode in der
 * geerbten Basisklasse durchgeführt. */

      get_pnl_SelectionListTable().addMouseListener(
this);
    }
/* 
 * 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);
/* GUI-Elemente, bei denen eine Eingabe zwingend erforderlich ist ('Mandatory'),
 * festlegen. Die Festlegung hier ist 'stärker' als eine eventuelle Prüf-Regel
 * in der Datei 'DisplayStrings.xml'. */

      
structJSBS_EntryRules.addApplicationMandatoryGUIElement(get_txt_ISOLanguageCode());
/* DocumentListener konstruieren und anschließend die Methode der geerbten Klasse
 * aufrufen mit der die notwendigen Listener zu den GUI-Elementen hinzugefügt werden. */

      
structapplication_Language__DocumentListener =
          
new application_Language__DocumentListener(this);
      addListeners(
this.getContentPane(), structapplication_Language__DocumentListener);
/*
 * Border (Ränder der GUI-Elemente) einfärben damit sie besser sichtbar sind. */

/* Zuerst jenes Elemente vom Typ JPanel festlegen, das eingefärbt werden soll. */
      
arrayJPanelBordersToBeColored = new JPanel[1];
      
arrayJPanelBordersToBeColored[0] = get_pnl_Main();
/* 
 * Wenn in Ihrer Anwendung die Auswahl von Währungen möglich sein soll,
 * dann kommentieren Sie bitte die folgende Zeile aus und setzen die
 * Zeile oberhalb unter Kommentar. */

//      arrayJPanelBordersToBeColored[0] = get_pnl_Main_With_Currency_Selection();
/* 
 * Methode aufrufen mit der die 'Border' eingefärbt werden. */

      JSBS_GUIServices.processBorders(
this);
/*
 * Eintragen dieses Tasks in die Tabelle beim CommandCenter.
 * Der von der aufgerufenen Methode zurückgelieferte ID wird verwendet
 * wenn die angezeigten Daten verändert werden sollen.
 * Das Verändern der angezeigten Daten ist sinnvoll, wenn der Anwender einen
 * Datensatz aus der Liste auswählt (Methode 'getForUpdate(..)' in der Klasse
 * xxx__ActionHandler.
 * Der 2. Parameter beim Aufruf der Methode ist der interne Code dieser Klasse
 * in der Datei 'Tasks.xml'.
 * Der 3. Parameter ist eine Kurzfassung der angezeigten Daten;
 * diese Daten sind jetzt noch nicht vorhanden. */

      
dblCC_TaskID = frmCC.addOpenTaskFrame(this, "internal_Selection_Code", "");
/* 
 * Methode, die nach der 'Construction' der Klasse ausgeführt werden soll, aufrufen.
 * Eine nähere Beschreibung ist im Kommentar zu dieser Methode. */

      
application_Language__ActionHandler.processAfterConstruction(this);
/*
 * Methode aufrufen, die die Combobox für die Auswahl der Währung füllt.
 * Anschließend die gewählte Währung aus dem StartFrame (CommandCenter)
 * übernehmen.
 * Wenn in Ihrer Anwendung die Auswahl von Währungen möglich sein soll,
 * dann entfernen Sie bitte den Kommentar vor den folgenden Zeilen. */

//      frmCC.fillComboBoxWithCurrencies(get_combo_LanguageSelection());
//      JSBS_GUIServices.setJComboBoxItem(get_combo_LanguageSelection(),
//            frmCC.structJSBS_UniversalParameters.strPreferredCurrency,
//            frmCC.structJSBS_UniversalParameters, true);
    }
/* 
 * ******************************
 * Methoden zum 'Construct' (Initialisierung) der einzelnen GUI-Elemente
 * für die Bearbeitung der Variablen eines einzelnen BO.
 * */

    
protected JLabel get_lbl_ISOLanguageCode() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      
if (lbl_ISOLanguageCode == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        
try {
          
lbl_ISOLanguageCode = new JLabel();
          
lbl_ISOLanguageCode.setName("lbl_ISOLanguageCode");
          
lbl_ISOLanguageCode.setHorizontalAlignment(SwingConstants.TRAILING);
/* Mit folgender Code-Zeile wird das GUI-Element mit einem Text versehen.
 * Damit ist auf der GUI der Name des GUI-Elementes zu sehen solange noch kein
 * sprach-spezifischer Text definiert ist. */

          
lbl_ISOLanguageCode.setText("lbl_ISOLanguageCode");
        }
        
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_ISOLanguageCode in class application_Language.");
          Exc.printStackTrace();
        }
      }
      
return lbl_ISOLanguageCode;
    }

/* */
    protected JTextField get_txt_ISOLanguageCode() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      if (txt_ISOLanguageCode == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        try {
          txt_ISOLanguageCode = new JTextField();
          txt_ISOLanguageCode.setName("txt_ISOLanguageCode");
          txt_ISOLanguageCode.setHorizontalAlignment(SwingConstants.LEADING);
        }
        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 txt_ISOLanguageCode in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return txt_ISOLanguageCode;
    }
/* */
    
protected JLabel get_lbl_LanguageCodeForLabelling() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      
if (lbl_LanguageCodeForLabelling == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        
try {
          
lbl_LanguageCodeForLabelling = new JLabel();
          
lbl_LanguageCodeForLabelling.setName("lbl_LanguageCodeForLabelling");
          
lbl_LanguageCodeForLabelling.setHorizontalAlignment(SwingConstants.TRAILING);
/* Mit folgender Code-Zeile wird das GUI-Element mit einem Text versehen.
 * Damit ist auf der GUI der Name des GUI-Elementes zu sehen solange noch kein
 * sprach-spezifischer Text definiert ist. */

          
lbl_LanguageCodeForLabelling.setText("lbl_LanguageCodeForLabelling");
        }
        
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_LanguageCodeForLabelling in class application_Language.");
          Exc.printStackTrace();
        }
      }
      
return lbl_LanguageCodeForLabelling;
    }

/* */
    protected JComboBox get_combo_LanguageCodeForLabelling() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      if (combo_LanguageCodeForLabelling == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        try {
          combo_LanguageCodeForLabelling = new JComboBox();
          combo_LanguageCodeForLabelling.setName("combo_LanguageCodeForLabelling");
        }
        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 combo_LanguageCodeForLabelling in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return combo_LanguageCodeForLabelling;
    }
/* */
   
protected JLabel get_lbl_LanguageName() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      
if (lbl_LanguageName == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        
try {
          
lbl_LanguageName = new JLabel();
          
lbl_LanguageName.setName("lbl_LanguageName");
          
lbl_LanguageName.setHorizontalAlignment(SwingConstants.TRAILING);
/* Mit folgender Code-Zeile wird das GUI-Element mit einem Text versehen.
 * Damit ist auf der GUI der Name des GUI-Elementes zu sehen solange noch kein
 * sprach-spezifischer Text definiert ist. */

          
lbl_LanguageName.setText("lbl_LanguageName");
        }
        
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_LanguageName in class application_Language.");
          Exc.printStackTrace();
        }
      }
      
return lbl_LanguageName;
    }

/* */
    protected JTextField get_txt_LanguageName() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      if (txt_LanguageName == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        try {
          txt_LanguageName = new JTextField();
          txt_LanguageName.setName("txt_LanguageName");
          txt_LanguageName.setHorizontalAlignment(SwingConstants.LEADING);
        }
        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 txt_LanguageName in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return txt_LanguageName;
    }
/* */
    private JSBS_Dividerline get_dl_AboveMarkers() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      if (dl_AboveMarkers == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        try {
          dl_AboveMarkers = new JSBS_Dividerline();
          dl_AboveMarkers.setName("dl_AboveMarkers");
        }
        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 dl_AboveMarkers in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return dl_AboveMarkers;
    }
/* */
    protected JLabel get_lbl_MarkerHeadline() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      
if (lbl_MarkerHeadline == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        
try {
         
lbl_MarkerHeadline = new JLabel();
         
lbl_MarkerHeadline.setName("lbl_MarkerHeadline");
         
lbl_MarkerHeadline.setHorizontalAlignment(SwingConstants.LEADING);
/* Mit folgender Code-Zeile wird das GUI-Element mit einem Text versehen.
 * Damit ist auf der GUI der Name des GUI-Elementes zu sehen solange noch kein
 * sprach-spezifischer Text definiert ist. */

         
lbl_MarkerHeadline.setText("lbl_MarkerHeadline");
        }
        
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_MarkerHeadline in class application_Language.");
          Exc.printStackTrace();
        }
      }
      
return lbl_MarkerHeadline;
    }

/* */
    protected JCheckBox get_chk_Marker01() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      if (chk_Marker01 == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        try {
          chk_Marker01 = new JCheckBox();
          chk_Marker01.setName("chk_Marker01");
          chk_Marker01.setHorizontalAlignment(SwingConstants.TRAILING );
          chk_Marker01.setHorizontalTextPosition(SwingConstants.LEADING);
/* Mit folgender Code-Zeile wird das GUI-Element mit einem Text versehen.
 * Damit ist auf der GUI der Name des GUI-Elementes zu sehen solange noch kein
 * sprach-spezifischer Text definiert ist. */

          chk_Marker01.setText("chk_Marker01");
        }
        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 chk_Marker01 in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return chk_Marker01;
    }
/* */
    protected JCheckBox get_chk_Marker02() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      if (chk_Marker02 == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        try {
          chk_Marker02 = new JCheckBox();
          chk_Marker02.setName("chk_Marker02");
          chk_Marker02.setHorizontalAlignment(SwingConstants.TRAILING );
          chk_Marker02.setHorizontalTextPosition(SwingConstants.LEADING);
/* Mit folgender Code-Zeile wird das GUI-Element mit einem Text versehen.
 * Damit ist auf der GUI der Name des GUI-Elementes zu sehen solange noch kein
 * sprach-spezifischer Text definiert ist. */

          chk_Marker02.setText("chk_Marker02");
        }
        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 chk_Marker02 in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return chk_Marker02;
    }
/* */
    protected JCheckBox get_chk_Marker03() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      if (chk_Marker03 == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        try {
          chk_Marker03 = new JCheckBox();
          chk_Marker03.setName("chk_Marker03");
          chk_Marker03.setHorizontalAlignment(SwingConstants.TRAILING );
          chk_Marker03.setHorizontalTextPosition(SwingConstants.LEADING);
/* Mit folgender Code-Zeile wird das GUI-Element mit einem Text versehen.
 * Damit ist auf der GUI der Name des GUI-Elementes zu sehen solange noch kein
 * sprach-spezifischer Text definiert ist. */

          chk_Marker03.setText("chk_Marker03");
        }
        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 chk_Marker03 in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return chk_Marker03;
    }
/* */
    protected JCheckBox get_chk_Marker04() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      if (chk_Marker04 == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        try {
          chk_Marker04 = new JCheckBox();
          chk_Marker04.setName("chk_Marker04");
          chk_Marker04.setHorizontalAlignment(SwingConstants.TRAILING );
          chk_Marker04.setHorizontalTextPosition(SwingConstants.LEADING);
/* Mit folgender Code-Zeile wird das GUI-Element mit einem Text versehen.
 * Damit ist auf der GUI der Name des GUI-Elementes zu sehen solange noch kein
 * sprach-spezifischer Text definiert ist. */

          chk_Marker04.setText("chk_Marker04");
        }
        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 chk_Marker04 in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return chk_Marker04;
    }
/* */
    protected JCheckBox get_chk_Marker05() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      if (chk_Marker05 == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        try {
          chk_Marker05 = new JCheckBox();
          chk_Marker05.setName("chk_Marker05");
          chk_Marker05.setHorizontalAlignment(SwingConstants.TRAILING );
          chk_Marker05.setHorizontalTextPosition(SwingConstants.LEADING);
/* Mit folgender Code-Zeile wird das GUI-Element mit einem Text versehen.
 * Damit ist auf der GUI der Name des GUI-Elementes zu sehen solange noch kein
 * sprach-spezifischer Text definiert ist. */

          chk_Marker05.setText("chk_Marker05");
        }
        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 chk_Marker05 in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return chk_Marker05;
    }
/* */
    protected JCheckBox get_chk_Marker06() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      if (chk_Marker06 == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        try {
          chk_Marker06 = new JCheckBox();
          chk_Marker06.setName("chk_Marker06");
          chk_Marker06.setHorizontalAlignment(SwingConstants.TRAILING );
          chk_Marker06.setHorizontalTextPosition(SwingConstants.LEADING);
/* Mit folgender Code-Zeile wird das GUI-Element mit einem Text versehen.
 * Damit ist auf der GUI der Name des GUI-Elementes zu sehen solange noch kein
 * sprach-spezifischer Text definiert ist. */

          chk_Marker06.setText("chk_Marker06");
        }
        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 chk_Marker06 in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return chk_Marker06;
    }
/* */
    protected JCheckBox get_chk_Marker07() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      if (chk_Marker07 == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        try {
          chk_Marker07 = new JCheckBox();
          chk_Marker07.setName("chk_Marker07");
          chk_Marker07.setHorizontalAlignment(SwingConstants.TRAILING );
          chk_Marker07.setHorizontalTextPosition(SwingConstants.LEADING);
/* Mit folgender Code-Zeile wird das GUI-Element mit einem Text versehen.
 * Damit ist auf der GUI der Name des GUI-Elementes zu sehen solange noch kein
 * sprach-spezifischer Text definiert ist. */

          chk_Marker07.setText("chk_Marker07");
        }
        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 chk_Marker07 in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return chk_Marker07;
    }
/* */
    protected JCheckBox get_chk_Marker08() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      if (chk_Marker08 == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        try {
          chk_Marker08 = new JCheckBox();
          chk_Marker08.setName("chk_Marker08");
          chk_Marker08.setHorizontalAlignment(SwingConstants.TRAILING );
          chk_Marker08.setHorizontalTextPosition(SwingConstants.LEADING);
/* Mit folgender Code-Zeile wird das GUI-Element mit einem Text versehen.
 * Damit ist auf der GUI der Name des GUI-Elementes zu sehen solange noch kein
 * sprach-spezifischer Text definiert ist. */

          chk_Marker08.setText("chk_Marker08");
        }
        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 chk_Marker08 in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return chk_Marker08;
    }
/* */
    protected JCheckBox get_chk_Marker09() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      if (chk_Marker09 == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        try {
          chk_Marker09 = new JCheckBox();
          chk_Marker09.setName("chk_Marker09");
          chk_Marker09.setHorizontalAlignment(SwingConstants.TRAILING );
          chk_Marker09.setHorizontalTextPosition(SwingConstants.LEADING);
/* Mit folgender Code-Zeile wird das GUI-Element mit einem Text versehen.
 * Damit ist auf der GUI der Name des GUI-Elementes zu sehen solange noch kein
 * sprach-spezifischer Text definiert ist. */

          chk_Marker09.setText("chk_Marker09");
        }
        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 chk_Marker09 in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return chk_Marker09;
    }
/* */
    protected JCheckBox get_chk_Marker10() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      if (chk_Marker10 == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        try {
          chk_Marker10 = new JCheckBox();
          chk_Marker10.setName("chk_Marker10");
          chk_Marker10.setHorizontalAlignment(SwingConstants.TRAILING );
          chk_Marker10.setHorizontalTextPosition(SwingConstants.LEADING);
/* Mit folgender Code-Zeile wird das GUI-Element mit einem Text versehen.
 * Damit ist auf der GUI der Name des GUI-Elementes zu sehen solange noch kein
 * sprach-spezifischer Text definiert ist. */

          chk_Marker10.setText("chk_Marker10");
        }
        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 chk_Marker10 in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return chk_Marker10;
    }
/* */
    protected JCheckBox get_chk_Marker11() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      if (chk_Marker11 == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        try {
          chk_Marker11 = new JCheckBox();
          chk_Marker11.setName("chk_Marker11");
          chk_Marker11.setHorizontalAlignment(SwingConstants.TRAILING );
          chk_Marker11.setHorizontalTextPosition(SwingConstants.LEADING);
/* Mit folgender Code-Zeile wird das GUI-Element mit einem Text versehen.
 * Damit ist auf der GUI der Name des GUI-Elementes zu sehen solange noch kein
 * sprach-spezifischer Text definiert ist. */

          chk_Marker11.setText("chk_Marker11");
        }
        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 chk_Marker11 in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return chk_Marker11;
    }
/* */
    protected JCheckBox get_chk_Marker12() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      if (chk_Marker12 == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        try {
          chk_Marker12 = new JCheckBox();
          chk_Marker12.setName("chk_Marker12");
          chk_Marker12.setHorizontalAlignment(SwingConstants.TRAILING );
          chk_Marker12.setHorizontalTextPosition(SwingConstants.LEADING);
/* Mit folgender Code-Zeile wird das GUI-Element mit einem Text versehen.
 * Damit ist auf der GUI der Name des GUI-Elementes zu sehen solange noch kein
 * sprach-spezifischer Text definiert ist. */

          chk_Marker12.setText("chk_Marker12");
        }
        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 chk_Marker12 in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return chk_Marker12;
    }
/* */
    protected JCheckBox get_chk_Marker13() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      if (chk_Marker13 == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        try {
          chk_Marker13 = new JCheckBox();
          chk_Marker13.setName("chk_Marker13");
          chk_Marker13.setHorizontalAlignment(SwingConstants.TRAILING );
          chk_Marker13.setHorizontalTextPosition(SwingConstants.LEADING);
/* Mit folgender Code-Zeile wird das GUI-Element mit einem Text versehen.
 * Damit ist auf der GUI der Name des GUI-Elementes zu sehen solange noch kein
 * sprach-spezifischer Text definiert ist. */

          chk_Marker13.setText("chk_Marker13");
        }
        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 chk_Marker13 in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return chk_Marker13;
    }
/* */
    protected JCheckBox get_chk_Marker14() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      if (chk_Marker14 == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        try {
          chk_Marker14 = new JCheckBox();
          chk_Marker14.setName("chk_Marker14");
          chk_Marker14.setHorizontalAlignment(SwingConstants.TRAILING );
          chk_Marker14.setHorizontalTextPosition(SwingConstants.LEADING);
/* Mit folgender Code-Zeile wird das GUI-Element mit einem Text versehen.
 * Damit ist auf der GUI der Name des GUI-Elementes zu sehen solange noch kein
 * sprach-spezifischer Text definiert ist. */

          chk_Marker14.setText("chk_Marker14");
        }
        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 chk_Marker14 in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return chk_Marker14;
    }
/* */
    protected JCheckBox get_chk_Marker15() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      if (chk_Marker15 == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        try {
          chk_Marker15 = new JCheckBox();
          chk_Marker15.setName("chk_Marker15");
          chk_Marker15.setHorizontalAlignment(SwingConstants.TRAILING );
          chk_Marker15.setHorizontalTextPosition(SwingConstants.LEADING);
/* Mit folgender Code-Zeile wird das GUI-Element mit einem Text versehen.
 * Damit ist auf der GUI der Name des GUI-Elementes zu sehen solange noch kein
 * sprach-spezifischer Text definiert ist. */

          chk_Marker15.setText("chk_Marker15");
        }
        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 chk_Marker15 in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return chk_Marker15;
    }
/* */
    protected JCheckBox get_chk_Marker16() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      if (chk_Marker16 == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        try {
          chk_Marker16 = new JCheckBox();
          chk_Marker16.setName("chk_Marker16");
          chk_Marker16.setHorizontalAlignment(SwingConstants.TRAILING );
          chk_Marker16.setHorizontalTextPosition(SwingConstants.LEADING);
/* Mit folgender Code-Zeile wird das GUI-Element mit einem Text versehen.
 * Damit ist auf der GUI der Name des GUI-Elementes zu sehen solange noch kein
 * sprach-spezifischer Text definiert ist. */

          chk_Marker16.setText("chk_Marker16");
        }
        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 chk_Marker16 in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return chk_Marker16;
    }
/* */
    protected JCheckBox get_chk_Marker17() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      if (chk_Marker17 == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        try {
          chk_Marker17 = new JCheckBox();
          chk_Marker17.setName("chk_Marker17");
          chk_Marker17.setHorizontalAlignment(SwingConstants.TRAILING );
          chk_Marker17.setHorizontalTextPosition(SwingConstants.LEADING);
/* Mit folgender Code-Zeile wird das GUI-Element mit einem Text versehen.
 * Damit ist auf der GUI der Name des GUI-Elementes zu sehen solange noch kein
 * sprach-spezifischer Text definiert ist. */

          chk_Marker17.setText("chk_Marker17");
        }
        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 chk_Marker17 in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return chk_Marker17;
    }
/* */
    protected JCheckBox get_chk_Marker18() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      if (chk_Marker18 == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        try {
          chk_Marker18 = new JCheckBox();
          chk_Marker18.setName("chk_Marker18");
          chk_Marker18.setHorizontalAlignment(SwingConstants.TRAILING );
          chk_Marker18.setHorizontalTextPosition(SwingConstants.LEADING);
/* Mit folgender Code-Zeile wird das GUI-Element mit einem Text versehen.
 * Damit ist auf der GUI der Name des GUI-Elementes zu sehen solange noch kein
 * sprach-spezifischer Text definiert ist. */

          chk_Marker18.setText("chk_Marker18");
        }
        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 chk_Marker18 in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return chk_Marker18;
    }
/* */
    protected JCheckBox get_chk_Marker19() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      if (chk_Marker19 == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        try {
          chk_Marker19 = new JCheckBox();
          chk_Marker19.setName("chk_Marker19");
          chk_Marker19.setHorizontalAlignment(SwingConstants.TRAILING );
          chk_Marker19.setHorizontalTextPosition(SwingConstants.LEADING);
/* Mit folgender Code-Zeile wird das GUI-Element mit einem Text versehen.
 * Damit ist auf der GUI der Name des GUI-Elementes zu sehen solange noch kein
 * sprach-spezifischer Text definiert ist. */

          chk_Marker19.setText("chk_Marker19");
        }
        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 chk_Marker19 in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return chk_Marker19;
    }
/* */
    protected JCheckBox get_chk_Marker20() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      if (chk_Marker20 == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        try {
          chk_Marker20 = new JCheckBox();
          chk_Marker20.setName("chk_Marker20");
          chk_Marker20.setHorizontalAlignment(SwingConstants.TRAILING );
          chk_Marker20.setHorizontalTextPosition(SwingConstants.LEADING);
/* Mit folgender Code-Zeile wird das GUI-Element mit einem Text versehen.
 * Damit ist auf der GUI der Name des GUI-Elementes zu sehen solange noch kein
 * sprach-spezifischer Text definiert ist. */

          chk_Marker20.setText("chk_Marker20");
        }
        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 chk_Marker20 in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return chk_Marker20;
    }
/* */
/* 
 * ******************************
 * Methoden zum 'Construct' (Initialisierung) der GUI-Elemente
 * für die Auswahl der Anzeige in der Auswahlliste.
 * */

    
protected JLabel get_lbl_SelectLanguage() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      
if (lbl_SelectLanguage == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        
try {
         
lbl_SelectLanguage = new JLabel();
         
lbl_SelectLanguage.setName("lbl_SelectLanguage");
         
lbl_SelectLanguage.setHorizontalAlignment(SwingConstants.TRAILING);
/* Mit folgender Code-Zeile wird das GUI-Element mit einem Text versehen.
 * Damit ist auf der GUI der Name des GUI-Elementes zu sehen solange noch kein
 * sprach-spezifischer Text definiert ist. */

         
lbl_SelectLanguage.setText("lbl_SelectLanguage");
        }
        
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_SelectLanguage in class application_Language.");
          Exc.printStackTrace();
        }
      }
      
return lbl_SelectLanguage;
    }
/* */
    
protected JComboBox get_combo_SelectLanguage() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      
if (combo_SelectLanguage == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        
try {
         
combo_SelectLanguage = new JComboBox();
         
combo_SelectLanguage.setName("combo_SelectLanguage");
        }
        
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 combo_SelectLanguage in class application_Language.");
          Exc.printStackTrace();
        }
      }
      
return combo_SelectLanguage;
    }

/* */
/* 
 * ******************************
 * 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_ISOLanguageCode = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_lbl_ISOLanguageCode.gridx = 0;
          gbc_lbl_ISOLanguageCode.gridy = 0;
          gbc_lbl_ISOLanguageCode.weightx = 1;
          gbc_lbl_ISOLanguageCode.fill = GridBagConstraints.HORIZONTAL;
          gbc_lbl_ISOLanguageCode.anchor = GridBagConstraints.LINE_END;
          gbc_lbl_ISOLanguageCode.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_lbl_ISOLanguageCode(), gbc_lbl_ISOLanguageCode);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_txt_ISOLanguageCode = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_txt_ISOLanguageCode.gridx = 1;
          gbc_txt_ISOLanguageCode.gridy = 0;
          gbc_txt_ISOLanguageCode.weightx = 1;
          gbc_txt_ISOLanguageCode.fill = GridBagConstraints.HORIZONTAL;
          gbc_txt_ISOLanguageCode.anchor = GridBagConstraints.LINE_START;
          gbc_txt_ISOLanguageCode.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_txt_ISOLanguageCode(), gbc_txt_ISOLanguageCode);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_lbl_LanguageCodeForLabelling = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_lbl_LanguageCodeForLabelling.gridx = 0;
          gbc_lbl_LanguageCodeForLabelling.gridy = 1;
          gbc_lbl_LanguageCodeForLabelling.weightx = 1;
          gbc_lbl_LanguageCodeForLabelling.fill = GridBagConstraints.HORIZONTAL;
          gbc_lbl_LanguageCodeForLabelling.anchor = GridBagConstraints.LINE_END;
          gbc_lbl_LanguageCodeForLabelling.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_lbl_LanguageCodeForLabelling(), gbc_lbl_LanguageCodeForLabelling);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_combo_LanguageCodeForLabelling = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_combo_LanguageCodeForLabelling.gridx = 1;
          gbc_combo_LanguageCodeForLabelling.gridy = 1;
          gbc_combo_LanguageCodeForLabelling.weightx = 1;
          gbc_combo_LanguageCodeForLabelling.fill = GridBagConstraints.HORIZONTAL;
          gbc_combo_LanguageCodeForLabelling.anchor = GridBagConstraints.LINE_START;
          gbc_combo_LanguageCodeForLabelling.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_combo_LanguageCodeForLabelling(), gbc_combo_LanguageCodeForLabelling);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_lbl_LanguageName = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_lbl_LanguageName.gridx = 2;
          gbc_lbl_LanguageName.gridy = 1;
          gbc_lbl_LanguageName.weightx = 1;
          gbc_lbl_LanguageName.fill = GridBagConstraints.HORIZONTAL;
          gbc_lbl_LanguageName.anchor = GridBagConstraints.LINE_END;
          gbc_lbl_LanguageName.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_lbl_LanguageName(), gbc_lbl_LanguageName);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_txt_LanguageName = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_txt_LanguageName.gridx = 3;
          gbc_txt_LanguageName.gridy = 1;
          gbc_txt_LanguageName.weightx = 1;
          gbc_txt_LanguageName.fill = GridBagConstraints.HORIZONTAL;
          gbc_txt_LanguageName.anchor = GridBagConstraints.LINE_START;
          gbc_txt_LanguageName.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_txt_LanguageName(), gbc_txt_LanguageName);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_dl_AboveMarkers = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_dl_AboveMarkers.gridx = 0;
          gbc_dl_AboveMarkers.gridy = 2;
          gbc_dl_AboveMarkers.gridwidth = 4;
          gbc_dl_AboveMarkers.weightx = 1;
          gbc_dl_AboveMarkers.fill = GridBagConstraints.HORIZONTAL;
          gbc_dl_AboveMarkers.anchor = GridBagConstraints.CENTER;
          gbc_dl_AboveMarkers.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_dl_AboveMarkers(), gbc_dl_AboveMarkers);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_lbl_MarkerHeadline = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_lbl_MarkerHeadline.gridx = 0;
          gbc_lbl_MarkerHeadline.gridy = 3;
          gbc_lbl_MarkerHeadline.gridwidth = 4;
          gbc_lbl_MarkerHeadline.weightx = 1;
          gbc_lbl_MarkerHeadline.fill = GridBagConstraints.HORIZONTAL;
          gbc_lbl_MarkerHeadline.anchor = GridBagConstraints.LINE_START;
          gbc_lbl_MarkerHeadline.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_lbl_MarkerHeadline(), gbc_lbl_MarkerHeadline);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_chk_Marker01 = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_chk_Marker01.gridx = 0;
          gbc_chk_Marker01.gridy = 4;
          gbc_chk_Marker01.weightx = 1;
          gbc_chk_Marker01.fill = GridBagConstraints.HORIZONTAL;
          gbc_chk_Marker01.anchor = GridBagConstraints.LINE_END;
          gbc_chk_Marker01.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_chk_Marker01(), gbc_chk_Marker01);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_chk_Marker02 = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_chk_Marker02.gridx = 1;
          gbc_chk_Marker02.gridy = 4;
          gbc_chk_Marker02.weightx = 1;
          gbc_chk_Marker02.fill = GridBagConstraints.HORIZONTAL;
          gbc_chk_Marker02.anchor = GridBagConstraints.LINE_END;
          gbc_chk_Marker02.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_chk_Marker02(), gbc_chk_Marker02);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_chk_Marker03 = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_chk_Marker03.gridx = 2;
          gbc_chk_Marker03.gridy = 4;
          gbc_chk_Marker03.weightx = 1;
          gbc_chk_Marker03.fill = GridBagConstraints.HORIZONTAL;
          gbc_chk_Marker03.anchor = GridBagConstraints.LINE_END;
          gbc_chk_Marker03.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_chk_Marker03(), gbc_chk_Marker03);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_chk_Marker04 = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_chk_Marker04.gridx = 3;
          gbc_chk_Marker04.gridy = 4;
          gbc_chk_Marker04.weightx = 1;
          gbc_chk_Marker04.fill = GridBagConstraints.HORIZONTAL;
          gbc_chk_Marker04.anchor = GridBagConstraints.LINE_END;
          gbc_chk_Marker04.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_chk_Marker04(), gbc_chk_Marker04);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_chk_Marker05 = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_chk_Marker05.gridx = 0;
          gbc_chk_Marker05.gridy = 5;
          gbc_chk_Marker05.weightx = 1;
          gbc_chk_Marker05.fill = GridBagConstraints.HORIZONTAL;
          gbc_chk_Marker05.anchor = GridBagConstraints.LINE_END;
          gbc_chk_Marker05.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_chk_Marker05(), gbc_chk_Marker05);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_chk_Marker06 = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_chk_Marker06.gridx = 1;
          gbc_chk_Marker06.gridy = 5;
          gbc_chk_Marker06.weightx = 1;
          gbc_chk_Marker06.fill = GridBagConstraints.HORIZONTAL;
          gbc_chk_Marker06.anchor = GridBagConstraints.LINE_END;
          gbc_chk_Marker06.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_chk_Marker06(), gbc_chk_Marker06);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_chk_Marker07 = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_chk_Marker07.gridx = 2;
          gbc_chk_Marker07.gridy = 5;
          gbc_chk_Marker07.weightx = 1;
          gbc_chk_Marker07.fill = GridBagConstraints.HORIZONTAL;
          gbc_chk_Marker07.anchor = GridBagConstraints.LINE_END;
          gbc_chk_Marker07.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_chk_Marker07(), gbc_chk_Marker07);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_chk_Marker08 = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_chk_Marker08.gridx = 3;
          gbc_chk_Marker08.gridy = 5;
          gbc_chk_Marker08.weightx = 1;
          gbc_chk_Marker08.fill = GridBagConstraints.HORIZONTAL;
          gbc_chk_Marker08.anchor = GridBagConstraints.LINE_END;
          gbc_chk_Marker08.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_chk_Marker08(), gbc_chk_Marker08);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_chk_Marker09 = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_chk_Marker09.gridx = 0;
          gbc_chk_Marker09.gridy = 6;
          gbc_chk_Marker09.weightx = 1;
          gbc_chk_Marker09.fill = GridBagConstraints.HORIZONTAL;
          gbc_chk_Marker09.anchor = GridBagConstraints.LINE_END;
          gbc_chk_Marker09.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_chk_Marker09(), gbc_chk_Marker09);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_chk_Marker10 = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_chk_Marker10.gridx = 1;
          gbc_chk_Marker10.gridy = 6;
          gbc_chk_Marker10.weightx = 1;
          gbc_chk_Marker10.fill = GridBagConstraints.HORIZONTAL;
          gbc_chk_Marker10.anchor = GridBagConstraints.LINE_END;
          gbc_chk_Marker10.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_chk_Marker10(), gbc_chk_Marker10);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_chk_Marker11 = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_chk_Marker11.gridx = 2;
          gbc_chk_Marker11.gridy = 6;
          gbc_chk_Marker11.weightx = 1;
          gbc_chk_Marker11.fill = GridBagConstraints.HORIZONTAL;
          gbc_chk_Marker11.anchor = GridBagConstraints.LINE_END;
          gbc_chk_Marker11.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_chk_Marker11(), gbc_chk_Marker11);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_chk_Marker12 = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_chk_Marker12.gridx = 3;
          gbc_chk_Marker12.gridy = 6;
          gbc_chk_Marker12.weightx = 1;
          gbc_chk_Marker12.fill = GridBagConstraints.HORIZONTAL;
          gbc_chk_Marker12.anchor = GridBagConstraints.LINE_END;
          gbc_chk_Marker12.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_chk_Marker12(), gbc_chk_Marker12);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_chk_Marker13 = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_chk_Marker13.gridx = 0;
          gbc_chk_Marker13.gridy = 7;
          gbc_chk_Marker13.weightx = 1;
          gbc_chk_Marker13.fill = GridBagConstraints.HORIZONTAL;
          gbc_chk_Marker13.anchor = GridBagConstraints.LINE_END;
          gbc_chk_Marker13.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_chk_Marker13(), gbc_chk_Marker13);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_chk_Marker14 = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_chk_Marker14.gridx = 1;
          gbc_chk_Marker14.gridy = 7;
          gbc_chk_Marker14.weightx = 1;
          gbc_chk_Marker14.fill = GridBagConstraints.HORIZONTAL;
          gbc_chk_Marker14.anchor = GridBagConstraints.LINE_END;
          gbc_chk_Marker14.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_chk_Marker14(), gbc_chk_Marker14);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_chk_Marker15 = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_chk_Marker15.gridx = 2;
          gbc_chk_Marker15.gridy = 7;
          gbc_chk_Marker15.weightx = 1;
          gbc_chk_Marker15.fill = GridBagConstraints.HORIZONTAL;
          gbc_chk_Marker15.anchor = GridBagConstraints.LINE_END;
          gbc_chk_Marker15.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_chk_Marker15(), gbc_chk_Marker15);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_chk_Marker16 = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_chk_Marker16.gridx = 3;
          gbc_chk_Marker16.gridy = 7;
          gbc_chk_Marker16.weightx = 1;
          gbc_chk_Marker16.fill = GridBagConstraints.HORIZONTAL;
          gbc_chk_Marker16.anchor = GridBagConstraints.LINE_END;
          gbc_chk_Marker16.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_chk_Marker16(), gbc_chk_Marker16);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_chk_Marker17 = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_chk_Marker17.gridx = 0;
          gbc_chk_Marker17.gridy = 8;
          gbc_chk_Marker17.weightx = 1;
          gbc_chk_Marker17.fill = GridBagConstraints.HORIZONTAL;
          gbc_chk_Marker17.anchor = GridBagConstraints.LINE_END;
          gbc_chk_Marker17.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_chk_Marker17(), gbc_chk_Marker17);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_chk_Marker18 = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_chk_Marker18.gridx = 1;
          gbc_chk_Marker18.gridy = 8;
          gbc_chk_Marker18.weightx = 1;
          gbc_chk_Marker18.fill = GridBagConstraints.HORIZONTAL;
          gbc_chk_Marker18.anchor = GridBagConstraints.LINE_END;
          gbc_chk_Marker18.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_chk_Marker18(), gbc_chk_Marker18);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_chk_Marker19 = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_chk_Marker19.gridx = 2;
          gbc_chk_Marker19.gridy = 8;
          gbc_chk_Marker19.weightx = 1;
          gbc_chk_Marker19.fill = GridBagConstraints.HORIZONTAL;
          gbc_chk_Marker19.anchor = GridBagConstraints.LINE_END;
          gbc_chk_Marker19.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_chk_Marker19(), gbc_chk_Marker19);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_chk_Marker20 = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_chk_Marker20.gridx = 3;
          gbc_chk_Marker20.gridy = 8;
          gbc_chk_Marker20.weightx = 1;
          gbc_chk_Marker20.fill = GridBagConstraints.HORIZONTAL;
          gbc_chk_Marker20.anchor = GridBagConstraints.LINE_END;
          gbc_chk_Marker20.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_chk_Marker20(), gbc_chk_Marker20);
        }
        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 pnl_DetailFields in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return pnl_DetailFields;
    }
/* */
/* 
 * ******************************
 * Methode zum 'Construct' (Initialisierung) des Panels mit den GUI-Elementen zum Filtern,
 * welche BO (Datensätze) in der angezeigten Liste für die Auswahl enthalten sind.
 * Diese Methode überschreibt das 'Construct' des JPanel (mit gleichem Namen) in der
 * geerbten Methode aus der Klasse JSBS_TaskFrame.
 * **********
 * Wenn in der Benutzeroberfläche (GUI) dieses Teilprogramms (Tasks) keine Auswahlmöglichkeiten
 * für Filterkriterien vorgesehen sind dann löschen Sie bitte diese Methode.
 * */
    protected JPanel get_pnl_ListFields() {
/* Zuerst Prüfen, ob die Variable bereits 'constructed' (initialisiert) ist. */
      if (pnl_ListFields == null) {
/* Variable noch nicht 'constructed'; Code für die Initialisierung folgt. */
        try {
/* Das 'Konstruieren' des GUI-Elements ist in der geerbten Klasse definiert.
 * Dort ist auch die JTable für die Anzeige der Liste der ausgewählten Datensätze und
 * das Eingabefeld für die Auswahl definiert. */

          super.get_pnl_ListFields();
/* 
 * Die folgenden Anweisungen platzieren GUI-Elemente in den 'Feldern' des JPanel. */
/* Zuerst wird eine Variable für die Platzierungs-Eigenschaften erstellt. */
          GridBagConstraints gbc_lbl_SelectLanguage = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_lbl_SelectLanguage.gridx = 0;
          gbc_lbl_SelectLanguage.gridy = 0;
          gbc_lbl_SelectLanguage.weightx = 1;
          gbc_lbl_SelectLanguage.fill = GridBagConstraints.HORIZONTAL;
          gbc_lbl_SelectLanguage.anchor = GridBagConstraints.LINE_END;
          gbc_lbl_SelectLanguage.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_ListFields().add(get_lbl_SelectLanguage(), gbc_lbl_SelectLanguage);
/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_combo_SelectLanguage = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_combo_SelectLanguage.gridx = 1;
          gbc_combo_SelectLanguage.gridy = 0;
          gbc_combo_SelectLanguage.gridwidth = 2;
          gbc_combo_SelectLanguage.weightx = 1;
          gbc_combo_SelectLanguage.fill = GridBagConstraints.HORIZONTAL;
          gbc_combo_SelectLanguage.anchor = GridBagConstraints.LINE_START;
          gbc_combo_SelectLanguage.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_ListFields().add(get_combo_SelectLanguage(), gbc_combo_SelectLanguage);
        }
        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 pnl_ListFields in class application_Language.");
          Exc.printStackTrace();
        }
      }
      return pnl_ListFields;
    }
/*
 * METHODE die ausgeführt wird wenn das Fenster geschlossen wird.
 * In dieser Methode wird:
 * * Die Spaltenbreiten der JTable(s) in die entsprechende (in der geerbten Klasse
 *   definierten) Datenstruktur übertragen damit sie auf der Datenbank gespeichert
 *   werden können.
 * * Die Methode zur Prüfung, ob Daten geändert aber nicht gespeichert wurden,
 *   aufgerufen.
 * * Zuletzt wird die Methode gleichen Namens in der geerbten Klasse aufgerufen;
 *   in dieser wird der für alle Task-Frames gleichbleibende Code ausgeführt. */
    public void windowClosing(WindowEvent e) {
/*
 * 'Art', welche Verarbeitung nach dem Anklicken des 'Close'-Icons des Fensters
 * ausgeführt wird, verändern.
 * Nur so kann im Code abgefragt werden, ob das Fenster wirklich geschlossen werden
 * soll. */
      this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
/*
 * Methode aufrufen, die prüft ob die Eingabe-Daten geändert aber nicht gespeichert
 * wurden. Diese Methode liefert nur dann 'false' zurück wenn der Anwender ungespeicherte
 * Daten noch prüfen und eventuell korrigieren will. */
      if (application_Language__ActionHandler.checkForUnstoredChanges(this)) {
/* Frame kann geschlossen werden; gleichnamige Methode der geerbten Klasse den Code, der
 * für alle Task-Frames gleich ist, ausführen lassen. */
        super.windowClosing(e);
      }
      else {
/* Anwender hat entschieden, dass das Fenster nicht geschlossen werden soll.
 * Fenster wieder sichtbar machen. */
        this.setVisible(true);
      }
    }
/*
 * METHODE die ausgeführt wird wenn sich der Status eines GUI-Elementes, dem
 * ein 'ItemListener' hinzugefügt ist, ändert. */
    public void itemStateChanged(ItemEvent e) {
/*
 * Zur Verarbeitung des Ereignisses die Methode in der zu dieser Klasse gehörenden
 * 'DocumentListener'-Klasse aufrufen.
 * Grund für die Implementierung des Codes im 'DocumentListener' ist, dass im
 * 'DocumentListener' auch alle Eingabe-Prüfungen und das Aktivieren/Deaktivieren von
 * Schaltflächen implementiert ist. */
      structapplication_Language__DocumentListener.itemStateChanged(e);
    }
/*
 * METHODE die ausgeführt wird wenn der Rand einer Spalte verschoben wird.
 * Dieses Ereignis tritt dann auf, wenn der Anwender die Breite der Spalten
 * einer JTable verändert.
 * In dieser Methode werden dann die neuen Spaltenbreiten auf die Datenstruktur,
 * die beim Schliessen des Fensters auf der Datenbank gespeichert wird, übernommen. */
    public void columnMarginChanged(ChangeEvent e) {
/*
 * Weil der Wert von 'bolInhibitColumnMarginChangeStore' auch von parallel laufenden
 * Methoden verändert werden kann wird der gesamte Code in der Methode 'synchronized'
 * ausgeführt. */
      
synchronized (this) {
/*
 * Prüfen, ob der Code in dieser Methode überhaupt ausgeführt werden soll.
 * Die Bedeutung von 'bolInhibitColumnMarginChangeStore' ist bei der Definition
 * der Variable (in der geerbten Klasse 'JSBS_TaskFrame') beschrieben. */
        
if (bolInhibitColumnMarginChangeStore) return;
/*
 * Gleichnamige Methode der geerbten Klasse aufrufen.
 * Darin werden die Spaltenbreiten der JTable 'pnl_SelectionListTable' (in der geerbten
 * Methode definiert) auf das BO und die Variable
 * 'structJSBS_FramePosition_BOC.ColumnWidthArray01' (ebenfalls in der geerbten Klasse
 * definiert) übertragen. */
        super.columnMarginChanged(e);
      }
    }
/*
 * METHODE die ausgeführt wird wenn ein Klick mit einer Maustaste
 * auf ein GUI-Element, dem der ActionListener hinzugefügt wurde, erfolgt. */
    public void actionPerformed(ActionEvent e) {
/*
 * Gleichnamige Methode in der geerbten Basisklasse aufrufen.
 * Damit werden die 'geerbten' Verarbeitungen (die für alle Anwendungsprogramme
 * gleich sein können) zuerst ausgeführt. */
      super.actionPerformed(e);
/*
 * Weitere Verarbeitung in einer eigenen Klasse mit statischen Methoden. */
      application_Language__ActionHandler.handleEvent(this, e);
    }
}

zum Inhaltsverzeichnis

Muster-Code für die Klasse für den ActionHandler

Welche Platzhalter durch Bezeichnungen des eigentlichen Projektes zu ersetzen sind finden Sie im Abschnitt
Anleitung zur Adaptierung in allen Klassen und
Anleitung zur Adaptierung in der Klasse für den ActionHandler .

package application_package.client;
/*
 * Package mit den Klassen zum Bearbeiten von Events. */

import java.awt.event.*;
/*
 * Package mit den Klassen der GUI-Elemente. */

import java.awt.*;
import javax.swing.*;
/*
 * Package und Klassen mit den Status-Codes zum Prüfen auf erfolgreiche Durchführung oder
 * Fehler bei einer Datenbank-Operation. */

import js_base.bo.JSBS_BO;
/*
 * Package und Klassen mit Methoden zur Verarbeitung von GUI-Elementen, z.B. zum Auslesen von
 * Werten aus GUI-Elementen bzw. Anzeigen von Werten in GUI-Elementen oder Anzeigen von
 * Fehler- und Warnungs-Hinweisen. */

import js_base.frame.*;
/*
 * Package und Klassen mit Methoden zur Formatierung von numerischen Werten. */

import js_base.utilities.*;
/*
 * Package und Klasse für zu bearbeitende Business-Objects. */

import js_base.bo.*;
import application_package.boc.*;
/**
 *
 * @author name[at]company
 * @date 20xx-xx-xx
 *
 * @description
 *  Klasse mit statischen Methoden die ausgeführt werden wenn ein 'event'
 *  (z.B. der Klick einer Maustaste auf eine Schaltfläche) aufgetreten ist.
 *  Detail-Dokumentation finden Sie bei den einzelnen Methoden.
 *
 * @change-log
 * when         who               why
 * --------------------------------------------------------
 *
 */

public class application_Language__ActionHandler {
/*
 * Name der Klasse als Konstante festlegen weil bei statischen Methoden der
 * Name der Klasse nicht über 'getClass().getName() ermittelt werden kann. */
    private static String CONST_ClassName = "application_package.client.application_Language__ActionHandler";
/*
 * Methode die ermittelt, bei welchem GUI-Element ein 'ActionEvent' ausgelöst wurde
 * und die entsprechende Methode aufruft. */
    protected static void handleEvent(application_Language parmTF,
                                   ActionEvent parmActionEvent) {
/* Zuerst wird die 'Identifikation' des GUI-Element aus dem ActionEvent extrahiert. */
      String cmd = parmActionEvent.getActionCommand().trim();
/* Abfragen von welchem GUI-Element der Event ausgelöst wurde und
 * Aufrufen der entsprechenden Methode. */
      if(cmd.equals("btn_Store")) store(parmTF);
      if(cmd.equals("btn_Copy")) copy(parmTF);
      if(cmd.equals("btn_Next")) getNext(parmTF);
      if(cmd.equals("btn_Previous")) getPrevious(parmTF);
      if(cmd.equals("btn_Get")) getForUpdate(parmTF);
      if(cmd.equals("btn_Delete")) processDeactivate(parmTF);
    }
/*
 * METHODE, die Filter-Kriterien für das Anzeigen der Liste mit BOs aus deren Eingabe-Feldern
 * in die Variablen der 'GUI-Klasse' überträgt.
 * Das 'Auslesen' und 'Aufheben' wird gemacht, damit bei einer neuerlichen Anzeige der Liste
 * (z.B. nach dem Speichern eines neuen BO oder dem Löschen/deactivate) die Liste mit 
 * enstsprechend den ursprünglich eingegebenen Filterkriterien wieder angezeigt werden kann
 * auch wenn der Benutzer inzwischen den Inhalt der Eingabefelder verändert hat. */
    protected static void getSelectionCriteria(application_Language parmTF) {
/*
 
* Auslesen des Codes für die Sprache aus der Selection-Combo-Box. */
      parmTF.str_Selection_ISOLanguageCode =
           JSBS_GUIServices.getSelectedCodeFromJComboBox(parmTF.get_combo_SelectLanguage(), " - ");
/* Prüfen ob überhaupt ein Wert ausgewählt werden konnte; wenn notwendig ersetzen um späteren Dump zu vermeiden. */
      if (parmTF.str_Selection_ISOLanguageCode == null) parmTF.str_Selection_ISOLanguageCode = "";
    }
/*
 * Methode die am Ende der 'Construction' der Klasse für die GUI ausgeführt wird.
 * In dieser Methode ist individuell zu codieren, wenn spezielle Verarbeitungen
 * erforderlich sind bevor dem Anwender eine Eingabe auf der GUI erlaubt ist. */
    protected static void processAfterConstruction(application_Language parmTF) {
/*
 * Sofort nach dem Start des Tasks werden die Prüfregeln für das Eingabefeld für die
 * Auswahl des Datensatzes aus der Liste so gesetzt, dass eine Auswahl nicht möglich ist.
 * Die aktuelle Prüfregel wird in der Methode 'redisplayBOList(...)' gesetzt nachdem
 * die gewählten Datensätze angezeigt wurden. */

      parmTF.
structJSBS_EntryRules.setEntryRuleValues(
        parmTF.get_txt_Selection().getName(),
        
null, 1, 0, null, null, null, null);
/* Anschließend ist der Anwendungs-spezifische Code zu implementieren.
 * Hier können die Methoden zum Füllen von Comboboxen mit den Auswahlwerten
 * aufgerufen werden. */

/* 
 * Füllen der Combo-Box mit den Sprach-Codes für die Sprach-spezifische Bezeichnung der Sprache. */

      fillLanguageCodeForLabelling(parmTF);
/* 
 * Füllen der Combo-Box für die Einschränkung der Auswahl-Liste und erstmaliges Anzeigen der Liste. */

      fillSelection_ISOLanguageCode(parmTF);
      getSelectionCriteria(parmTF);
      redisplayBOList(parmTF);
/*
 * Mit dem folgenden Kopieren wird das 'gelesene' (read) BO mit den gleichen Daten gefüllt
 * wie das 'bearbeitete' (processed).
 * Damit wird verhindert, dass eine Rückfrage, 'ob
die geänderten Daten gespeichert werden sollen',
 * erscheint wenn das Fenster sofort nach dem Öffnen wieder geschlossen wird.
 * Die 'unterschiedlichen' Werte entstehen, wenn z.B. Combo-Boxes mit
vorgegebene Werten
 * gefüllt worden sind. */

    parmTF.
structapplication_Language_BOC_Read.
            copyFromJSBS_Language_BO(
                parmTF.
structapplication_Language_BOC_Processed);   
/* 
 * Prüfen und Aktivieren / Deaktivieren von Schaltflächen (JButtons). */

      
parmTF.structapplication_Language__DocumentListener.setButtonStatus();
/*
 * Setzen des Focus auf das Feld für die Eingabe des Auswahl-Codes für einen Datensatz.
 * Damit wird dem Benutzer sofort ermöglicht, eine Auswahl einzugeben. */

      parmTF.get_txt_Selection().requestFocusInWindow();
/*
 * Festlegen der Schaltfläche (JButton) [ Bearbeiten ] als jene,
 * auf die mit der Enter-Taste ein Mausklick ausgelöst wird. */

      parmTF.setEnterTriggeredButton(parmTF.get_btn_Get());
/*
 * Wenn die Geschäftsanwendung keine Möglichkeit zum Drucken vorsieht
 * dann wird die entsprechende Schaltfläche deaktiviert. */

      parmTF.get_btn_Print().setEnabled(
false);
/*
 * Nach dem 'Konstruieren' der Klasse für die GUI ist das Erfassen eines neuen
 * Datensatzes möglich – deswegen die Felder dafür 'aktivieren' bzw. 'deaktivieren'. */

      setFieldsForInsert(parmTF);
/*
 * Wenn in der Auswahlliste alle Datensätze angezeigt werden (d.h. es sind
 * keine Selektionskriterien vorgesehen) dann ist der 'Kommentar' vor der
 * folgenden Zeile zu entfernen. */

//      redisplayBOList(parmTF);
/*
 * Ausführen der Methode, die prüft ob im CommandCenter Parameter für diesen
 * Task eingegeben wurden und die entsprechende Verarbeitung ausführt. */

      processCCParameter(parmTF);

    }
/*
 * METHODE die prüft, ob in den Parameter-Feldern des CommandCenters Werte
 * eingegeben wurden und anschließend die entsprechenden Verarbeitungs-Schritte
 * ausführt. */
    private static void processCCParameter(application_Language parmTF) {
/*
 * Übernehmen des ISO-Sprach-Codes in die Combobox für die Einschränkung der Auswahlliste. */

      if (parmTF.strCCParameter1.trim().length() > 0) {
            JSBS_GUIServices.setJComboBoxItem(parmTF.get_combo_SelectLanguage(), parmTF.
strCCParameter1.trim().toUpperCase(),
                        parmTF.
frmCC.structJSBS_UniversalParameters, true);
      }
      else return;
/*
 * Wenn in der Auswahlliste BO enthalten sind dann prüfen, ob die im Parameter 2 eingegebene
 * 'Sprache' zu einem BO 'passt' und dieses BO dann für die Bearbeitung anzeigen.
 * Dabei wird bei einem 'leeren' Wert das BO für die Standard-Bezeichnung angezeigt. */

      int intVectorSize = parmTF.structJSBS_Language_BOC_Set.vecRecordSet.size();
      if (intVectorSize <= 0) return;
/*
 * Liste enthält zumidest ein BO; enthaltene BO mit dem Wert aus dem Parameter in einer 'for'-Schleife vergleichen. */

      int intVectorIndex;
      JSBS_Language_BO locBO;
      for (intVectorIndex = 0; intVectorIndex < intVectorSize; intVectorIndex++) {
/* Zu bearbeitendes BO aus der Liste 'herausholen'. */
        locBO = (JSBS_Language_BO) parmTF.structJSBS_Language_BOC_Set.vecRecordSet.elementAt(intVectorIndex);
/*
 * Vergleichen des Parameter-Wertes mit dem entsprechenden Attribut des BO.
 * Der Vergleich 'compareToIgnoreCase' erlaubt eine Eingabe des Parameter-Wertes ohne Gross-/
 * Kleinschreibung beachten zu müssen.
 * Wenn Sie einen genauen Vergleich der Werte erreichen wollen, verwenden Sie bitte 'compareTo'. */

        if (parmTF.strCCParameter2.trim().compareToIgnoreCase(locBO.LanguageCodeForLabelling) == 0) {
/*
 * Vergleich erfolgreich.
 * Für die Detail-Anzeige der Werte des BO bestehende Methoden verwenden:
 * Setzen der Auswahl und dann Schaltfläche 'anklicken'.
 * Anschließend Methode und damit 'for'-Schleife beenden. */

                parmTF.get_txt_Selection().setText(JSBS_Formatter.toFormattedString(intVectorIndex + 1));
                parmTF.get_btn_Get().doClick();
                
return;
        }
      }
    }
/*
 * METHODE, die die von der Datenbank gelesenen Wert in die GUI-Elemente überträgt.
 * Weiters werden Eingabefelder, deren Werte den Anwender-bekannten Schlüssel bilden für
 * die Eingabe gesperrt und die Liste im CommandCenter aktualisiert. */
    private static void setToGUI(application_Language parmTF) {
/* Werte auf die GUI-Elemente übertragen. */
      parmTF.structapplication_Language_BOC_Read.setToGUI(
        parmTF.get_txt_ISOLanguageCode(), parmTF.get_combo_LanguageCodeForLabelling(),
        parmTF.get_chk_Marker01(), parmTF.get_chk_Marker02(),
        parmTF.get_chk_Marker03(), parmTF.get_chk_Marker04(),
        parmTF.get_chk_Marker05(), parmTF.get_chk_Marker06(),
        parmTF.get_chk_Marker07(), parmTF.get_chk_Marker08(),
        parmTF.get_chk_Marker09(), parmTF.get_chk_Marker10(),
        parmTF.get_chk_Marker11(), parmTF.get_chk_Marker12(),
        parmTF.get_chk_Marker13(), parmTF.get_chk_Marker14(),
        parmTF.get_chk_Marker15(), parmTF.get_chk_Marker16(),
        parmTF.get_chk_Marker17(), parmTF.get_chk_Marker18(),
        parmTF.get_chk_Marker19(), parmTF.get_chk_Marker20(),
        parmTF.get_txt_LanguageName());
/* Spezielle Bearbeitung für Combo-Boxen die Teil des Anwender-bekannten Schlüssels sind.
 * Wenn diese in der Methode 'copy' farblich markiert wurden dann bleibt diese Markierung
 * erhalten.
 * (Java-)systembedingt wird bei einer JCombobox die neuerliche Auswahl des bereits
 * angezeigten Wertes nicht als 'itemStateChanged' gewertet und die Verarbeitung in der
 * zugehörigen 'DocumentListener'-Klasse nicht ausgeführt.
 * Deswegen wird anschliessend die 'normale' Farbe wieder gesetzt.*/
      JSBS_GUIServices.setDefinedForegroundColor(parmTF.get_combo_LanguageCodeForLabelling(), parmTF);
/* 
 * Methode aufrufen in der Felder für die Eingabe gesperrt werden.
 * Gesperrt werden die Felder, die Teil der Anwender-bekannten-Identifikation sind und
 * jene Felder in denen eine Eingabe nicht erlaubt ist wenn das Anwendungsprogramm in der
 * Version 'MobileClient' läuft und die Verbindung zum JAS (Java Application Server) unterbrochen ist. */
      setFieldsForUpdate(parmTF);
/*
 * Bilden einer Kurzform der angezeigten Daten und aufrufen der Methode, die den Eintrag
 * in der angezeigten Liste 'Aufgerufene Geschäftsanwendungen' ändert. */

      String tmpstrTaskListDisplay = parmTF.structapplication_Language_BOC_Read.ISOLanguageCode + " / ";
/* Wenn nicht die Standard-Sprache angezeigt wird, dann wird auch der Sprach-Code angezeigt. */
      if (parmTF.structapplication_Language_BOC_Read.LanguageCodeForLabelling.trim().length() > 0)
        tmpstrTaskListDisplay+= parmTF.structapplication_Language_BOC_Read.LanguageCodeForLabelling + ": ";
/* String für die Anzeige komplettieren und Methode zum Eintragen aufrufen. */
      tmpstrTaskListDisplay+= parmTF.structapplication_Language_BOC_Read.LanguageName;
      parmTF.frmCC.updateOpenTaskFrame(parmTF.dblCC_TaskID, tmpstrTaskListDisplay);
    }
/*
 * METHODE zum Aktivieren bzw. Deaktivieren der Eingabefelder wenn ein neuer Datensatz
 * eingefügt werden soll.
 * Detaillierte Beschreibungen – besonders für die Version 'MobileClient' bei unterbrochener
 * Verbindung zum JAS (Java Application Server – finden Sie bei den jeweiligen Code-Mustern. */
    protected static void setFieldsForInsert(application_Language parmTF) {
/* 
 * Eingabefelder für die Werte, die den Anwender-bekannten Schlüssel bilden,
 * für die Eingabe öffnen.
 * Dazu wird die spezielle Methode verwendet mit der auch die ursprüngliche Farbe
 * des Hintergrunds wieder hergestellt wird.
 * Dieses 'Öffnen' ist bei allen Versionen (Stand-Alone, Fat-Client, MobileClient) erforderlich.*/
      JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_txt_ISOLanguageCode());
      JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_combo_LanguageCodeForLabelling());
/* 
 * ----------
 * Der folgende Code ist nur erforderlich wenn das Anwendungsprogramm auch für die Version
 * 'MobileClient' vorgesehen ist.
 * Wird keine 'MobileClient' Version vorgesehen, kann der folgende Code-Muster gelöscht werden. */
/* 
 * Mit den folgenden Markern wird festgelegt wie das aktivieren oder deaktivieren von Schaltflächen
 * gesteuert wird wenn das Anwendungsprogramm in der Version 'MobileClient' läuft und die
 * Verbindung zum JAS unterbrochen ist.
 * Bei anderen Versionen (als 'MobileClient') haben die Werte der Variablen keine Auswirkung –
 * außer es wird der Muster-Code modifiziert.
 * Diese Variablen sind in der Basisklasse 'JSBS_TaskFrame' definiert.
 * 'true' bedeutet, dass die Aktion ausgeführt werden darf auch wenn die Verbindung zum JAS
 * unterbrochen ist.
 * Abgefragt für die Steuerung werden die Werte der Variablen in den Methoden 'setButtonStatus_
xxx'
 * in den Klassen für den DocumentListener – auch in der Basisklasse 'JSBS_TaskFrame__DocumentListener'. */

/* 
 * Marker, ob der Datensatz 'deaktiviert' (logisch gelöscht) werden darf.
 * Das Festlegen des Wertes erfolgt in dieser Methode ('setFieldsForInsert(..)') weil diese Methode
 * auch aufgerufen wird nachdem das Fenster für das Teilprogramm (Task) geöffnet wurde.
 * Das ist die einzige Stelle im Programm an der der Wert für diese Variable festgelegt wird. */
      parmTF.bolAllowDeleteWithMobileClientOffline = false;
/* 
 * Der Marker 'bolAllowInsertWithMobileClientOffline' braucht nicht mit einem Wert versorgt werden weil
 * diese Methode nur aufgerufen wird wenn ein neuer Datensatz eingefügt werden soll.
 * Bevor die Daten des neuen Datensatzes nicht gespeichert sind ist so und so kein 'copy' möglich.
 * Aus diesem Grund ist der Marker zur Steuerung, ob die Schaltfläche 'copy' aktiviert werden darf
 * nicht notwendig. */

/* 
 * Im folgenden 'if' wird abgefragt, ob das Anwendungsprogramm in der Version 'MobileClient' läuft
 * und die Verbindung zum JAS (Java Application Server) unterbrochen ist. */
      if ((parmTF.frmCC.RunVersion == JSBS_StartFrame.CONST_MobileClient) && (! parmTF.frmCC.bolJASConnectionEstablished)) {
/* 
 * Mit dem folgenden Code werden alle Felder für die Eingabe gesperrt, für die bei unterbrochener
 * Verbindung zum JAS keine Werte erfasst werden dürfen.
 * Empfehlung:
 * In diesem Zweig alle Felder bearbeiten – damit wird klar, welche Werte erfasst werden können
 * und welche nicht. */
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_txt_ISOLanguageCode());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_txt_LanguageName());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_combo_LanguageCodeForLabelling());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker01());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker02());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker03());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker04());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker05());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker06());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker07());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker08());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker09());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker10());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker11());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker12());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker13());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker14());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker15());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker16());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker17());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker18());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker19());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker20());
      }
      else {
/* 
 * Im 'else'-Zweig werden alle Felder wieder für die Eingabe geöffnet.
 * Empfehlung:
 * In diesem Zweig alle Felder bearbeiten – unter Umständen können sonst Felder für die Eingabe
 * gesperrt sein wenn ein Datensatz geändert wurde während die Verbindung zum JAS unterbrochen war. */
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_txt_ISOLanguageCode());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_txt_LanguageName());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_combo_LanguageCodeForLabelling());
/* 
 * Eine spezielle Bedeutung hat bei der 'Sprache' der Marker01.
 * Dieser Marker bestimmt ob die gewählte Sprache für die Texte auf der GUI 'erlaubt' ist oder nicht.
 * Daher kann dieser Marker nur für Sprachen gewählt werden, die auch in der jeweiligen Anwendung
 * implementiert sind.
 * Innerhalb des folgenden 'if' ist der Aufruf der Methode zur Abfrage auf eine 'implementierte'
 * Sprache. */

        if (parmTF.frmCC.isLanguageForApplication(JSBS_GUIServices.getTextFromJTextField(parmTF.get_txt_ISOLanguageCode())))
          JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker01());
        else
          JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker01());
/* 
 * Alle anderen Marker für eine Veränderung 'öffnen'. */
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker02());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker03());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker04());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker05());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker06());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker07());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker08());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker09());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker10());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker11());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker12());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker13());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker14());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker15());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker16());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker17());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker18());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker19());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker20());
      }
/* 
 * Jetzt noch die Methode zum Prüfen, ob die Standard-Bezeichnung für die Sprache gewählt
 * wurde, aufrufen.
 * In dieser Methode werden bei Bedarf auch die entsprechenden Felder für die Eingabe
 * geöffnet oder gesperrt.*/
      processSelectedLanguageCodeForLabelling(parmTF);
    }
/*
 * METHODE zum Aktivieren bzw. Deaktivieren der Eingabefelder wenn der ausgewählte Datensatz
 * geändert werden soll.
 * Detaillierte Beschreibungen – besonders für die Version 'MobileClient' bei unterbrochener
 * Verbindung zum JAS (Java Application Server – finden Sie bei den jeweiligen Code-Mustern. */
    protected static void setFieldsForUpdate(application_Language parmTF) {
/* 
 * Eingabefelder für die Werte, die den Anwender-bekannten Schlüssel bilden,
 * für die Eingabe sperren.
 * Dieses 'Sperren' ist bei allen Versionen (Stand-Alone, Fat-Client, MobileClient) erforderlich.*/
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_txt_ISOLanguageCode());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_txt_LanguageName());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_combo_LanguageCodeForLabelling());
/* 
 * ----------
 * Der folgende Code ist nur erforderlich wenn das Anwendungsprogramm auch für die Version
 * 'MobileClient' vorgesehen ist.
 * Wird keine 'MobileClient' Version vorgesehen, kann der folgende Code-Muster gelöscht werden. */
/* 
 * Mit den folgenden Markern wird festgelegt wie das aktivieren oder deaktivieren von Schaltflächen
 * gesteuert wird wenn das Anwendungsprogramm in der Version 'MobileClient' läuft und die
 * Verbindung zum JAS unterbrochen ist.
 * Bei anderen Versionen (als 'MobileClient') haben die Werte der Variablen keine Auswirkung –
 * außer es wird der Muster-Code modifiziert.
 * Diese Variablen sind in der Basisklasse 'JSBS_TaskFrame' definiert.
 * 'true' bedeutet, dass die Aktion ausgeführt werden darf auch wenn die Verbindung zum JAS
 * unterbrochen ist.
 * Abgefragt für die Steuerung werden die Werte der Variablen in den Methoden 'setButtonStatus_
xxx'
 * in den Klassen für den DocumentListener – auch in der Basisklasse 'JSBS_TaskFrame__DocumentListener'. */

/* 
 * Marker, ob der Datensatz 'kopiert' (und damit ein neuer Datensatz eingefügt) werden darf. */
      parmTF.bolAllowInsertWithMobileClientOffline = false;
/* 
 * Im folgenden 'if' wird abgefragt, ob das Anwendungsprogramm in der Version 'MobileClient' läuft
 * und die Verbindung zum JAS (Java Application Server) unterbrochen ist. */
      if ((parmTF.frmCC.RunVersion == JSBS_StartFrame.CONST_MobileClient) && (! parmTF.frmCC.bolJASConnectionEstablished)) {
/* 
 * Mit dem folgenden Code werden alle Felder für die Eingabe gesperrt, für die bei unterbrochener
 * Verbindung zum JAS Werte geändert werden dürfen.
 * Empfehlung:
 * In diesem Zweig alle Felder bearbeiten – damit wird klar, welche Werte erfasst werden können
 * und welche nicht. */
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_txt_LanguageName());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker01());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker02());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker03());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker04());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker05());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker06());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker07());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker08());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker09());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker10());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker11());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker12());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker13());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker14());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker15());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker16());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker17());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker18());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker19());
        JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker20());
      }
      else {
/* 
 * Im 'else'-Zweig werden alle Felder wieder für die Eingabe geöffnet.
 * Empfehlung:
 * In diesem Zweig alle Felder bearbeiten – unter Umständen können sonst Felder für die Eingabe gesperrt
 * sein wenn ein neuer Datensatz eingefügt wurde während die Verbindung zum JAS unterbrochen war. */
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_txt_LanguageName());
/* 
 * Eine spezielle Bedeutung hat bei der 'Sprache' der Marker01.
 * Dieser Marker bestimmt ob die gewählte Sprache für die Texte auf der GUI 'erlaubt' ist oder nicht.
 * Daher kann dieser Marker nur für Sprachen gewählt werden, die auch in der jeweiligen Anwendung
 * implementiert sind.
 * Innerhalb des folgenden 'if' ist der Aufruf der Methode zur Abfrage auf eine 'implementierte'
 * Sprache. */

        if (parmTF.frmCC.isLanguageForApplication(JSBS_GUIServices.getTextFromJTextField(parmTF.get_txt_ISOLanguageCode())))
          JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker01());
        else
          JSBS_GUIServices.processDisableGUIElement(parmTF, parmTF.get_chk_Marker01());
/* 
 * Alle anderen Marker für eine Veränderung 'öffnen'. */
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker02());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker03());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker04());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker05());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker06());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker07());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker08());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker09());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker10());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker11());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker12());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker13());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker14());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker15());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker16());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker17());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker18());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker19());
        JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_chk_Marker20());
      }
/* 
 * Jetzt noch die Methode zum Prüfen, ob die Standard-Bezeichnung für die Sprache gewählt
 * wurde, aufrufen.
 * In dieser Methode werden bei Bedarf auch die entsprechenden Felder für die Eingabe
 * geöffnet oder gesperrt.*/
      processSelectedLanguageCodeForLabelling(parmTF);
    }
/*
 * METHODE zum Anzeigen der Liste entsprechend der gewählten Filter-Kriterien. */
    protected static void redisplayBOList(application_Language parmTF) {
/* 
 * Methode des BOC-Set zum Selektieren der Daten aufrufen.
 * Die Auswahl-Parameter stammen aus den entsprechenden Eingabe-Feldern und wurden in der
 * Methode
'getSelectionCriteria(...)' in den entsprechenden Variablen der GUI-Klasse
 * gespeichert. */
      parmTF.structJSBS_Language_BOC_Set.selectByISOLanguageCode(parmTF.str_Selection_ISOLanguageCode);
/* 
 * Prüfen ob die Datenbank-Operation fehlerfrei war; dazu den Status-Code des
 * BOC-Set abfragen. */
      switch(parmTF.structJSBS_Language_BOC_Set.StatusCode) {
      case JSBS_BO.CONST_OK:
/* Datenbank-Operation wie erwartet.
 
* Verarbeitung innerhalb dieses 'case' mit 'break' beenden. */
        break;
      case JSBS_BO.CONST_NOT_FOUND:
/* Noch keine Daten erfasst; kein Fehler.
 
* Verarbeitung innerhalb dieses 'case' mit 'break' beenden. */
        break;
      default:
/* Ein anderer Fehler ist beim Selektieren aufgetreten.
 * Fehlerbehandlungs-Methode (in der Basisklasse für das Task-Frame) aufrufen und zusätzlich
 * zur 'Location' (Klassenname, Locationscode "DBError") auch den Status-Code und die
 * Fehler-Meldung des BOC als Parameter übergeben. */
        parmTF.handleErrorEvent(CONST_ClassName, "redisplay_DBError",
          Integer.toString(parmTF.
structJSBS_Language_BOC_Set.StatusCode),
          parmTF.
structJSBS_Language_BOC_Set.StatusMsg);
      }
/*
 * Weil der Wert von 'bolInhibitColumnMarginChangeStore' auch von parallel laufenden
 * Methoden verändert werden kann wird der folgende Code-Block 'synchronized' ausgeführt. */
      
synchronized (parmTF) {
/* 
 * Werte aus den BO des selektierten Sets auf die JTable der GUI übertragen.
 * Dabei die Methode der BOC-Set-Klasse verwenden.
 * Die Daten-Struktur 'structJSBS_FramePosition_BOC.columnWidthArrey01' ist in der
 * Basisklasse für das Task-Frame (JSBS_TaskFrame) definiert und enthält die Information
 * über die Spaltenbreite für die Tabelle.
 * Davor wird das 'Flag' zum Verhindern, dass durch den 'TableColumnListener' falsche
 * Spaltenbreiten auf die Datenbank übernommen werden, gesetzt.
 * Eine detaillierte Beschreibung zu 'bolInhibitColumnMarginChangeStore' finden Sie
 * bei der Definition der Variable in der Basisklasse 'JSBS_TaskFrame'. */
        
parmTF.bolInhibitColumnMarginChangeStore = true;
        
parmTF.structJSBS_Language_BOC_Set.setToGUI(
        parmTF.get_pnl_SelectionListTable(),
        parmTF.structJSBS_FramePosition_BOC.ColumnWidthArray01);
/* 
 * Übernehmen der Spaltenbreiten der JTable auf die Datenbank wieder erlauben. */
        
parmTF.bolInhibitColumnMarginChangeStore = false;
      
}
/* 
 * Zuletzt wird noch ermittelt, wie viele BO in der Liste sind und damit die Eingabe-Regel
 * im GUI-Element für die Eingabe der Auswahl festgelegt.
 * Mit dieser Regel kann später (bei der Auswahl für die Detail-Anzeige) geprüft werden,
 * ob mit dem eingegeben Wert auch ein BO ausgewählt werden kann. */
      int intListSize =
            parmTF.
structJSBS_Language_BOC_Set.vecRecordSet.size();
/* Die umfangreiche Parameterisierung der Eingabe-Regel wird derzeit nicht genutzt;
 * nicht verwendete Parameter werden durch 'null'-Werte ersetzt. */
      parmTF.structJSBS_EntryRules.setEntryRuleValues(
        parmTF.get_txt_Selection().getName(),
        
null, 1, intListSize, null, null, null, null);
/* 
 * Als Service für den Anwender wird, wenn nur ein BO in der Liste enthalten ist,
 * dieses gleich zur Auswahl vorgeschlagen. */
      if (intListSize == 1)
         parmTF.get_txt_Selection().setText(
"1");
/* 
 * Wenn keine oder mehr BO in der Liste enthalten sind dann wird der im Auswahlfeld
 * stehende Wert erneut angezeigt. Damit wird über den DocumentListener eine neue Prüfung
 * ausgelöst ob der Auswahlwert nicht größer ist als die Anzahl der BO in der Liste.
*/
      else
         parmTF.get_txt_Selection().setText(parmTF.get_txt_Selection().getText());

/*
 * Setzen des Focus auf das Feld für die Eingabe des Auswahl-Codes für einen Datensatz.
 * Damit wird dem Benutzer sofort wieder ermöglicht, eine Auswahl einzugeben. */
      parmTF.get_txt_Selection().requestFocusInWindow();
    }
/*
 * Methode die ausgeführt wird wenn eingegebene Daten auf der Datenbank gespeichert
 * werden sollen. */
    private static void store(application_Language parmTF) {
/* 
 * Werte aus den GUI-Elementen auf die Variablen des BO übertragen.
 * Dabei die Methode der BOC-Klasse verwenden. */
      parmTF.structapplication_Language_BOC_Processed.getFromGUI(
        parmTF.get_txt_ISOLanguageCode(), parmTF.get_combo_LanguageCodeForLabelling(),
        parmTF.get_chk_Marker01(), parmTF.get_chk_Marker02(),
        parmTF.get_chk_Marker03(), parmTF.get_chk_Marker04(),
        parmTF.get_chk_Marker05(), parmTF.get_chk_Marker06(),
        parmTF.get_chk_Marker07(), parmTF.get_chk_Marker08(),
        parmTF.get_chk_Marker09(), parmTF.get_chk_Marker10(),
        parmTF.get_chk_Marker11(), parmTF.get_chk_Marker12(),
        parmTF.get_chk_Marker13(), parmTF.get_chk_Marker14(),
        parmTF.get_chk_Marker15(), parmTF.get_chk_Marker16(),
        parmTF.get_chk_Marker17(), parmTF.get_chk_Marker18(),
        parmTF.get_chk_Marker19(), parmTF.get_chk_Marker20(),
        parmTF.get_txt_LanguageName());
/* 
 * Methode des BOC zum Speichern der Daten aufrufen. */
      parmTF.structapplication_Language_BOC_Processed.store();
/* 
 * Prüfen ob die Datenbank-Operation fehlerfrei war; dazu den Status-Code des
 * BOC abfragen. */
      switch(parmTF.structapplication_Language_BOC_Processed.StatusCode) {
      case JSBS_BO.CONST_OK:
/* Datenbank-Operation wie erwartet.
 * Verarbeitetes BO (xxx_Processed) mit neuen Allgemeinen Attributen (Common Attributes) auf das
 * BO, das die Werte, so wie sie auf der Datenbank sind enthält (xxx_Read) kopieren.
 * Damit kann in einem späteren Schritt verglichen werden ob ein Attribut geändert wurde. */
        parmTF.structapplication_Language_BOC_Read.
            copyFromJSBS_Language_BO(
                parmTF.
structapplication_Language_BOC_Processed);
/* Methode aufrufen, die die Werte des BO auf die GUI-Elemente überträgt.
 * Das Übertragen wäre zwar bei 'store()' nicht notwendig aber in der aufgerufenen
 * Methode werden auch Eingabefelder gesperrt und die Liste der aufgerufenen Task
 * im CommandCenter aktualisiert. */
        setToGUI(parmTF);
/* Verarbeitung innerhalb dieses 'case' mit 'break' beenden. */
        break;
      case JSBS_BO.CONST_DUPLICATE_KEY:
/* Ein Datensatz mit den Werten, die den Anwender-bekannten Schlüssel bilden, existiert bereits.
 * Fehlerbehandlungs-Methode (in der Basisklasse für das Task-Frame) aufrufen und zusätzlich
 * zur 'Location' (Klassenname, Locationscode "DupKey") auch die Werte für den Anwender-bekannten
 * Schlüssel als Parameter übergeben. */
        parmTF.handleErrorEvent(CONST_ClassName, "DupKey",
          parmTF.
structapplication_Language_BOC_Processed.ISOLanguageCode,
          parmTF.
structapplication_Language_BOC_Processed.LanguageCodeForLabelling);
/* Verarbeitung innerhalb dieses 'case' mit 'break' beenden. */
        break;
      case JSBS_BO.CONST_CHANGED_INBETWEEN:
/* Der Datensatz wurde seit dem Lesen von der Datenbank von einem anderen Anwender verändert.
 * Fehlerbehandlungs-Methode (in der Basisklasse für das Task-Frame) aufrufen und zusätzlich
 * zur 'Location' (Klassenname, Locationscode "store_ChangedInbetween") auch den Anwender,
 * der die letzte Änderung vorgenommen hat, als Parameter übergeben. */
        parmTF.handleErrorEvent(CONST_ClassName, "store_ChangedInbetween",
          parmTF.
structapplication_Language_BOC_Processed.ChangedBy);
/* Verarbeitung innerhalb dieses 'case' mit 'break' beenden. */
        break;
      case JSBS_BO.CONST_NOT_FOUND:
/* Der Datensatz wurde seit dem Lesen von der Datenbank von einem anderen Anwender deaktiviert.
 * Fehlerbehandlungs-Methode (in der Basisklasse für das Task-Frame) aufrufen und zusätzlich
 * zur 'Location' (Klassenname, Locationscode "store_NotFound") auch die Werte für
 * den Anwender-bekannten Schlüssel als Parameter übergeben. */
        parmTF.handleErrorEvent(CONST_ClassName, "store_NotFound",
          parmTF.
structapplication_Language_BOC_Processed.ISOLanguageCode,
          parmTF.
structapplication_Language_BOC_Processed.LanguageCodeForLabelling);
/* Verarbeitung innerhalb dieses 'case' mit 'break' beenden. */
        break;
      case JSBS_Language_BO.CONST_ERROR_No_Default_Dataset_For_ISOLanguageCode:
/* Es wurde versucht einen Datensatz mit einer Bezeichnung der Sprache in einer zusätzlichen
 * Sprache einzufügen und der Standard-Datensatz für die Sprache existiert noch nicht.

 * Fehlerbehandlungs-Methode (in der Basisklasse für das Task-Frame) aufrufen. */
        parmTF.handleErrorEvent(CONST_ClassName, "store_NoDefaultDataSet");
/* Verarbeitung innerhalb dieses 'case' mit 'break' beenden. */
        break;
      default:
/* Ein anderer Fehler ist beim Speichern der Daten aufgetreten.
 * Fehlerbehandlungs-Methode (in der Basisklasse für das Task-Frame) aufrufen und zusätzlich
 * zur 'Location' (Klassenname, Locationscode "store_DBError") auch den Status-Code und die
 * Fehler-Meldung des BOC als Parameter übergeben. */
        parmTF.handleErrorEvent(CONST_ClassName, "store_DBError",
          Integer.toString(parmTF.
structapplication_Language_BOC_Processed.StatusCode),
          parmTF.
structapplication_Language_BOC_Processed.StatusMsg);
      }
/*
 * Methode zum Anzeigen der Liste mit den aktuell gültigen Daten aufrufen.
 * Aber nur dann aufrufen wenn die Selektionskriterien gleich sind wie die Werte
 * des gerade gespeicherten BO. */
      if (parmTF.structapplication_Language_BOC_Processed.ISOLanguageCode.
                compareTo(parmTF.
str_Selection_ISOLanguageCode) == 0)
        redisplayBOList(parmTF);
/*
 * Methode zum Aktivieren / Deaktivieren von Schaltflächen (JButtons) aufrufen. */

      parmTF.
structapplication_Language__DocumentListener.setButtonStatus();
/*
 * Setzen des Focus auf das Feld für die Eingabe des Auswahl-Codes für einen Datensatz.
 * Damit wird dem Benutzer sofort wieder ermöglicht, eine Auswahl einzugeben. */

      parmTF.get_txt_Selection().requestFocusInWindow();
/*
 * Festlegen der Schaltfläche (JButton) 'btn_Get' als jene,
 * auf die mit der Enter-Taste ein Mausklick ausgelöst wird. */

      parmTF.setEnterTriggeredButton(parmTF.get_btn_Get());
    }

/*
 * Methode die ausgeführt wird wenn eingegebene Daten, die auf der Datenbank gespeichert
 * sind, verändert und als neuer Datensatz gespeichert werden sollen. */
    private static void copy(application_Language parmTF) {
/* 
 * Methode aufrufen in der Felder für die Eingabe gesperrt bzw. geöffnet werden wenn ein neuer Datensatz
 * eingefügt werden soll.
 * Geöffnet werden jene Felder, die Teil der Anwender-bekannten-Identifikation sind.
 * Sonderfall ist das Sperren jener Felder in denen eine Eingabe nicht erlaubt ist wenn
 * das Anwendungsprogramm in der Version 'MobileClient' läuft und die Verbindung zum JAS
 * (Java Application Server) unterbrochen ist. */
      setFieldsForInsert(parmTF);
/* 
 * Eingabefelder für die Werte, die den Anwender-bekannten Schlüssel bilden,
 * für die Eingabe öffnen.
 * Dazu wird die spezielle Methode verwendet mit der auch die ursprüngliche Farbe
 * des Hintergrunds wieder hergestellt wird.*/
      JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_txt_ISOLanguageCode());
      JSBS_GUIServices.processEnableGUIElement(parmTF, parmTF.get_combo_LanguageCodeForLabelling());
/* 
 * Anwender darauf aufmerksam machen, dass der Anwender-bekannte Schlüssel
 * nicht gleich bleiben darf.
 * Alle Felder mit Schlüssel-Werten markieren damit diese Aufmerksamkeit erregen. */

      JSBS_GUIServices.reverseColors(parmTF.get_txt_ISOLanguageCode());
      JSBS_GUIServices.reverseColors(parmTF.get_combo_LanguageCodeForLabelling());
/*
 * Setzen des Focus auf das Feld, das am wahrscheinlichsten geändert wird und markieren
 * des enthaltenen Wertes.
 * Damit kann der Wert ohne weitere Massnahme komplett überschrieben werden. */

      parmTF.get_txt_LanguageName().requestFocusInWindow();
      parmTF.get_txt_LanguageName().selectAll();

/* 
 * Werte aus den GUI-Elementen auf die Variablen des BO übertragen.
 * Dabei die Methode der BOC-Klasse verwenden. */

      parmTF.
structapplication_Language_BOC_Processed.getFromGUI(
        parmTF.get_txt_ISOLanguageCode(), parmTF.get_combo_LanguageCodeForLabelling(),
        parmTF.get_chk_Marker01(), parmTF.get_chk_Marker02(),
        parmTF.get_chk_Marker03(), parmTF.get_chk_Marker04(),
        parmTF.get_chk_Marker05(), parmTF.get_chk_Marker06(),
        parmTF.get_chk_Marker07(), parmTF.get_chk_Marker08(),
        parmTF.get_chk_Marker09(), parmTF.get_chk_Marker10(),
        parmTF.get_chk_Marker11(), parmTF.get_chk_Marker12(),
        parmTF.get_chk_Marker13(), parmTF.get_chk_Marker14(),
        parmTF.get_chk_Marker15(), parmTF.get_chk_Marker16(),
        parmTF.get_chk_Marker17(), parmTF.get_chk_Marker18(),
        parmTF.get_chk_Marker19(), parmTF.get_chk_Marker20(),
        parmTF.get_txt_LanguageName());
/* 
 * BO kennzeichnen, dass es sich um ein neu eingegebenes BO handelt.
 * Ein 'neues' BO ist durch die Werte '0' im DataSetId und ObjectID zu erkennen. */

      parmTF.
structapplication_Language_BOC_Processed.DataSetID = 0;
      parmTF.
structapplication_Language_BOC_Processed.ObjectID = 0;
/* 
 * BO auf das BO mit den (von der Datenbank) gelesenen Daten kopieren.
 * Das hat in diesem Schritt des Tutorials noch keine Auswirkungen;
 * später wird aber das Aktivieren und Deaktivieren von Schaltflächen nach einer Datenänderung
 * über den Vergleich der Werte gesteuert. */

      parmTF.
structapplication_Language_BOC_Read.
        copyFromJSBS_Language_BO(
          parmTF.
structapplication_Language_BOC_Processed);
/*
 * Methode zum Aktivieren / Deaktivieren von Schaltflächen (JButtons) aufrufen. */

      parmTF.
structapplication_Language__DocumentListener.setButtonStatus();
/*
 * Festlegen der Schaltfläche (JButton) [ Speichern ] als jene,
 * auf die mit der Enter-Taste ein Mausklick ausgelöst wird. */

      parmTF.setEnterTriggeredButton(parmTF.get_btn_Store());
    }

/*
 * Methode die jenen Datensatz anzeigt dessen Anwender-bekannte Identifikation
 * auf die Identifikation des angezeigten Datensatzes folgt. */
    private static void getNext(application_Language parmTF) {
/* 
 * Prüfen ob Daten erfasst aber nicht gespeichert wurden. */

      if (! checkForUnstoredChanges(parmTF)) {
/* Anwender hat entschieden, dass er geänderte aber nicht gespeicherte Daten
 * weiter bearbeiten will. */

        
return;
      }
/* Aufheben des gelesenen Datensatzes weil dieser auch verändert wird wenn
 * kein 'nächster' gefunden wird. */
      parmTF.structapplication_Language_BOC_Processed.
            copyFromJSBS_Language_BO(
                parmTF.
structapplication_Language_BOC_Read);
/* 
 * Methode des BOC, das den 'nächsten' Datensatz holt, aufrufen.
 * Dabei wird der 'Startpunkt' aus den angezeigten Daten gewonnen. */
      parmTF.structapplication_Language_BOC_Read.selectNext(
        parmTF.
structapplication_Language_BOC_Read.ISOLanguageCode
        parmTF.
structapplication_Language_BOC_Read.LanguageCodeForLabelling);
/* 
 * Prüfen ob die Datenbank-Operation fehlerfrei war; dazu den Status-Code des
 * BOC abfragen. */
      switch(parmTF.structapplication_Language_BOC_Read.StatusCode) {
      
case JSBS_BO.CONST_OK:
/* Datenbank-Operation wie erwartet;
 * Von der Datenbank gelesenes BO (xxx_Read) auf das BO, das die Werte aus den Eingabefeldern
 * (xxx_Processed) enthält, kopieren.
 * Damit kann in einem späteren Schritt verglichen werden ob ein Attribut geändert wurde. */
        parmTF.structapplication_Language_BOC_Processed.
            copyFromJSBS_Language_BO(
                parmTF.
structapplication_Language_BOC_Read);
/* Daten anzeigen. */
        setToGUI(parmTF);
/* Verarbeitung innerhalb dieses 'case' mit 'break' beenden. */
        break;
      
case JSBS_BO.CONST_NOT_FOUND:
/* Ein Datensatz mit einem Anwender-bekannten Schlüssel, der nach dem Anwender-bekannten Schlüssel
 * des gerade angezeigten Datensatzes folgt, exisitert nicht. */
        parmTF.handleErrorEvent(CONST_ClassName, "NoNext");
/* 'Aufgehobenen' Datensatzes wieder in die Struktur für den gelesenen Datensatz übertragen
 * damit nicht falsche und verwirrende Meldungen wegen veränderter Daten kommen. */
      parmTF.structapplication_Language_BOC_Read.
            copyFromJSBS_Language_BO(
                parmTF.
structapplication_Language_BOC_Processed);
/* Daten anzeigen damit die angezeigten Daten mit jenen im Datensatz übereinstimmen. */
        setToGUI(parmTF);
/* Verarbeitung innerhalb dieses 'case' mit 'break' beenden. */
        break;
      
default:
/* Ein anderer Fehler ist beim Lesen der Daten aufgetreten.
 * Fehlerbehandlungs-Methode (in der Basisklasse für das Task-Frame) aufrufen und zusätzlich
 * zur 'Location' (Klassenname, Locationscode "selectNext_DBError") auch den Status-Code
 * und die Fehler-Meldung des BOC als Parameter übergeben. */
        parmTF.handleErrorEvent(CONST_ClassName, "selectNext_DBError",
          Integer.toString(parmTF.
structapplication_Language_BOC_Read.StatusCode),
          parmTF.
structapplication_Language_BOC_Read.StatusMsg,
          parmTF.
structapplication_Language_BOC_Read.ISOLanguageCode,
          parmTF.
structapplication_Language_BOC_Read.LanguageCodeForLabelling);
      }

    }

/*
 * Methode die jenen Datensatz anzeigt dessen Anwender-bekannte Identifikation
 * vor der Identifikation des angezeigten Datensatzes liegt. */
    private static void getPrevious(application_Language parmTF) {
/* 
 * Prüfen ob Daten erfasst aber nicht gespeichert wurden. */

      if (! checkForUnstoredChanges(parmTF)) {
/* Anwender hat entschieden, dass er geänderte aber nicht gespeicherte Daten
 * weiter bearbeiten will. */

        
return;
      }
/* Aufheben des gelesenen Datensatzes weil dieser auch verändert wird wenn
 * kein 'nächster' gefunden wird. */
      parmTF.structapplication_Language_BOC_Processed.
            copyFromJSBS_Language_BO(
                parmTF.
structapplication_Language_BOC_Read);
/* 
 * Methode des BOC, das den 'vorigen' Datensatz holt, aufrufen.
 * Dabei wird der 'Startpunkt' aus den angezeigten Daten gewonnen. */
      parmTF.structapplication_Language_BOC_Read.selectPrevious(
        parmTF.
structapplication_Language_BOC_Read.ISOLanguageCode
        parmTF.
structapplication_Language_BOC_Read.LanguageCodeForLabelling);
/* 
 * Prüfen ob die Datenbank-Operation fehlerfrei war; dazu den Status-Code des
 * BOC abfragen. */
      switch(parmTF.structapplication_Language_BOC_Read.StatusCode) {
      
case JSBS_BO.CONST_OK:
/* Datenbank-Operation wie erwartet;
 * Von der Datenbank gelesenes BO (xxx_Read) auf das BO, das die Werte aus den Eingabefeldern
 * (xxx_Processed) enthält, kopieren.
 * Damit kann in einem späteren Schritt verglichen werden ob ein Attribut geändert wurde. */
        parmTF.structapplication_Language_BOC_Processed.
            copyFromJSBS_Language_BO(
                parmTF.
structapplication_Language_BOC_Read);
/* Daten anzeigen. */
        setToGUI(parmTF);
/* Verarbeitung innerhalb dieses 'case' mit 'break' beenden. */
        break;
      
case JSBS_BO.CONST_NOT_FOUND:
/* Ein Datensatz mit einem Anwender-bekannten Schlüssel, der nach dem Anwender-bekannten Schlüssel
 * des gerade angezeigten Datensatzes folgt, exisitert nicht. */
        parmTF.handleErrorEvent(CONST_ClassName, "NoPrevious");
/* 'Aufgehobenen' Datensatzes wieder in die Struktur für den gelesenen Datensatz übertragen
 * damit nicht falsche
und verwirrende Meldungen wegen veränderter Daten kommen. */
      parmTF.structapplication_Language_BOC_Read.
            copyFromJSBS_Language_BO(
                parmTF.
structapplication_Language_BOC_Processed);
/* Daten anzeigen damit die angezeigten Daten mit jenen im Datensatz übereinstimmen. */
        setToGUI(parmTF);
/* Verarbeitung innerhalb dieses 'case' mit 'break' beenden. */
        break;
      
default:
/* Ein anderer Fehler ist beim Lesen der Daten aufgetreten.
 * Fehlerbehandlungs-Methode (in der Basisklasse für das Task-Frame) aufrufen und zusätzlich
 * zur 'Location' (Klassenname, Locationscode "selectPrevious_DBError") auch den Status-Code
 * und die Fehler-Meldung des BOC als Parameter übergeben. */
        parmTF.handleErrorEvent(CONST_ClassName, "selectPrevious_DBError",
          Integer.toString(parmTF.
structapplication_Language_BOC_Read.StatusCode),
          parmTF.
structapplication_Language_BOC_Read.StatusMsg,
          parmTF.
structapplication_Language_BOC_Read.ISOLanguageCode,
          parmTF.
structapplication_Language_BOC_Read.LanguageCodeForLabelling);
      }

    }

/*
 * Methode zum Lesen eines einzelnen BO von der Datenbank und Anzeigen von dessen Werte.
 * Die Anwender-bekannte Identifikation wird in den Parametern übergeben:
 * ISO-Code der Sprache und ISO-Code der Sprache für die Bezeichnung der Sprache.
 * Wenn mit dieser Identifikation ein Datensatz gefunden wird dann wird von dieser Methode
 * 'true' zurück geliefert; sonst false. */
    protected static boolean getSingleBO(application_Language parmTF,
                                    String
parmISOLanguageCode,
                                    String parmLanguageCodeForLabelling) {
/* 
 * Aktuell gültiges BO von der Datenbank lesen. */

      parmTF.
structapplication_Language_BOC_Read.selectByUserKnownKey(
        parmISOLanguageCode,
        parmLanguageCodeForLabelling);
/* 
 * Prüfen ob die Datenbank-Operation fehlerfrei war; dazu den Status-Code des
 * BOC abfragen. */

      
switch(parmTF.structapplication_Language_BOC_Read.StatusCode) {
      
case JSBS_BO.CONST_OK:
/* Datenbank-Operation wie erwartet;
 * Von der Datenbank gelesenes BO (xxx_Read) auf das BO, das die Werte aus den Eingabefeldern
 * (xxx_Processed) enthält, kopieren.
 * Damit kann in einem späteren Schritt verglichen werden ob ein Attribut geändert wurde. */

        parmTF.
structapplication_Language_BOC_Processed.
            copyFromJSBS_Language_BO(
                parmTF.
structapplication_Language_BOC_Read);
/* Daten anzeigen. */
        setToGUI(parmTF);

/* An die aufrufende Methode signalisieren dass ein Datensatz gefunden wurde. */
        
return true;
      
case JSBS_BO.CONST_NOT_FOUND:
/* Kein Datensatz mit den in den Parametern übergebenen Werten für den Anwender-bekannten
 * Schlüssel gefunden. Über 'false' an die aufrufende Methode signalisieren. */

        
return false;
      
default:
/* Ein anderer Fehler ist beim Selektieren aufgetreten.
 * Fehlerbehandlungs-Methode (in der Basisklasse für das Task-Frame) aufrufen und zusätzlich
 * zur 'Location' (Klassenname, Locationscode "getSingleBO_DBError") auch den Status-Code und die
 * Fehler-Meldung des BOC als Parameter übergeben. */

        parmTF.handleErrorEvent(
CONST_ClassName, "getSingleBO_DBError",
          Integer.toString(parmTF.
structapplication_Language_BOC_Read.StatusCode),
          parmTF.
structapplication_Language_BOC_Read.StatusMsg);
      }

/* Return-Wert, falls das Programm doch diese Stelle erreicht. */
      
return false;
    }

/*
 * Methode zum Auswählen eines Business-Objects aus der angezeigten Liste,
 * neuerliches Lesen des BO von der Datenbank (falls ein anderer Anwender in der
 * Zwischenzeit eine Veränderung vorgenommen hat) und Anzeigen der Werte im Detail-Bereich
 * (Teil der GUI mit den GUI-Elementen für die Eingabe von Werten) der GUI. */
    protected static void getForUpdate(application_Language parmTF) {
/* 
 * Prüfen ob Daten erfasst aber nicht gespeichert wurden. */

      
if (! checkForUnstoredChanges(parmTF)) {
/* Anwender hat entschieden, dass er geänderte aber nicht gespeicherte Daten
 * weiter bearbeiten will. */

        
return;
      }
/* 
 * Nummer aus dem Auswahl-Feld der GUI auslesen.
 * Mit der verwendeten Methode wird die (in der Methode 'redisplayBOList(...)' parameterisierte)
 * Klasse 'JSBS_EntryRules' auf die erlaubten Grenzen für die eingegebene Ziffer geprüft.
 * Bei einem ungültigen Wert wird der Hintergrund rot gefärbt. */
      Integer intSelectedRow =
        JSBS_GUIServices.getInteger(parmTF.get_txt_Selection(), parmTF); 
/* 
 * Bei einer ungültigen Eingabe (auch wenn der Wert außerhalb der erlaubten Grenzen ist)
 * wird von der Methode ein 'null'-Wert zurückgeliefert.
 * In diesem Fall wird die Methode beendet; dem Anwender wird durch den roten Hintergrund
 * die fehlerhafte Eingabe signalisiert. */
      if (intSelectedRow == null) return;
/* 
 * Eingegebene Nummer ist gültig; indiziertes BO in eigenes Objekt übertragen.
 * Durch das eigene Objekt ist der folgende Code leichter lesbar. */
      int intListIndex = intSelectedRow.intValue() - 1;
      JSBS_Language_BO structJSBS_Language_BO =
        (JSBS_Language_BO) 
        parmTF.
structJSBS_Language_BOC_Set.vecRecordSet.elementAt(intListIndex);
/* 
 * Methode zum Lesen und Anzeigen eines einzelnen BO aufrufen.
 * Über den Rückgabewert wird signalisiert, ob der Datensatz gefunden wurde. */
      if (getSingleBO(parmTF,
                     structJSBS_Language_BO.
ISOLanguageCode,
                     structJSBS_Language_BO.
LanguageCodeForLabelling)) {
/* 
 * BO erfolgreich gelesen und angezeigt. */

/*
 * Setzen des Focus auf das Feld für die Eingabe des Auswahl-Codes für einen Datensatz.
 * Damit wird dem Benutzer sofort wieder ermöglicht, eine Auswahl einzugeben. */

        parmTF.get_txt_Selection().requestFocusInWindow();
/*
 * Festlegen der Schaltfläche (JButton) [ Bearbeiten ] als jene,
 * auf die mit der Enter-Taste ein Mausklick ausgelöst wird. */

        parmTF.setEnterTriggeredButton(parmTF.get_btn_Get());

      }
      else {
/* In der Liste angezeigtes BO wurde in der Zwischenzeit gelöscht. */
        parmTF.handleErrorEvent(
CONST_ClassName, "getForUpdate_NotFound");
      }
    }
/*
 * Methode zum 'Deaktivieren' eines Business-Objects aus der angezeigten Liste.
 * 'Deaktivieren' heisst, dass die Gültigkeit des BO beendet wird - der Datensatz
 * aber noch auf der Datenbank-Tabelle bleibt
 * (Teil der GUI mit den GUI-Elementen für die Eingabe von Werten) der GUI. */
    protected static void processDeactivate(application_Language parmTF) {
/* 
 * Nummer aus dem Auswahl-Feld der GUI auslesen.
 * Mit der verwendeten Methode wird die (in der Methode 'redisplayBOList(...)' parameterisierte)
 * Klasse 'JSBS_EntryRules' auf die erlaubten Grenzen für die eingegebene Ziffer geprüft.
 * Bei einem ungültigen Wert wird der Hintergrund rot gefärbt. */
      Integer intSelectedRow =
        JSBS_GUIServices.getInteger(parmTF.get_txt_Selection(), parmTF); 
/* 
 * Bei einer ungültigen Eingabe (auch wenn der Wert außerhalb der erlaubten Grenzen ist)
 * wird von der Methode ein 'null'-Wert zurückgeliefert.
 * In diesem Fall wird die Methode beendet; dem Anwender wird durch den roten Hintergrund
 * die fehlerhafte Eingabe signalisiert. */
      if (intSelectedRow == null) return;
/* 
 * Eingegebene Nummer ist gültig; indiziertes BO in eigenes Objekt übertragen.
 * Durch das eigene Objekt ist der folgende Code leichter lesbar. */
      int intListIndex = intSelectedRow.intValue() - 1;
      JSBS_Language_BO structJSBS_Language_BO =
        (JSBS_Language_BO) 
        parmTF.
structJSBS_Language_BOC_Set.vecRecordSet.elementAt(intListIndex);
/* 
 * Aus dem BO ein BOC (Client-Side-Klasse) machen und dieses dann 'deaktivieren'
 * Durch dieses Verfahren wird auch geprüft, ob das BO inzwischen durch einen anderen
 * Anwender verändert wurde. */
      application_Language_BOC structapplication_Language_BOC =
          new application_Language_BOC(parmTF.frmCC, parmTF);
      structapplication_Language_BOC.copyFromJSBS_Language_BO(structJSBS_Language_BO);
/* 
 * Methode zum Deaktivieren aufrufen. */

      structapplication_Language_BOC.deactivate();
/* 
 * Prüfen ob die Datenbank-Operation fehlerfrei war; dazu den Status-Code des
 * BOC abfragen. */
      switch(structapplication_Language_BOC.StatusCode) {
        case JSBS_BO.CONST_OK:
/* Datenbank-Operation wie erwartet;
 * Liste neu anzeigen. */
          redisplayBOList(parmTF);
/* Algorithmus zum Entfernen der angezeigten Daten wenn das gerade deaktivierte BO
 * im DetailBereich der GUI angezeigt wurde. */

          if (structapplication_Language_BOC.ObjectID ==
              parmTF.structapplication_Language_BOC_Read.ObjectID) {
/* Ein 'leeres' BOC für die anzuzeigenden Daten erstellen. */
            parmTF.structapplication_Language_BOC_Read = new application_Language_BOC(parmTF.frmCC, parmTF);
/* Auf das BOC zum Vergleichen kopieren. */
            parmTF.structapplication_Language_BOC_Processed.
              copyFromJSBS_Language_BO(parmTF.structapplication_Language_BOC_Read);
/* 'Leere' Felder anzeigen; dazu die bestehende Methode benutzen. */
            setToGUI(parmTF);
/* 
 * Methode aufrufen in der Felder für die Eingabe gesperrt bzw. geöffnet werden wenn ein neuer Datensatz
 * eingefügt werden soll.
 * Geöffnet werden jene Felder, die Teil der Anwender-bekannten-Identifikation sind.
 * Sonderfall ist das Sperren jener Felder in denen eine Eingabe nicht erlaubt ist wenn
 * das Anwendungsprogramm in der Version 'MobileClient' läuft und die Verbindung zum JAS
 * (Java Application Server) unterbrochen ist. */
            setFieldsForInsert(parmTF);
          }
/* Verarbeitung innerhalb dieses 'case' mit 'break' beenden. */
          break;
/* **** */
        case application_Language_BOC.CONST_DEACTIVATE_INHIBIT_REASON_AdditionalLanguageLabelling:
/* Die Sprache in diesem BO ist Sprache für die Bezeichnung einer anderen Sprache;
 * damit Fremdschlüssel eines anderen BO (JSBS_Language_BO) und darf nicht deaktiviert werden.

 * Die Anwender-bekannte Identifikation des referenzierenden BO ist in der Variable 'StatusMsg'. */
          parmTF.handleErrorEvent(CONST_ClassName, "processDeactivate_AdditionalLanguageLabelling",
                                  
structapplication_Language_BOC.StatusMsg);
/* Verarbeitung innerhalb dieses 'case' mit 'break' beenden. */
          break;
        case application_Language_BOC.CONST_DEACTIVATE_INHIBIT_REASON_Referenced_In_Country:
/* Die Sprache in diesem BO ist Sprache für die Bezeichnung eines Landes;
 * damit Fremdschlüssel eines anderen BO (JSBS_Country_BO) und darf nicht deaktiviert werden.

 * Die Anwender-bekannte Identifikation des referenzierenden BO ist in der Variable 'StatusMsg'. */
          parmTF.handleErrorEvent(CONST_ClassName, "processDeactivate_Referenced_In_Country",
                                  
structapplication_Language_BOC.StatusMsg);
/* Verarbeitung innerhalb dieses 'case' mit 'break' beenden. */
          break;
        case application_Language_BOC.CONST_DEACTIVATE_INHIBIT_REASON_Referenced_In_Currency:
/* Die Sprache in diesem BO ist Sprache für die Bezeichnung einer Währung;
 * damit Fremdschlüssel eines anderen BO (JSBS_Currency_BO) und darf nicht deaktiviert werden.

 * Die Anwender-bekannte Identifikation des referenzierenden BO ist in der Variable 'StatusMsg'. */
          parmTF.handleErrorEvent(CONST_ClassName, "processDeactivate_Referenced_In_Currency",
                                  
structapplication_Language_BOC.StatusMsg);
/* Verarbeitung innerhalb dieses 'case' mit 'break' beenden. */
          break;
/* 
 * ***********
 * Das folgende case-Statement ist für jeden Hinderungsgrund für das Deaktivieren
 * (weil noch mindestens ein Datensatz, der den zu deaktivierenden Datensatz als
 * Fremdschlüssel hat, existiert) zu kopieren und zu adaptieren. */

        case application_Language_BOC.CONST_DEACTIVATE_INHIBIT_REASON_Reason:
/* Das BO ist Fremdschlüssel eines anderen BO und darf nicht deaktiviert werden.
 * Wenn die Abfrage entsprechend dem Muster implementiert wurde, dann ist der
 * Anwender-bekannte Schlüssel des referenzierenden BO in der Variable 'StatusMsg'. */
          parmTF.handleErrorEvent(CONST_ClassName, "processDeactivate_DependantRecord_XXX",
                                  
structapplication_Language_BOC.StatusMsg);
/* Verarbeitung innerhalb dieses 'case' mit 'break' beenden. */
          break;
/* Ende des zu kopierenden und adaptierenden Codes.
 * ***********
 * */

        case JSBS_BO.CONST_CHANGED_INBETWEEN:
/* In der Liste angezeigtes BO wurde in der Zwischenzeit von einem anderen Anwender
 * verändert und darf nicht gelöscht werden. */
          parmTF.handleErrorEvent(CONST_ClassName, "processDeactivate_ChangedInbetween",
                                   
structapplication_Language_BOC.ChangedBy);
/* Verarbeitung innerhalb dieses 'case' mit 'break' beenden. */
          break;
        case JSBS_BO.CONST_NOT_FOUND:
/* In der Liste angezeigtes BO wurde in der Zwischenzeit von einem anderen Anwender gelöscht. */
          parmTF.handleErrorEvent(CONST_ClassName, "processDeactivate_NotFound",
         
structapplication_Language_BOC.ISOLanguageCode,
         
structapplication_Language_BOC.LanguageCodeForLabelling);
/* Verarbeitung innerhalb dieses 'case' mit 'break' beenden. */
          break;
        default:
/* Ein anderer Fehler ist beim Deaktivieren aufgetreten.
 * Fehlerbehandlungs-Methode (in der Basisklasse für das Task-Frame) aufrufen und zusätzlich
 * zur 'Location' (Klassenname, Locationscode "DupKey") auch den Status-Code und die
 * Fehler-Meldung des BOC als Parameter übergeben. */
          parmTF.handleErrorEvent(CONST_ClassName, "processDeactivate_DBError",
          Integer.toString(struct
application_Language_BOC.StatusCode),
          struct
application_Language_BOC.StatusMsg);
      }
/*
 * Setzen des Focus auf das Feld für die Eingabe des Auswahl-Codes für einen Datensatz.
 * Damit wird dem Benutzer sofort wieder ermöglicht, eine Auswahl einzugeben. */

      parmTF.get_txt_Selection().requestFocusInWindow();
/*
 * Festlegen der Schaltfläche (JButton) [ Bearbeiten ] als jene,
 * auf die mit der Enter-Taste ein Mausklick ausgelöst wird. */

      parmTF.setEnterTriggeredButton(parmTF.get_btn_Get());
    }
/*
 * Methode die prüft, ob geänderte Daten nicht gespeichert wurden und
 * wenn notwendig ein Fenster mit der Rückfrage an den Anwender anzeigt. */
    protected static boolean checkForUnstoredChanges(application_Language parmTF) {
/* 
 * Als erstes wird geprüft, ob überhaupt geänderte und nicht gespeicherte Daten
 
 * vorhanden sind. */

      
if (parmTF.structapplication_Language_BOC_Processed.isDifferent(
            
parmTF.structapplication_Language_BOC_Read)) {
/* 
 * Variable aus dem DocumentListener ob die Daten komplett und fehlerfrei sind und
 * gespeichert werden können. */

        
boolean bolSaveable = parmTF.structapplication_Language__DocumentListener.bolCompleteEntryOK;
/* 
 * Variable für die Rückgabe aus dieser Methode; 'true' signalisiert, dass
im Programm
 * mit der vom Anwender gewünschten Aktion fortgesetzt wird.
 * 'false' signalisiert, dass der Anwender die Daten korrigieren will.
*/
        
boolean bolContinue = false;
/*
 * Variable mit dem Wert der aus dem Dialog mit dem Anwender zurückgegeben wird und
 * signalisiert wie im Programm fortgesetzt wird. */

        String strProcessIndicator = 
"";
/*
 * Aufrufen des Dialog-Fensters für die Rückfrage an den Anwender.
 * Die verwendete Klasse ist unter den JavaScout-Basisklassen implementiert. */

        JSBS_UnstoredChangesDialog dlgJSBS_UnstoredChangesDialog =
            
new JSBS_UnstoredChangesDialog(parmTF, bolSaveable);
/* Durch die Definition als 'Dialog' ist das Task-Frame 'gesperrt' solange das jetzt
 * aufgerufene Fenster nicht geschlossen ist.
 * Der anschließende Code wird erst nach dem Schließen von JSBS_UnstoredChangesDialog
 * ausgeführt. */

/*
 * Übernehmen welche weitere Verarbeitung der Anwender ausgewählt hat. */

        strProcessIndicator = dlgJSBS_UnstoredChangesDialog.
strProcessIndicator;
/*
 * Klasse mit dem Dialog wird ab jetzt nicht mehr gebraucht. */

        dlgJSBS_UnstoredChangesDialog.dispose();
/* 
 * Abfragen wie der Anwender fortsetzen will und die entsprechende Verarbeitung ausführen.
*/
        
if (strProcessIndicator.compareTo(JSBS_UnstoredChangesDialog.CONST_PROCESS_STORE) == 0) {
/* 
 * Daten sollen gespeichert werden und dann soll mit der vom Anwender gewünschten Aktion
 
 * fortgesetzt werden.
*/
        
  store(parmTF);
        
  bolContinue = true;
        }

        
if (strProcessIndicator.compareTo(JSBS_UnstoredChangesDialog.CONST_PROCESS_DISCARD) == 0) {
/* 
 * Daten sollen nicht gespeichert werden; mit der vom Anwender gewünschten Aktion
fortsetzen. */
        
  bolContinue = true;
        }

        
if (strProcessIndicator.compareTo(JSBS_UnstoredChangesDialog.CONST_PROCESS_BACK) == 0) {
/* 
 * Daten sollen nicht gespeichert werden und die vom Anwender gewünschte Aktion soll nicht 

 * ausgeführt werden. Stattdessen will der Anwender die eingegebenen Daten verändern.
*/
        
  bolContinue = false;
        }
/* 
 * An die aufrufende Methode signalisieren wie der Anwender fortsetzen will.
*/
        
return bolContinue;
      }

      
else {
/* 
 * Keine ungespeicherten Daten vorhanden; der aufrufenden Methode signalisieren, dass
 * mit der gewünschten Aktion des Anwenders fortgesetzt werden kann. */

        
return true;
      }
    }
/*
 * Methode zum Füllen der Combobox für die Sprach-Auswahl bei einer sprach-spezifischen
 * Bezeichnung der Sprache. */
    protected static void fillLanguageCodeForLabelling(application_Language parmTF) {
/* 
 * Methode aus den Basisklassen zum Füllen verwenden. */

     
parmTF.frmCC.fillLanguageComboBox(parmTF.get_combo_LanguageCodeForLabelling());
/* 
 * Als ersten Eintrag in der Combobox die 'Standard'-Auswahl hinzufügen. */

     
JSBS_GUIServices.insertJComboBoxItemAtIndex0(parmTF.get_combo_LanguageCodeForLabelling(),
 
      parmTF.frmCC.structJSBS_XML_DisplayStrings.getSupplementaryText("StandardNotation"));
/* 
 * Auswahl auf den ersten Eintrag in der Combobox-Liste setzen. */

     
JSBS_GUIServices.setJComboBoxItem0(parmTF.get_combo_LanguageCodeForLabelling());
    }
/*
 * Methode zum Füllen der Combobox mit den auswählbaren Sprachen für die weitere Bearbeitung. */
    protected static void fillSelection_ISOLanguageCode(application_Language parmTF) {
/* 
 * Methode aus den Basisklassen verwenden. */

     
parmTF.frmCC.fillLanguageComboBox(parmTF.get_combo_SelectLanguage());
    }
/*
 * Methode zum Behandeln der Eingabefelder in Abhängigkeit von der Auswahl der Bezeichnungssprache.
 * Nur bei der Auswahl der 'Standard-Bezeichnung' wird auch erlaubt, die Marker zu verändern.
 * Wenn der Datensatz 'nur' die Bezeichnung der Sprache in einer weitern Sprache enthält werden die
 * zusätzlichen Attribute für die Eingabe gesperrt. */
    protected static void processSelectedLanguageCodeForLabelling(application_Language parmTF) {
/* 
 * Annahme, dass bei einer 'MobileClient'-Version mit unterbrochener Verbindung zum JAS-Server
 * die Eingaben der in den Methoden 'setFieldsForInsert(...)' und 'setFieldsForUpdate(...)'
 * festgelegten GUI-Elemente nicht verändert werden.
 * Ist in Ihrer Anwendung eine andere Regel erforderlich, löschen Sie bitte das folgende Statement
 * und adaptieren Sie diese Methode entsprechend Ihren Anforderungen. */

     
if (   (parmTF.frmCC.RunVersion == JSBS_StartFrame.CONST_MobileClient)
 
        && (! parmTF.frmCC.bolJASConnectionEstablished)) return;
/* 
 * Abfragen, ob die Standard-Bezeichnung (erster Eintrag in der Liste der Combobox) ausgewählt ist. */

     
boolean bolDefaultLanguageSelected =
 
        JSBS_GUIServices.isJComboBoxItem0Selected(parmTF.get_combo_LanguageCodeForLabelling());
/* 
 * Eine spezielle Behandlung hat bei der 'Sprache' der Marker01.
 * Dieser Marker bestimmt ob die gewählte Sprache für die Texte auf der GUI 'erlaubt' ist oder nicht.
 * Daher kann dieser Marker nur für Sprachen gewählt werden, die auch in der jeweiligen Anwendung
 * implementiert sind.
 * Innerhalb des folgenden 'if' ist der Aufruf der Methode zur Abfrage auf eine 'implementierte'
 * Sprache. */

     
if (parmTF.frmCC.isLanguageForApplication(JSBS_GUIServices.getTextFromJTextField(parmTF.get_txt_ISOLanguageCode())))
          parmTF.get_chk_Marker01().setEnabled(bolDefaultLanguageSelected);
     
else
          parmTF.get_chk_Marker01().setEnabled(false);
/* 
 * Für das 'Enable' oder 'Disable' der anderen Marker den soeben ermittelten Boolschen Wert verwenden. */

     
parmTF.get_chk_Marker02().setEnabled(bolDefaultLanguageSelected);
     
parmTF.get_chk_Marker03().setEnabled(bolDefaultLanguageSelected);
     
parmTF.get_chk_Marker04().setEnabled(bolDefaultLanguageSelected);
     
parmTF.get_chk_Marker05().setEnabled(bolDefaultLanguageSelected);
     
parmTF.get_chk_Marker06().setEnabled(bolDefaultLanguageSelected);
     
parmTF.get_chk_Marker07().setEnabled(bolDefaultLanguageSelected);
     
parmTF.get_chk_Marker08().setEnabled(bolDefaultLanguageSelected);
     
parmTF.get_chk_Marker09().setEnabled(bolDefaultLanguageSelected);
     
parmTF.get_chk_Marker10().setEnabled(bolDefaultLanguageSelected);
     
parmTF.get_chk_Marker11().setEnabled(bolDefaultLanguageSelected);
     
parmTF.get_chk_Marker12().setEnabled(bolDefaultLanguageSelected);
     
parmTF.get_chk_Marker13().setEnabled(bolDefaultLanguageSelected);
     
parmTF.get_chk_Marker14().setEnabled(bolDefaultLanguageSelected);
     
parmTF.get_chk_Marker15().setEnabled(bolDefaultLanguageSelected);
     
parmTF.get_chk_Marker16().setEnabled(bolDefaultLanguageSelected);
     
parmTF.get_chk_Marker17().setEnabled(bolDefaultLanguageSelected);
     
parmTF.get_chk_Marker18().setEnabled(bolDefaultLanguageSelected);
     
parmTF.get_chk_Marker19().setEnabled(bolDefaultLanguageSelected);
     
parmTF.get_chk_Marker20().setEnabled(bolDefaultLanguageSelected);
    }
}

zum Inhaltsverzeichnis

Muster-Code für die Klasse für den DocumentListener

Welche Platzhalter durch Bezeichnungen des eigentlichen Projektes zu ersetzen sind finden Sie im Abschnitt
Anleitung zur Adaptierung in allen Klassen und
Anleitung zur Adaptierung in der Klasse für den DocumentListener .

package application_package.client;
/*
 * Package und Klasse für die Behandlung von Status-Änderungen bei
 * GUI-Elementen vom Typ JCheckBox und JRadioButton. */

import java.awt.event.ItemEvent;
/*
 * Package mit den Klassen für die GUI-Elemente. */

import javax.swing.*;
/*
 * Packages mit den Klassen für die Behandlung von Document und -Event. */

import javax.swing.text.*;
import javax.swing.event.*;
/*
 * Package mit der Basisklassen für das TaskFrame. */

import js_base.frame.*;
/**
 *
 * @author name[at]company
 * @date 20xx-xx-xx
 *
 * @description
 *  DocumentListener-Klasse.
 *  Ein Objekt dieser Klasse ist bei allen GUI-Elementen, bei denen Text
 *  eingegeben (z.B. JTextField) oder ausgewählt (z.B. JComboBox) werden kann, 'registirert'.
 *  Wenn eine Text-Eingabe erfolgt wird eine zugehörige Methode, die in der geerbten Basisklasse
 *  definiert ist, aufgerufen.
 *  Jede dieser Methoden ruft die Methode 'anyUpdate(...) auf.
 *  In dieser Methode wird abgefragt, bei welchem GUI-Element der Text geändert wurde und
 *  die entsprechenden Prüfungen ausgeführt.
 *  Detail-Dokumentation finden Sie bei den einzelnen Methoden.
 *
 * @change-log
 * when         who               why
 * --------------------------------------------------------
 *
 */

public class application_Language__DocumentListener extends JSBS_TaskFrame__DocumentListener {
/*
 * Referenz auf das zugehörige Task-Frame. */

    
private application_Language frmTF;
/*
 * Objekte der Klasse 'Document', die für die Textaufbereitung bei GUI-Elementen zuständig sind.
 * Diese werden aus Performanz-Gründen im 'Constructor' aus den GUI-Elementen herausgelesen und
 * in den folgenden Variablen gehalten. */

    
private Document doc_txt_ISOLanguageCode;
    
private Document doc_txt_LanguageName;
/*
 * Merker (Flags) ob die Eingaben in den GUI-Elementen korrekt sind. */

    
private boolean bol_txt_ISOLanguageCode_OK;
    
private boolean bol_txt_LanguageName_OK;
    
private boolean bol_combo_LanguageCodeForLabelling_OK;
/*
 * Constructor der Klasse.
 * Code darin wird aufgerufen wenn ein Objekt dieser Klasse erstellt wird.
 * Als Parameter wird das jeweilig TaskFrame übernommen. */

    
public application_Language__DocumentListener(application_Language parmTF) {
/*
 * Aufruf des Constructors der Basisklasse (JSBS_TaskFrame__DocumentListener).
 * Darin werden die Klasse des aufrufenden TaskFrames und die 'Document's der GUI-Elemente,
 * die in der Basisklasse (JSBS_TaskFrame) definiert sind, in die dort definierten
 * Variablen übertragen. */

        
super(parmTF);
/* 
 * Übernehmen der als Parameter übergebenen Referenz auf das aufrufende Task-Frame
 * in die Variable dieser Klasse. */

        
frmTF = parmTF;
/* 
 * 'Herausholen' des jeweiligen 'Document' aus den GUI-Elementen für die Eingabe von Werten.
 * Das wird aus Performanz-Gründen einmalig im 'Constructor' durchgeführt. */

       
doc_txt_ISOLanguageCode = frmTF.get_txt_ISOLanguageCode().getDocument();
       
doc_txt_LanguageName = frmTF.get_txt_LanguageName().getDocument();
/* 
 * Erstmaliges 'Setzen' der OK-Flags.
 * Für alle als 'Mandatory' definierten GUI-Elemente wird 'false' gesetzt.
 * Damit wird bewirkt, dass beim erstmaligen Aufrufen des Task-Frames in leere Felder,
 * die als 'Mandatory' definiert sind, Werte eingegeben werden müssen. */

       
bol_txt_ISOLanguageCode_OK = !
            
frmTF.structJSBS_EntryRules.checkMandatory(frmTF.get_txt_ISOLanguageCode());
       
bol_txt_LanguageName_OK = !
            
frmTF.structJSBS_EntryRules.checkMandatory(frmTF.get_txt_LanguageName());
       
bol_combo_LanguageCodeForLabelling_OK = !
            
frmTF.structJSBS_EntryRules.checkMandatory(frmTF.get_combo_LanguageCodeForLabelling());
    }
/*
 * Methode die indirekt aufgerufen wird wenn ein Wert eines GUI-Elements verändert wird.
 * 'Indirekt aufgerufen' bedeutet, dass die mit dem 'DocumentListener' zu implementierenden
 * 'abstrakten Methoden' in der Basisklasse (JSBS_TaskFrame__DocumentListener) 'konkret'
 * implementiert sind und in diesen Methoden diese Methode (anyUpdate) aufgerufen wird.
 * Dieser Code ist also das 'Überschreiben' der Methode der geerbten Klasse. */

    
public void anyUpdate(DocumentEvent e) {
/*
 * Aufruf der Methode in der geerbten Klasse.
 * Damit werden die in den Basisklassen definierten GUI-Elemente verarbeitet. */

        
super.anyUpdate(e);
/* 
 * 'Document' welches den Event ausgelöst hat, aus dem Event ermitteln. */

        Document edoc = e.getDocument();
/* 
 * 'Document' mit allen als Variable definierten (und im Constructor ermittelten)
 * 'Document's der GUI-Elemente vergleichen. */

/* 
 * 'Document' aus einem JTextField vergleichen. */

        
if (edoc == doc_txt_ISOLanguageCode) {
/* 
 * Korrekturmassnahme wenn dieses GUI-Element in der Methode 'copy' des ActionHandlers als Feld
 * mit Schlüsselwert markiert wurde: Wiederherstellen von Standard-Farbe, -Font und -Schriftgrösse.
 * Wenn dieses GUI-Element nicht Teil des Anwender-bekannten Schlüssels ist kann dieser Code
 * weg gelassen werden. */

          JSBS_GUIServices.setDefinedForegroundColor(
frmTF.get_txt_ISOLanguageCode(), frmTF);
/* 
 * Eingabe im GUI-Feld auf Gültigkeit prüfen. Dazu wird die Methode zum Auslesen des Wertes
 * verwendet. In der verwendeten Methode wird auch der Hintergrund des GUI-Elements eingefärbt. */

         
bol_txt_ISOLanguageCode_OK = (
            JSBS_GUIServices.getTextFromJTextField(
frmTF.get_txt_ISOLanguageCode(), frmTF)
              !=
null);
/* Wenn der eingegebene Wert die Prüf-Regeln bestanden hat dann wird der Wert auf das
 * zugehörige Attribut des BO übertragen.
 * Dazu wird die Methode 'getFromGUI(...) der jeweiligen BOC-Klasse verwendet. */

          
if (bol_txt_ISOLanguageCode_OK)
            
frmTF.structapplication_Language_BOC_Processed.getFromGUI(
               
frmTF.get_txt_ISOLanguageCode(), null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null);
        }
/* 
 * 'Document' aus einem JTextField vergleichen. */

        
if (edoc == doc_txt_LanguageName) {
/* 
 * Korrekturmassnahme wenn dieses GUI-Element in der Methode 'copy' des ActionHandlers als Feld
 * mit Schlüsselwert markiert wurde: Wiederherstellen von Standard-Farbe, -Font und -Schriftgrösse.
 * Wenn dieses GUI-Element nicht Teil des Anwender-bekannten Schlüssels ist kann dieser Code
 * weg gelassen werden. */

          JSBS_GUIServices.setDefinedForegroundColor(
frmTF.get_txt_LanguageName(), frmTF);
/* 
 * Eingabe im GUI-Feld auf Gültigkeit prüfen. Dazu wird die Methode zum Auslesen des Wertes
 * verwendet. In der verwendeten Methode wird auch der Hintergrund des GUI-Elements eingefärbt. */

         
bol_txt_LanguageName_OK = (
            JSBS_GUIServices.getTextFromJTextField(
frmTF.get_txt_LanguageName(), frmTF)
              !=
null);
/* Wenn der eingegebene Wert die Prüf-Regeln bestanden hat dann wird der Wert auf das
 * zugehörige Attribut des BO übertragen.
 * Dazu wird die Methode 'getFromGUI(...) der jeweiligen BOC-Klasse verwendet. */

          
if (bol_txt_LanguageName_OK)
            
frmTF.structapplication_Language_BOC_Processed.getFromGUI(
               
null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
frmTF.get_txt_LanguageName());
        }
/* 
 * Prüfen und Aktivieren / Deaktivieren von Schaltflächen (JButtons). */

        setButtonStatus();
    }
/*
 * METHODE, die aus der Methode mit gleichem Namen in der Klasse für den Aufbau der GUI
 * aufgerufen wird wenn sich der Status eines GUI-Elementes, das einen 'ItemListener'
 * zugeordnet hat, ändert.
 * Diese GUI-Elemente mit einer Superklasse vom Typ 'JToggleButton'; in der Praxis sind das 
 * 'JCheckBox' und 'JRadioButton'.
 * Wenn keine
GUI-Elemente dieses Typs existieren wird empfohlen, diese Methode 'leer' zu lassen.
 * Wenn diese Methode entfernt wird, muß auch die Methode mit gleichem Namen in der Klasse 
 * für den Aufbau der GUI entfernt werden. 
*/
    
public void itemStateChanged(ItemEvent e) {
/*
 * Aufrufen der gleichnamigen Methode in der geerbten Klasse.
 * Darin wird behandelt, wenn die gewählte Währung (in der Combobox 'combo_LanguageSelection')
 * geändert wird. */

        
super.itemStateChanged(e);
/*
 * Namen des GUI-Elements das den ItemEvent ausgelöst hat; wird vorerst leer gelassen weil
 * der Name abhängig vom Typ aus verschiedenen Klassen ermittelt wird. */

        String strEventSourceName = 
"";
/*
 * Prüfen ob das GUI-Element vom Superklassen-Typ 'JComponent' ist.
 * Bei diesem Typ wird der Name des auslösenden GUI-Elements aus der Unterkomponente
 * 'Item' ermittelt.
*/
        
if (e.getItem() instanceof JComponent) {
/* Zuerst auf den Typ JComponent umwandeln und dann den Namen des GUI-Elementes ermitteln. */
          JComponent locJComponent =
(JComponent) e.getItem();
          strEventSourceName =
locJComponent.getName();
        }
/*
 * Prüfen ob das GUI-Element vom Superklassen-Typ 'JComboBox' ist.
 * Bei diesem Typ wird der Name des auslösenden GUI-Elements aus der Unterkomponente
 * 'Source' ermittelt.
*/
        
if (e.getSource() instanceof JComboBox) {
/* Zuerst auf den Typ JComboBox umwandeln und dann den Namen des GUI-Elementes ermitteln. */
          JComboBox locJComboBox =
(JComboBox) e.getSource();
          strEventSourceName =
 locJComboBox.getName();
        }
/*
 * Muster-Code zum Prüfen des auslösenden GUI-Elementes ob deren Status
verändert wurde. */
        
if (strEventSourceName.compareTo(frmTF.get_combo_LanguageCodeForLabelling().getName()) == 0) {
/*
 * Prüfen ob dieses GUI-Element ausgewählt ('selektiert') wurde.
 * Bei einer Änderung eines Status wird diese Methode auch dann aufgerufen, wenn die
 * Auswahlmöglichkeit eines GUI-Elements 'verlassen' (de-selected) wird - in diesem Fall
 * soll der Code nicht ausgeführt werden. */

          
if (e.getStateChange() == ItemEvent.SELECTED) {
/* ---------------------------------------------------------------------------------- */
/* 
 * Korrekturmassnahme wenn dieses GUI-Element in der Methode 'copy' des ActionHandlers als Feld
 * mit Schlüsselwert markiert wurde: Wiederherstellen von Standard-Farbe, -Font und -Schriftgrösse.
 * Wenn dieses GUI-Element nicht Teil des Anwender-bekannten Schlüssels ist kann dieser Code
 * weg gelassen werden. */

            JSBS_GUIServices.setDefinedForegroundColor(
frmTF.get_combo_LanguageCodeForLabelling(), frmTF);
/* 
 * Eingabe im GUI-Feld auf Gültigkeit prüfen. Dazu wird die Methode zum Auslesen des Wertes
 * verwendet. In der verwendeten Methode wird auch der Hintergrund des GUI-Elements eingefärbt. */

            bol_combo_LanguageCodeForLabelling_OK = (
              JSBS_GUIServices.getSelectedTextFromJComboBox(
frmTF.get_combo_LanguageCodeForLabelling())
                !=
null);
/* Wenn der eingegebene Wert die Prüf-Regeln bestanden hat dann wird der Wert auf das
 * zugehörige Attribut des BO übertragen.
 * Dazu wird die Methode 'getFromGUI(...) der jeweiligen BOC-Klasse verwendet. */

            if (bol_combo_LanguageCodeForLabelling_OK)
             
frmTF.structapplication_Language_BOC_Processed.getFromGUI(
               
null, frmTF.get_combo_LanguageCodeForLabelling(),
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null);
/* ---------------------------------------------------------------------------------- */
/*
 * ALTERNATIV oder zusätzlich zum Übertragen eines Wertes auf das BO kann es auch erforderlich
 * sein, eine Methode auszuführen.
 * Bei der Auswahl einer Bezeichnungssprache müssen Eingabefelder gesperrt / geöffnet werden. */

           
application_Language__ActionHandler.processSelectedLanguageCodeForLabelling(frmTF);
/* ---------------------------------------------------------------------------------- */
          }
        }
/*
 * Muster-Code zum Prüfen des auslösenden GUI-Elementes ob deren Status
verändert wurde. */
        
if (strEventSourceName.compareTo(frmTF.get_chk_Marker01().getName()) == 0) {
/*
 * Bei einer Checkbox wird der Wert des Attributes verändert wenn die Checkbox
 * selektiert UND auch wenn sie de-selektiert wird. */

          frmTF.structapplication_Language_BOC_Processed.getFromGUI(
               
null, null,
               
frmTF.get_chk_Marker01(), null, null, null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null);
        }
/*
 * ----------------------------------------------------------------------------------
*/
        
if (strEventSourceName.compareTo(frmTF.get_chk_Marker02().getName()) == 0) {
          frmTF.structapplication_Language_BOC_Processed.getFromGUI(
               
null, null,
               
null, frmTF.get_chk_Marker02(), null, null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null);
        }
/*
 * ----------------------------------------------------------------------------------
*/
        
if (strEventSourceName.compareTo(frmTF.get_chk_Marker03().getName()) == 0) {
          frmTF.structapplication_Language_BOC_Processed.getFromGUI(
               
null, null,
               
null, null, frmTF.get_chk_Marker03(), null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null);
        }
/*
 * ----------------------------------------------------------------------------------
*/
        
if (strEventSourceName.compareTo(frmTF.get_chk_Marker04().getName()) == 0) {
          frmTF.structapplication_Language_BOC_Processed.getFromGUI(
               
null, null,
               
null, null, null, frmTF.get_chk_Marker04(), null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null);
        }
/*
 * ----------------------------------------------------------------------------------
*/
        
if (strEventSourceName.compareTo(frmTF.get_chk_Marker05().getName()) == 0) {
          frmTF.structapplication_Language_BOC_Processed.getFromGUI(
               
null, null,
               
null, null, null, null, frmTF.get_chk_Marker05(),
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null);
        }
/*
 * ----------------------------------------------------------------------------------
*/
        
if (strEventSourceName.compareTo(frmTF.get_chk_Marker06().getName()) == 0) {
          frmTF.structapplication_Language_BOC_Processed.getFromGUI(
               
null, null,
               
null, null, null, null, null,
               
frmTF.get_chk_Marker06(), null, null, null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null);
        }
/*
 * ----------------------------------------------------------------------------------
*/
        
if (strEventSourceName.compareTo(frmTF.get_chk_Marker07().getName()) == 0) {
          frmTF.structapplication_Language_BOC_Processed.getFromGUI(
               
null, null,
               
null, null, null, null, null,
               
null, frmTF.get_chk_Marker07(), null, null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null);
        }
/*
 * ----------------------------------------------------------------------------------
*/
        
if (strEventSourceName.compareTo(frmTF.get_chk_Marker08().getName()) == 0) {
          frmTF.structapplication_Language_BOC_Processed.getFromGUI(
               
null, null,
               
null, null, null, null, null,
               
null, null, frmTF.get_chk_Marker08(), null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null);
        }
/*
 * ----------------------------------------------------------------------------------
*/
        
if (strEventSourceName.compareTo(frmTF.get_chk_Marker09().getName()) == 0) {
          frmTF.structapplication_Language_BOC_Processed.getFromGUI(
               
null, null,
               
null, null, null, null, null,
               
null, null, null, frmTF.get_chk_Marker09(), null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null);
        }
/*
 * ----------------------------------------------------------------------------------
*/
        
if (strEventSourceName.compareTo(frmTF.get_chk_Marker10().getName()) == 0) {
          frmTF.structapplication_Language_BOC_Processed.getFromGUI(
               
null, null,
               
null, null, null, null, null,
               
null, null, null, null, frmTF.get_chk_Marker10(),
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null);
        }
/*
 * ----------------------------------------------------------------------------------
*/
        
if (strEventSourceName.compareTo(frmTF.get_chk_Marker11().getName()) == 0) {
          frmTF.structapplication_Language_BOC_Processed.getFromGUI(
               
null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
frmTF.get_chk_Marker11(), null, null, null, null,
               
null, null, null, null, null,
               
null);
        }
/*
 * ----------------------------------------------------------------------------------
*/
        
if (strEventSourceName.compareTo(frmTF.get_chk_Marker12().getName()) == 0) {
          frmTF.structapplication_Language_BOC_Processed.getFromGUI(
               
null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null, frmTF.get_chk_Marker12(), null, null, null,
               
null, null, null, null, null,
               
null);
        }
/*
 * ----------------------------------------------------------------------------------
*/
        
if (strEventSourceName.compareTo(frmTF.get_chk_Marker13().getName()) == 0) {
          frmTF.structapplication_Language_BOC_Processed.getFromGUI(
               
null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null, null, frmTF.get_chk_Marker13(), null, null,
               
null, null, null, null, null,
               
null);
        }
/*
 * ----------------------------------------------------------------------------------
*/
        
if (strEventSourceName.compareTo(frmTF.get_chk_Marker14().getName()) == 0) {
          frmTF.structapplication_Language_BOC_Processed.getFromGUI(
               
null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null, null, null, frmTF.get_chk_Marker14(), null,
               
null, null, null, null, null,
               
null);
        }
/*
 * ----------------------------------------------------------------------------------
*/
        
if (strEventSourceName.compareTo(frmTF.get_chk_Marker15().getName()) == 0) {
          frmTF.structapplication_Language_BOC_Processed.getFromGUI(
               
null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null, null, null, null, frmTF.get_chk_Marker15(),
               
null, null, null, null, null,
               
null);
        }
/*
 * ----------------------------------------------------------------------------------
*/
        
if (strEventSourceName.compareTo(frmTF.get_chk_Marker16().getName()) == 0) {
          frmTF.structapplication_Language_BOC_Processed.getFromGUI(
               
null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
frmTF.get_chk_Marker16(), null, null, null, null,
               
null);
        }
/*
 * ----------------------------------------------------------------------------------
*/
        
if (strEventSourceName.compareTo(frmTF.get_chk_Marker17().getName()) == 0) {
          frmTF.structapplication_Language_BOC_Processed.getFromGUI(
               
null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null, frmTF.get_chk_Marker17(), null, null, null,
               
null);
        }
/*
 * ----------------------------------------------------------------------------------
*/
        
if (strEventSourceName.compareTo(frmTF.get_chk_Marker18().getName()) == 0) {
          frmTF.structapplication_Language_BOC_Processed.getFromGUI(
               
null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null, null, frmTF.get_chk_Marker18(), null, null,
               
null);
        }
/*
 * ----------------------------------------------------------------------------------
*/
        
if (strEventSourceName.compareTo(frmTF.get_chk_Marker19().getName()) == 0) {
          frmTF.structapplication_Language_BOC_Processed.getFromGUI(
               
null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null, null, null, frmTF.get_chk_Marker19(), null,
               
null);
        }
/*
 * ----------------------------------------------------------------------------------
*/
        
if (strEventSourceName.compareTo(frmTF.get_chk_Marker20().getName()) == 0) {
          frmTF.structapplication_Language_BOC_Processed.getFromGUI(
               
null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null, null, null, null, null,
               
null, null, null, null, frmTF.get_chk_Marker20(),
               
null);
        }
/*
 * Muster-Code zum Prüfen des auslösenden GUI-Elementes ob deren Status
verändert wurde. */
        
if (strEventSourceName.compareTo(frmTF.get_combo_SelectLanguage().getName()) == 0) {
/*
 * Prüfen ob dieses GUI-Element ausgewählt ('selektiert') wurde.
 * Bei einer Änderung eines Status wird diese Methode auch dann aufgerufen, wenn die
 * Auswahlmöglichkeit eines GUI-Elements 'verlassen' (de-selected) wird - in diesem Fall
 * soll der Code nicht ausgeführt werden. */

          
if (e.getStateChange() == ItemEvent.SELECTED) {
           
application_Language__ActionHandler.getSelectionCriteria(frmTF);
           
application_Language__ActionHandler.redisplayBOList(frmTF);
/* ---------------------------------------------------------------------------------- */
          }
        }

/* 
 * Prüfen und Aktivieren / Deaktivieren von Schaltflächen (JButtons). */

        setButtonStatus();

    }
/*
 * METHODE, die alle Flags (boolsche Variablen die signalisieren, ob die Eingabe im zugehörigen
 * GUI-Element die Eingabe-Regel erfüllt) zu einer boolschen Variable zusammenfaßt.
 * Die dafür verwendete Variable ist in der geerbten Klasse definiert. */

    
private void checkEntriesOK() {
/* Boolsche Operation die prüft, ob alle Eingaben den Eingabe-Regeln entsprechen. */
        
bolCompleteEntryOK =
             
bol_txt_ISOLanguageCode_OK
           &&
bol_txt_LanguageName_OK;
    }
/*
 * Methode, die prüft ob die Schaltfläche 'btn_Store' (Speichern) zu aktivieren oder zu
 * deaktivieren ist. */

    
private void setButtonStatus_Store() {
/* Zuerst die Methode aufrufen, die alle OK-Flags in eine Variable zusammenfaßt. */
        checkEntriesOK();

/* 
 * Bei der Version 'MobileClient' ist keine spezielle Prüfung notwendig.
 * Grund dafür ist, dass bereits in der Methode 'setFieldsForUpdate(...)' die Felder für
 * die Eingabe gesperrt werden können.
 * Wenn alle Felder gesperrt sind ist auch keine Veränderung des Datensatzes möglich und
 * damit wird auch die Schaltfläche 'store' nicht aktiv. */

/*
 * Boolsche Operation innerhalb der 'setEnabled'-Methode des JButton:
 * Es müssen alle Eingaben (in den GUI-Elementen) der jeweiligen Eingabe-Regel entsprechen
 * (geprüft über 'bolCompleteEntryOK')
 *  und
 * mindestens eine Variable des BO muß verändert worden sein
 * (geprüft durch den Vergleich des BO nach dem Lesen von / Speichern auf der Datenbank oder
 * nach dem 'Kopieren' mit dem BO, dass die aktuellen Eingaben in den GUI-Elementen enthält). */

        
frmTF.get_btn_Store().setEnabled(bolCompleteEntryOK &&
              (
frmTF.structapplication_Language_BOC_Read.isDifferent(
                  
frmTF.structapplication_Language_BOC_Processed)));
    }
/*
 * Methode, die prüft ob die Schaltfläche 'btn_Copy' (Kopieren) zu aktivieren oder zu
 * deaktivieren ist. */

    
private void setButtonStatus_Copy() {
/* Zuerst die Methode aufrufen, die alle OK-Flags in eine Variable zusammenfaßt. */
        checkEntriesOK();

/* 
 * Bei der Version 'MobileClient' muss abgefragt werden, ob ein 'Copy' und damit ein 'Insert'
 * eines neuen Datensatzes ausgeführt werden darf wenn die Verbindung zum JAS (Java Application Server)
 * unterbrochen ist.
 * Die Variable 'bolAllowInsertWithMobileClientOffline' ist in der Basisklasse 'JSBS_TaskFrame'
 * definiert und der Wert wird in der Klasse für die GUI (Task-Frame) für dieses Teilprogramm festgelegt.
 * Mit dem folgenden Code wird gesteuert, ob die Schaltfläche bei einer Unterbrechung der Verbindung
 * zum JAS aktiviert bleibt oder deaktiviert ist. */

      boolean bolAllowCopy = true;
      if (   (frmTF.frmCC.RunVersion == JSBS_StartFrame.CONST_MobileClient)
      
    && (! frmTF.frmCC.bolJASConnectionEstablished)) {
      
      bolAllowCopy = frmTF.bolAllowInsertWithMobileClientOffline;
     
}
/*
 * Boolsche Operation innerhalb der 'setEnabled'-Methode des JButton:
 * Es müssen alle Eingaben (in den GUI-Elementen) der jeweiligen Eingabe-Regel entsprechen
 * (geprüft über 'bolCompleteEntryOK')
 *  und
 * es darf keine Variable des BO seit dem letzen Lesen von / schreiben auf die Datenbank
 * verändert worden sein
 * (geprüft durch den Vergleich des BO nach dem Lesen von / Speichern auf der Datenbank oder
 * nach dem 'Kopieren' mit dem BO, dass die aktuellen Eingaben in den GUI-Elementen enthält). */

        
frmTF.get_btn_Copy().setEnabled(bolCompleteEntryOK && bolAllowCopy &&
              ! (
frmTF.structapplication_Language_BOC_Read.isDifferent(
                    
frmTF.structapplication_Language_BOC_Processed)));
    }
/*
 * Methode, die alle Methoden, die einzelne Schaltflächen (JButtons) aktivieren bzw.
 * deaktivieren, aufruft. */

    
public void setButtonStatus() {
/* Button-Status für die Schaltflächen zur Auswahl oder zum Löschen eines BO (Datensatzes)
 * setzen. Diese Methode ist in der geerbten Basis-Klasse implementiert. */

        
super.setButtonStatus_Selection();
/* Methoden dieser Klasse aufrufen. */
        setButtonStatus_Store();
        setButtonStatus_Copy();
    }

}

zum Inhaltsverzeichnis

Anleitung zur Adaptierung in allen Klassen

Am leichtesten funktioniert die Anpassung des Muster-Codes an die eigenen Erfordernisse durch Kopieren des Muster-Codes und Verwendung von Edit > Find/Replace... .

Wenn vorher der zu ersetzende Text markiert wurde, wird er zu findende Text von der Suchfunktion übernommen.

Für diesen Muster-Code gibt es keine Möglichkeit, gleichartige Änderungen durch 'Replace' vorzunehmen.
Die 'Find'-Funktion ist aber hilfreich zum Finden der beschriebenen 'Platzhalter'.

zum Inhaltsverzeichnis

Änderung des Namens des Java-Packages

package application_package.client;
/*

Der Name application_package kommt mehrmals in den drei Klassen vor.
Suchen Sie nach diesem Begriff und ersetzen Sie ihn durch Ihren gewählten Namen für das Package.

zum Inhaltsverzeichnis

Änderung des Namens der Klassen

In der Klasse für das Frame:
*/
public class application_Language extends JSBS_TaskFrame {
/*
In der Klasse für den 'ActionHandler':
*/
public class application_Language__ActionHandler {
/*
In der Klasse für den 'DocumentListener':
*/
public class application_Language__DocumentListener extends JSBS_TaskFrame__DocumentListener {
/*
Dieser Name muß mit dem Namen der Klasse übereinstimmen, der beim Eröffnen der Klasse gewählt wurde.
Durch das Ersetzen des Platzhalters
application_Language durch den Namen der Klasse für das Frame (z.B. JSProjAssist_Language) kann in allen drei Klassen der jeweils richtige Namen eingesetzt werden.
Durch die gewählte Namens-Konvention in den Muster-Codes werden dadurch auch die Referenzen auf verbundene Klassen richtig gestellt.
Erfreulicher Nebeneffekt dieses 'Find/Replace' ist, dass auch die Variablen für die BO (Business Objects) angepasst werden.

zum Inhaltsverzeichnis

Adaptieren der Kommentare

'Kein Kommentar ist besser als ein falscher'.

Im Muster-Code ist der Zweck der jeweiligen Klassen bereits beschrieben.
Als Ergänzung fehlen noch der Name des/der Authors/Authorin und das Datum der Erstellung.

zum Inhaltsverzeichnis



Anleitung zur Adaptierung in der Klasse für das Frame (GUI) 

In den folgenden Abschnitten sind jene Adaptierungen beschrieben, die nur in der Klasse für das Frame zur Anzeige der GUI-Elemente vorgenommen werden müssen.

zum Inhaltsverzeichnis

Änderung des Namens der Klasse des CommandCenters

public class application_Language extends JSBS_TaskFrame {
/*
 * Variable für die Referenz auf die Klasse des Start-Frame (CommandCenter). */

    
protected application_CommandCenter frmCC;
/*
 * Zugehöriges DocumentListener Objekt definieren. */

Der Name dieser Klasse kommt zwei mal im Muster-Code vor.
Wenn Sie 'Find/Replace' zum Ersetzen verwenden, geben Sie bitte den Text
application_CommandCenter als Suchbegriff ein; damit wird nur der Name dieser Klasse ersetzt und nicht auch Teile anderer 'Platzhalter' die application enthalten.

zum Inhaltsverzeichnis

Einsetzen des internen Codes für den Aufruf des Task-Frames

Über den internen Aufruf-Code wird innerhalb der CommandCenter-Klasse (Start-Frame) das entsprechende Task-Frame aufgerufen.
Das Definieren in der Datei 'Tasks.xml' und die Abfrage innerhalb der CommandCenter-Klasse sind unter
Leitfaden für die Entwicklung von Heavyweight-Clients mit dem JS-FCF – Alle Schritte zur Entwicklung des Task-Frames > Task-Frame im 'CommandCenter' aufrufen beschrieben.

Das Einsetzen des internen Aufruf-Codes im folgenden Teil des Muster-Codes ist notwendig um in der Liste des CommandCenter-Fensters den angezeigten Aufruf-Code anzeigen zu können.
Wenn Sie jetzt noch keinen internen Aufruf-Code für das Task-Frame festgelegt haben, dann vergessen Sie bitte nicht, die folgende Adaptierung später auszuführen.

/* 
 * 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. */
. . . . .
. . . . .
/*
 * Eintragen dieses Tasks in die Tabelle beim CommandCenter.
 * Der von der aufgerufenen Methode zurückgelieferte ID wird verwendet
 * wenn die angezeigten Daten verändert werden sollen.
 * Das Verändern der angezeigten Daten ist sinnvoll, wenn der Anwender einen
 * Datensatz aus der Liste auswählt (Methode 'getForUpdate(..)' in der Klasse
 * xxx__ActionHandler.
 * Der 2. Parameter beim Aufruf der Methode ist der interne Code dieser Klasse
 * in der Datei 'Tasks.xml'.
 * Der 3. Parameter ist eine Kurzfassung der angezeigten Daten;
 * diese Daten sind jetzt noch nicht vorhanden. */

      
dblCC_TaskID = frmCC.addOpenTaskFrame(this, "internal_Selection_Code", "");
/* 
 * Methode, die nach der 'Construction' der Klasse ausgeführt werden soll, aufrufen.

. . . . .
. . . . .

Für das Aufrufen des Teilprogramms ist es notwendig, einen Eintrag in der Datei 'Tasks.xml'  vorzunehmen.
Ein Muster für einen solchen Eintrag finden Sie im Abschnitt
Tätigkeiten ausserhalb des Codierens > Einträge in 'Tasks.xml' in diesem Dokument.

zum Inhaltsverzeichnis

Entfernen der nicht benötigten 'Marker' aus dem pnl_DetailFields

Die 'Marker' sind dafür vorgesehen, dass die Verwendung einer Sprache für verschiedenene Themenbereiche erlaubt oder eingeschränkt werden kann.
Zum Beispiel kann bei einem Anwendungsprogramm für ein Warenwirtschaftssystem festgelegt werden, dass interne Dokumente auf bestimmte Sprachen beschränkt werden während Dokumente an Kunden in allen definierten Sprachen erlaubt sind.

Abhängig vom zu entwickelnden Anwendungsprogramm werden wahrscheinlich nur eine geringere Zahl als die 20 vorgesehenen 'Marker' benötigt werden.
Im folgenden Beispiel wird angenommen, dass nur 4 Marker benötigt werden - deswegen wird die Platzierungsanweisung für die Marker 05 bis 20 gelöscht.

/* 
 * Platzieren des nächsten GUI-Elements. */
          GridBagConstraints gbc_chk_Marker05 = new GridBagConstraints();
/* Definition der Platzierungs-Eigenschaften. */
          gbc_chk_Marker05.gridx = 0;
          gbc_chk_Marker05.gridy = 6;
          gbc_chk_Marker05.weightx = 1;
          gbc_chk_Marker05.fill = GridBagConstraints.HORIZONTAL;
          gbc_chk_Marker05.anchor = GridBagConstraints.LINE_END;
          gbc_chk_Marker05.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_chk_Marker05(), gbc_chk_Marker05);
/* 
 * Platzieren des nächsten GUI-Elements. */
. . . . . .
. . . . . .
          gbc_chk_Marker20.insets = new Insets(3, 3, 3, 3);
/* Platzieren des GUI-Elements auf dem JPanel. */
          get_pnl_DetailFields().add(get_chk_Marker20(), gbc_chk_Marker20);



Beachten Sie bitte, dass Sie nicht weiter als bis zum markierten Bereich löschen.

zum Inhaltsverzeichnis



Anleitung zur Adaptierung bei Verwendung von Währungen in der Klasse für die GUI 

Adaptieren in der Methode initialize_frame

In dieser Methode wird für das 'ContentPane' das bereits in der geerbten Basisklasse enthaltene pnl_Main_With_Currency_Selection verwendet.

Dazu wird im Muster-Code die entsprechende Zeile auskommentiert – und die davor stehende Zeile gelöscht oder unter 'Kommentar' gesetzt:


/* 
 * METHODE mit der das Frame (Window) angezeigt wird. */

. . . . .

 * (JSBS_StartFrame) festgelegt. */

//      setContentPane(get_pnl_Main());
/* 
 * Wenn in Ihrer Anwendung die Auswahl von Währungen möglich sein soll,
 * dann kommentieren Sie bitte die folgende Zeile aus und setzen die
 * Zeile oberhalb unter Kommentar. */

//      setContentPane(get_pnl_Main_With_Currency_Selection());
. . . . .
. . . . .

zum Inhaltsverzeichnis

Adaptieren in der Methode initialize_after_frame

In dieser Methode sind zwei Änderungen notwendig:

zum Inhaltsverzeichnis

Anleitung zur Adaptierung in der Klasse für den ActionHandler 

In den folgenden Abschnitten sind jene Adaptierungen beschrieben, die nur in der Klasse für den ActionHandler durchzuführen sind.

zum Inhaltsverzeichnis

Verarbeiten eventuell im CommandCenter eingegebener Parameter - Methode processCCParameters(...)

In dieser Methode werden Verarbeitungen codiert die durch bereits im CommandCenter (Start-Frame) eingegebene Werte gesteuert werden.
Im Muster-Code ist ein Algorithmus implementiert, der im Parameter-Wert 1 des ISO-Codes der Sprachen und im Parameter-Wert 2 den ISO-Code der Sprache für die Bezeichnung der Sprache erwartet.

Wenn Sie einen anderen Algorithmus verwenden wollen finden Sie eine Sammlung von Beispielen für die verschiedensten Anwendungsfälle im Dokument Muster-Code für die Klassen eines Task-Frame > Spezieller Muster-Code > Übernehmen von Werten aus den Parameter-Feldern des CommandCenter .

zum Inhaltsverzeichnis



Adaptieren der Methode processDeactivate(...)

In dieser Methode ist der Code für jeden möglichen Hinderungsgrund (des Deaktivierens) zu Adaptieren.
Die Hinderungsgründe wurden unter
Muster-Code für die BO-Klassen zur Implementierung der Sprache (JSBS_Language_BOx) > Anleitung zur Adaptierung der Interface mit den Status-Codes definiert.

Folgende Adaptierungen sind erforderlich:

/*
 * Methode zum 'Deaktivieren' eines Business-Objects aus der angezeigten Liste.
 * 'Deaktivieren' heisst, dass die Gültigkeit des BO beendet wird - der Datensatz
 * aber noch auf der Datenbank-Tabelle bleibt
 * (Teil der GUI mit den GUI-Elementen für die Eingabe von Werten) der GUI. */
    protected static void processDeactivate(application_Language parmTF) {
/* 
 * Nummer aus dem Auswahl-Feld der GUI auslesen.

. . . . .
. . . . .
 * Prüfen ob die Datenbank-Operation fehlerfrei war; dazu den Status-Code des
 * BOC abfragen. */
      switch(structapplication_Language_BOC.StatusCode) {
        case JSBS_BO.CONST_OK
. . . . .
. . . . .
/* 
 * ***********
 * Das folgende case-Statement ist für jeden Hinderungsgrund für das Deaktivieren
 * (weil noch mindestens ein Datensatz, der den zu deaktivierenden Datensatz als
 * Fremdschlüssel hat, existiert) zu kopieren und zu adaptieren.*/

        case application_Language_BOC.CONST_DEACTIVATE_INHIBIT_REASON_Reason:
/* Das BO ist Fremdschlüssel eines anderen BO und darf nicht deaktiviert werden.
 * Wenn die Abfrage entsprechend dem Muster implementiert wurde, dann ist der
 * Anwender-bekannte Schlüssel des referenzierenden BO in der Variable 'StatusMsg'. */
          parmTF.handleErrorEvent(CONST_ClassName, "processDeactivate_DependantRecord_XXX",
                                   
structapplication_Language_BOC.StatusMsg);
/* Verarbeitung innerhalb dieses 'case' mit 'break' beenden. */
          break;
/* Ende des zu kopierenden und adaptierenden Codes.
 * ***********
 * */

        case JSBS_BO.CONST_CHANGED_INBETWEEN:
/* In der Liste angezeigtes BO wurde in der Zwischenzeit von einem anderen Anwender
. . . . .
. . . . .

zum Inhaltsverzeichnis

Anleitung zur Adaptierung in der Klasse für den DocumentListener 

Alle in der Klasse für den DocumentListener notwendigen Adaptierungen wurden bereits mit den Arbeiten im Abschnitt Anleitung zur Adaptierung in allen Klassen ausgeführt.

zum Inhaltsverzeichnis

Tätigkeiten ausserhalb des Codierens

Einträge in 'Tasks.xml'

Damit das Teilprogramm aufgerufen werden kann, muss die Datei 'Tasks.xml' um die entsprechenden Einträge ergänzt werden.
Eine ausführliche Anleitung finden Sie im Dokument
Leitfaden für die Entwicklung von Heavyweight-Clients mit dem JS-FCF – Alle Schritte zur Entwicklung des Task-Frames > Task-Frame im 'CommandCenter' aufrufen .
Wenn Sie bereits mit dem System der XML-Elemente in der Datei 'Tasks.xml' vertraut sind, können Sie das folgende Muster kopieren und Adaptieren.
Das Muster enthält die Einstellung, dass im Start-Frame (CommandCenter) bereits der ISO-Codes der Sprache und der ISO-Code für die Bezeichnungssprache als Werte für die Selektion eines Datensatzes erfasst werden können.
  <Task>
    <DisplayedCode>
ES</DisplayedCode>
    <InternalCode>
ES</InternalCode>
    <Description>
Erlaubte Sprachen verwalten</Description>
    <Parameter1Label>
ISO-Code der Sprache</Parameter1Label>
    <Parameter1ToolTipText>
ISO-Sprach-Code für die Weitergabe an das zu startende Teilprogramm</Parameter1ToolTipText>
    <Parameter1InfoMessage>ISO-Sprach-Code für die Weitergabe an das zu startende Teilprogramm</Parameter1InfoMessage>
    <Parameter1CommonElementForVerification>txt_ISOLanguageCode</Parameter1CommonElementForVerification>
    <Parameter2Label>ISO-Code für die Bezeichnungssprache</Parameter2Label>
    <Parameter2ToolTipText>
ISO-Sprach-Code für die Anzeige des Sprachen-Namens im zu startenden Teilprogramm</Parameter2ToolTipText>
    <Parameter2InfoMessage>ISO-Sprach-Code für die Anzeige des Sprachen-Namens im zu startenden Teilprogramm</Parameter2InfoMessage>
    <Parameter2CommonElementForVerification>txt_ISOLanguageCode</Parameter2CommonElementForVerification>
  </Task>

zum Inhaltsverzeichnis

Allgemein und individuell verwendbare Text-Elemente erfassen

Eine Anleitung für das Erfassen der im Muster-Code möglichen Warnungs- und Fehler-Meldungen finden Sie im Dokument Leitfaden für die Entwicklung von Heavyweight-Clients mit dem JS-FCF – Alle Schritte zur Entwicklung des Task-Frames > Sprachabhängigen Text für die GUI-Elemente erfassen .

In der folgenden Tabelle finden Sie alle verwendeten symbolischen Namen für die individuellen GUI-Elemente und Text-Vorschläge für den angezeigten Text

interner Name innerhalb des Anwendungsprogramms

sichtbarer Text oder
Referenz auf einen allgemein gültigen Text

Text für 'Tooltip' und Informationszeile am unteren Rand des Fensters

Prüfregeln

lbl_ApplicationTitle1

Referenz: lbl_ApplicationTitle1

Festgelegt durch Referenz


lbl_ApplicationTitle2

Erlaubte Sprachen verwalten
(eventuell in anderer Schriftart, -größe)

keiner


lbl_ISOLanguageCode

Referenz: lbl_ISOLanguageCode

Festgelegt durch Referenz


txt_ISOLanguageCode

Referenz: txt_ISOLanguageCode

Festgelegt durch Referenz

Festgelegt durch Referenz

lbl_LanguageCodeForLabelling

Referenz: lbl_LanguageCodeForLabelling

Festgelegt durch Referenz


combo_LanguageCodeForLabelling

Referenz: txt_LanguageCodeForLabelling

Festgelegt durch Referenz

Festgelegt durch Referenz

lbl_LanguageName

Bezeichnung der Sprache:

Bezeichnung der Sprache in der gewählten Sprache.


txt_LanguageName


Bezeichnung der Sprache in der gewählten Sprache.

keine

lbl_MarkerHeadline

Gültigkeit der Sprache für folgende Bereiche:

keiner


chk_Markerxx

Individueller Text entsprechend der Gültigkeit des Markers

Individueller Text entsprechend der Gültigkeit des Markers

keine

lbl_SelectLanguage

Einschränkung der Auswahl auf eine Sprache:

Sprache auswählen dessen Datensätze zur Auswahl gelistet werden sollen.


combo_SelectLanguage


Sprache auswählen dessen Datensätze zur Auswahl gelistet werden sollen.


lbl_SelectionListHeader

Referenz: lbl_SelectionListHeader

Festgelegt durch Referenz


lbl_Selection

Referenz: lbl_Selection

Festgelegt durch Referenz


txt_Selection

Referenz: txt_Selection

Festgelegt durch Referenz

Festgelegt durch Referenz



Für die Überschriften der Liste für die Auswahl (interner Name pnl_SelectionListTable) sind folgende sichtbare Bezeichnungen zu den internen Namen (definiert in der Klasse JSBS_Language_BOC_Set) vorgeschlagen:

interner Name innerhalb der BOC-Klasse

vorgeschlagener Text für die Überschrift der Tabellenspalte

Anmerkungen

Row-Number

Auswahl

Dieser Wert enthält die Nummer der Tabellenzeile; damit wird die Auswahl durch Eingabe der Nummer im Eingabefeld (interner Name txt_Selection) ermöglicht.

ISOLanguageCode

ISO-Sprach-Code


LanguageCodeForLabelling

Bezeichnungs-Sprache

Dieser Wert ist noch einmal in LanguageCodeForLabellingAndLanguageName enthalten.

LanguageName

Bezeichnung der Sprache

Dieser Wert ist noch einmal in LanguageCodeForLabellingAndLanguageName enthalten.

LanguageCodeForLabellingAndLanguageName

Bezeichnung der Sprache

Dieser Wert ist eine Zusammenfassung beider Werte in einer Spalte:
Dabei wird der Sprach-Code durch einen Doppelpunkt getrennt vor der Bezeichnung der Sprache angezeigt.

zum Inhaltsverzeichnis

Texte für Fehler- und Warnungs-Meldungen erfassen

Eine Anleitung für das Erfassen der im Muster-Code möglichen Warnungs- und Fehler-Meldungen finden Sie im Dokument Leitfaden für die Entwicklung von Heavyweight-Clients mit dem JS-FCF – Alle Schritte zur Entwicklung des Task-Frames > Warnungs- und Fehlermeldungen erfassen .

Zusätzlich sind noch Fehler-Meldungen notwendig, die den Anwender darauf hinweisen, dass eine zusätzliche Bezeichnung (in anderer Sprache) für eine Sprache erst erfasst werden kann, nachdem der Standard-Datensatz angelegt wurde und dass die Sprache nicht deaktiviert werden darf weil sie Fremdschlüssel in Datensätzen für Land, anderer Sprache oder Währung ist:

Herkunfts-Klasse
(individuell für jedes Anwendungsprogramm / Task-Frame)

Herkunfts-Code
(definiert im Muster-Code)

Standard-Herkunfts-'Klasse'
(importiert aus der Muster-Datei)

Standard-Herkunfts-Code
(importiert aus der Muster-Datei)

Verarbeitung

application_Language__ActionHandler

store_NoDefaultDataSet

JS_FCF_Standard

NoDefaultSetForISOLanguageCode

Warnung

application_Language__ActionHandler

processDeactivate_AdditionalLanguageLabelling

JS_FCF_Standard

LanguageReferencedInLanguage

Warnung

application_Language__ActionHandler

processDeactivate_Referenced_In_Country

JS_FCF_Standard

LanguageReferencedInCountry

Warnung

application_Language__ActionHandler

processDeactivate_Referenced_In_Currency

JS_FCF_Standard

LanguageReferencedInCurrency

Warnung


Individuell für Ihr Anwendungsprogramm sind noch die Warnungs-Meldungen, wenn eine bestimmte Sprache nicht deaktiviert werden darf (weil es in einem anderen Business Object noch referenziert wird), zu erfassen.
Die für Ihr Anwendungsprogramm zutreffenden Fälle wurden innerhalb der Methode
processDeactivate(...) codiert (beschrieben im Abschnitt Adaptieren der Methode processDeactivate(...) dieses Dokuments.

zum Inhaltsverzeichnis

Weitere Schritte und verwandte Dokumentation

Dokument

Inhalt

Leitfaden für die Entwicklung von Heavyweight-Clients mit dem JS-FCF – Alle Schritte zur Entwicklung des Task-Frames  

In diesem Leitfaden werden alle Tätigkeiten für die Entwicklung eines Task-Frames (Teilprogramm für die Abwicklung eines Geschäftsfalls) gelistet – auch jene die nicht direkt das Codieren in Java umfassen.

zum Inhaltsverzeichnis