> Inhalt: JavaScout Base-System (JSBS)

JSBS_XML_FunctionKeys – Basisklasse für das Verarbeiten der XML-Struktur mit den Function-Key Zuordnungen

* 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:
2011-02-28

Inhaltsverzeichnis

Code 
Erklärungen und Anwendungsbeispiele 
Verwandte Dokumentation
 

Code

package js_base.xml;

import java.awt.Component;
import java.util.*;
import javax.swing.*;

import
org.jdom.*;

import js_base.frame.*;
import js_base.structures.JSBS_UniversalParameters;
import
js_base.utilities.JSBS_SystemServices;
/**
 *
 * @author kurt[at]javascout(dot)biz
 * @date 2007-09-05
 *
 * @description
 * de:
 *  Klasse mit spezialisierten Methoden zum Ermitteln der Zuordnung
 *  von Funktionstasten (der Tastatur) und Dateien mit Grafischen Symbolen (Icons)
 *  zu Schaltflächen auf der Benutzeroberfläche (GUI).
 *  Diese Klasse erbt JSBS_XML_Base und verwendet dessen Methoden zum lesen
 *  der Datei, die die XML-Struktur enthält.
 * en:

 *  Class with specialized methods for assigning an Icon and a Function-Key-Code
 *  to a JButton.
 *  This class inherits JSBS_XML_Base and uses its methods to read a file
 *  containing a XML-structure.
 *
 * @change-log
 * when         who               why
 * --------------------------------------------------------
 *
 */

public class JSBS_XML_FunctionKeys extends JSBS_XML_Base {
/*
 * de:
 * Variable für die Struktur mit den Universal-Parametern.
 * Diese enthält die gewählte Sprache (verwendet beim Anzeigen des Funktionstasten-Namens
 * in der gewählten Sprache) und den Namen des Dateiverzeichnisses mit den Dateien mit den
 * grafischen Symbolen (Icons).
 * en:
 * Variable for the structure with the Universal-Parameters.
 * It contains the chosen language for the user (used to display the Function-Key-Names
 * in the chosen language) and the directory-name where the files for the icons are stored. */
       
JSBS_UniversalParameters structJSBS_UniversalParameters;
/*
 * -------------------------------
 * de:
 * CONSTRUCTOR der Klasse.
 * Der Name der zu öffnenden Datei wird aus der Struktur UniversalParameters ermittelt.
 * en:
 * CONSTRUCTOR of the class.
 * The name of the file to be opened is derived from the UniversalParameters. */
    public JSBS_XML_FunctionKeys(JSBS_StartFrame parmCC) {
/*
 * de: Ausführen des Codes im Constructor der geerbten Klasse.
 * en: Perform the code in the constructor of the inherited class */
        
super(parmCC);
/*
 * de:
 * Aufheben der Struktur mit den Universal-Parametern; diese enthält die gewählte Sprache
 * für den Anwender und den Namen des Datei-Verzeichnisses in dem die Dateien für die grafischen
 * Symbole (Icons) gespeichert sind
 * en:
 * Keep the Universal-Parameter-structure; it contains the language chosen by the user
 * and the directory-name where the files for the icons are stored. */
       
structJSBS_UniversalParameters = parmCC.structJSBS_UniversalParameters ;
/* 
 * de:
 * Holen des Dateinamens für die XML-Struktur mit den Funktionstasten-Zuordnungen.
 * Dazu wird das Datei-Verzeichnis mit den sprach-spezifischen Dateien und  der
 * Datei-Name für die Datei mit der XML-Struktur zusammen gesetzt.
 * en:
 * Get the filename for the XML-structure with the function-key-assignments.
 * This is done by concatenating the directory with the language dependant files
 * and the filename for the file with the XML-structure. */
        
String locstrFileName =
            parmCC.
structJSBS_UniversalParameters.strTextElementsDirectoryName +
            JSBS_UniversalParameters.
CONST_FUNCTIONKEYS_FILE_NAME
/* 
 * de:
 * RootElement der XML-Struktur lesen,
 * Die Methode ist in der Superklasse - das ist die geerbte Klasse - implementiert.

 * en:
 * Read the RootElement of the XML-structure.
 * The
method implemented in the superclass - i.e. the class inherited. */
        
readXMLFile(locstrFileName);
    }
/*
 * -------------------------------
 * de:
 * CONSTRUCTOR der Klasse.
 * Der Name der zu öffnenden Datei (und das Vezeichnis) wird als Parameter übergeben.
 * en:
 * CONSTRUCTOR of the class.
 * The name of the file (and directory) to be opened is passed as parameter. */
    public JSBS_XML_FunctionKeys(String parmDirectoryAndFileName) {
/* 
 * de: Ausführen des Codes im Constructor der geerbten Klasse.
 * en: Perform the code in the constructor of the inherited class */

        super(null);
/* 
 * de:
 * RootElement der XML-Struktur lesen,
 * Die Methode ist in der Superklasse - das ist die geerbte Klasse - implementiert.

 * en:
 * Read the RootElement of the XML-structure.
 * The
method implemented in the superclass - i.e. the class inherited. */
        
readXMLFile(parmDirectoryAndFileName);
    }

/*
 * ************************************************** */
/* de:
 * Methode zum 'Holen' eines XML-Elementes das die Spezifikation einer
 * Funktions-Taste abbildet.
 * Auswahlkriterien sind Name der JFrame-Klasse in der der zugehörige
 * JButton enthalten ist und Name des JButton.
 * en:
 * Method to 'get' a XML-Element defining a Function-Key and belonging
 * to the <FrameIndividualAssignments> division of the XML-structure.
 * Selection-criteria are the JFrame-classe containing the JButton and
 * the name of the JButton.
*/
    private Element getKeyByButtonName(String parmstrFrameClassName,
                                       String parmstrButtonName) {
/* 
 * Variablen / Variables:
 */
/* de:
 * Element für den Bereich <FrameIndividualAssignments>,
 * Element für ein <FrameIndividualAssignment>,
 * Element für einen <FrameClassName>, Zeichenkette mit dem Namen der FrameClass,
 * Element für eine Funktionstaste innerhalb von <FrameIndividualAssignment>,
 * Element für einen <ButtonName> und die Zeichenkette mit dem Namen der Schaltfläche
 * - damit wird der gesuchte 'ButtonName' aus den Parametern verglichen.
 * en:
 * element for the <FrameIndividualAssignments> Division,
 * element for one <FrameIndividualAssignment>,
 * element for the <FrameClassName>, String with the name of the FrameClass,
 * element for one Key within the <FrameIndividualAssignment>,
 * element for the <ButtonName> and String with the name of the button
 * - to compare it to the searched one. */
      
Element elementFrameIndividualAssignments;
      Element elementFrameIndividualAssignment;
      Element elementFrameClassName;
      String  strFrameClassName;
      Element elementFunctionKeyAssignment;
      Element elementButtonName;
      String  strButtonName;
/* de:
 * Liste alle <FrameIndividualAssignment>-Elemente;
 * Anzahl und Index zum Durchsuchen der Liste.
 * en:
 * List of all <FrameIndividual Assignment>-elements;
 * size and index for searching it. */
      
List listFrameIndividualAssignment;
      int intlistFrameIndividualAssignmentSize;
      int intlistFrameIndividualAssignmentIndex = 0;
/* de:
 * Liste alle <FunctionKeyAssignment>-Elemente;
 * Anzahl und Index zum Durchsuchen der Liste.
 * en:
 * List of all <FunctionKeyAssignment>-elements,
 * size and index for searching it. */
      
List listFunctionKeyAssignment;
      int intlistFunctionKeyAssignmentSize;
      int intlistFunctionKeyAssignmentIndex = 0;
/* de:
 * Status-Code setzen; damit kann am Ende der Methode geprüft werden, ob etwas
 * unerwünscht gelaufen ist.
 * en:

 * Set the StatusCode to OK to see at the end of the method if anything went wrong. */
      StatusCode = CONST_OK;
/* de:
 * Prüfen ob überhaupt eine XML-Struktur vorhanden ist.
 * en:
 * Initial verification of there is any XML-structure present. */
      if (XML_RootElement == null) {
/* de:
 * Keine XML-Struktur in der Datei; Status-Code setzen und
 * 'null' Wert zurückliefern.
 * en:
 * XML-structure not present within the file; set Status-Code and
 * return a 'null'-value. */
        StatusCode = CONST_NOT_WELL_FORMED;
        
return null;
      }
/* de:
 * Allgemeine Prüfung ob ein untergeordnetes XML-Element für den Bereich 
 * <FrameIndividualAssignments> vorhanden ist.
 * en:
 * General check if there are child-elements named
 * <FrameIndividualAssignments> present. */
      
elementFrameIndividualAssignments =
       
XML_RootElement.getChild("FrameIndividualAssignments");
      if (elementFrameIndividualAssignments == null) {
/* de:
 * Bereich <FrameIndividualAssignments> nicht vorhanden.
 * Definitionen könnten im Bereich <CommonAssignments> sein;
 * Deswegen vorerst nur den Status-Code setzen.
 * en:
 * <FrameIndividualAssignments>-Division not present.
 * Definitions might be in the <CommonAssignments> division;
 * so only the Status-Code is set for now. */
        StatusCode = CONST_FRAMEINDIVIDUAL_DIVISION_NOT_PRESENT;
      }
/* de:
 * Lesen der Liste mit den <FrameIndividualAssignment>-Elementen
 * und ermitteln der Anzahl dieser.
 * en:
 * Get the list of <FrameIndividualAssignment>-elements
 * and the number of elements within. */
      
listFrameIndividualAssignment = elementFrameIndividualAssignments.getChildren();
      intlistFrameIndividualAssignmentSize = listFrameIndividualAssignment.size();
      if (intlistFrameIndividualAssignmentSize == 0) {
/* de:
 * Bereich <FrameIndividualAssignments> nicht vorhanden.
 * Definitionen könnten im Bereich <CommonAssignments> sein;
 * Deswegen vorerst nur den Status-Code setzen.
 * en:
 * <FrameIndividualAssignments>-Division not present.
 * Definitions might be in the <CommonAssignments> division;
 * so only the Status-Code is set for now. */
        StatusCode = CONST_FRAMECLASS_NOT_PRESENT;
      }
/* de:
 * Jedes Element der Liste untersuchen ob der Name der JFrame-Klasse
 * mit jenem Namen übereinstimmt,
 * en:

 * Inspect each element of the list to find the element
   fitting the Class-Name of the JFrame passed as parameter. */
      for (intlistFrameIndividualAssignmentIndex = 0;
           intlistFrameIndividualAssignmentIndex < intlistFrameIndividualAssignmentSize;
           intlistFrameIndividualAssignmentIndex++) {
        elementFrameIndividualAssignment = (Element)

           listFrameIndividualAssignment.get(intlistFrameIndividualAssignmentIndex);
/* de:
 * Element <FrameClassName> holen und dessen Wert mit dem Namen der Klasse,
 * die als Parameter übergeben wurde, vergleichen.
 * en:

 * Get the element with the <FrameClassName> to compare its content
 * with the Class-Name of the passed parameter. */
        elementFrameClassName =
            elementFrameIndividualAssignment.getChild(
"FrameClassName");
        if (elementFrameClassName == null) {
          
StatusCode = CONST_FRAMECLASS_NOT_PRESENT;
        }
        
else {
          strFrameClassName = elementFrameClassName.getTextTrim();
         
if (strFrameClassName.compareTo(parmstrFrameClassName) == 0) {
/* de:
 * Passendes <FrameClassName>-Element innerhalb der Liste gefunden.
 * Liste mit den <FunctionKeyAssignment>-Elementen bilden und jedes untersuchen.
 * en:
 * Fitting <FrameClassName>-element found within the list;
 * extract the list of <FunctionKeyAssignment>s and inspect each of it. */
            
listFunctionKeyAssignment =
               elementFrameIndividualAssignment.getChildren(
"FunctionKeyAssignment");
            intlistFunctionKeyAssignmentSize = listFunctionKeyAssignment.size();
            if (intlistFunctionKeyAssignmentSize == 0) {
              
StatusCode = CONST_GUI_ELEMENT_NOT_PRESENT;
            }
            for (intlistFunctionKeyAssignmentIndex = 0;
                 intlistFunctionKeyAssignmentIndex < intlistFunctionKeyAssignmentSize;
                 intlistFunctionKeyAssignmentIndex++) {
              elementFunctionKeyAssignment
= (Element)
                listFunctionKeyAssignment.get(intlistFunctionKeyAssignmentIndex);
/* de:
 * Vergleichen ob der <ButtonName> des XML-Elements <FunctionKeyAssignment>
 * jenem entspricht der als Parameter übergeben wurde.
 * en:
 * Check if the <ButtonName> of the inspected <FunctionKeyAssignment>
 * fits the searched one passed as parameter. */
              elementButtonName =
                elementFunctionKeyAssignment.getChild(
"ButtonName");
              if (elementButtonName != null) {
                strButtonName = elementButtonName.getTextTrim();
                if (strButtonName != null) {
                  if (strButtonName.compareTo(parmstrButtonName) == 0)
/* de:
 * XML-Element für den gesuchten ButtonName und FrameClassName gefunden;
 * XML-Element an die aufrufende Methode zurückgeben.

 * en:
 * XML-element for searched ButtonName and FrameClassName found;
 * return the XML-element. */
                      return elementFunctionKeyAssignment;
                }
              }
            }
          }
        }
      }
/* de:
 * Gesuchtes Element bis jetzt nicht in der XML-Struktur gefunden;
 * Bereich <CommonAssignments> durchsuchen und zurückliefern was dort gefunden wird.

 * en:

 * Searched element not found within the XML-structure till now;
 * search the <CommonAssignments> division and return what is found there. */
      StatusCode = CONST_GUI_ELEMENT_NOT_PRESENT;
      
return getCommonKeyByButtonName(parmstrButtonName);
    }
/*
 * ************************************************** */
/* de:
 * Methode zum 'Holen' eines XML-Elementes das die Spezifikation einer
 * Funktions-Taste abbildet.
 * Auswahlkriterien sind Name der JFrame-Klasse in der der zugehörige
 * JButton enthalten ist und der interne Code der Funktionstaste.
 * Der 'interne Code' ist jene Zeichenkette die innerhalb von Java verwendet wird.
 * en:
 * Method to 'get' a XML-Element defining a Function-Key and belonging
 * to the <FrameIndividualAssignments> division of the XML-structure.
 * Selection-criteria are the JFrame-classe containing the JButton and
 * the internal code of the function-key.
 * The 'internal code' is the string of characters that is used within Java.
*/
    private Element getKeyByInternalKeyCode(String parmstrFrameClassName,
                                            String parmstrInternalKeyCode) {
/* 
 * Variablen / Variables:
 */
/* de:
 * Element für den Bereich <FrameIndividualAssignments>,
 * Element für ein <FrameIndividualAssignment>,
 * Element für einen <FrameClassName>, Zeichenkette mit dem Namen der FrameClass,
 * Element für eine Funktionstaste innerhalb von <FrameIndividualAssignment>,
 * Element für einen <InternalKeyCode> und die Zeichenkette mit dem internen Code
 * der Funktionstaste
 * - damit wird der gesuchte 'InternalKeyCode' aus den Parametern verglichen.
 * en:
 * element for the <FrameIndividualAssignments> Division,
 * element for one <FrameIndividualAssignment>,
 * element for the <FrameClassName>, String with the name of the FrameClass,
 * element for one Key within the <FrameIndividualAssignment>,
 * element for the <InternalKeyCode> and String with the internal code of the
 * function-key
 * - to compare it to the searched one passed as parameter. */
      
Element elementFrameIndividualAssignments;
      Element elementFrameIndividualAssignment;
      Element elementFrameClassName;
      String  strFrameClassName;
      Element elementFunctionKeyAssignment;
      Element elementInternalKeyCode;
      String  strInternalKeyCode;
/* de:
 * Liste alle <FrameIndividualAssignment>-Elemente;
 * Anzahl und Index zum Durchsuchen der Liste.
 * en:
 * List of all <FrameIndividual Assignment>-elements;
 * size and index for searching it. */
      
List listFrameIndividualAssignment;
      int intlistFrameIndividualAssignmentSize;
      int intlistFrameIndividualAssignmentIndex = 0;
/* de:
 * Liste alle <FunctionKeyAssignment>-Elemente;
 * Anzahl und Index zum Durchsuchen der Liste.
 * en:
 * List of all <FunctionKeyAssignment>-elements,
 * size and index for searching it. */
      
List listFunctionKeyAssignment;
      int intlistFunctionKeyAssignmentSize;
      int intlistFunctionKeyAssignmentIndex = 0;
/* de:
 * Status-Code setzen; damit kann am Ende der Methode geprüft werden, ob etwas
 * unerwünscht gelaufen ist.
 * en:

 * Set the StatusCode to OK to see at the end of the method if anything went wrong. */
      StatusCode = CONST_OK;
/* de:
 * Prüfen ob überhaupt eine XML-Struktur vorhanden ist.
 * en:
 * Initial verification of there is any XML-structure present. */
      if (XML_RootElement == null) {
/* de:
 * Keine XML-Struktur in der Datei; Status-Code setzen und
 * 'null' Wert zurückliefern.
 * en:
 * XML-structure not present within the file; set Status-Code and
 * return a 'null'-value. */
        StatusCode = CONST_NOT_WELL_FORMED;
        
return null;
      }
/* de:
 * Allgemeine Prüfung ob ein untergeordnetes XML-Element für den Bereich 
 * <FrameIndividualAssignments> vorhanden ist.
 * en:
 * General check if there are child-elements named
 * <FrameIndividualAssignments> present. */
      
elementFrameIndividualAssignments =
       
XML_RootElement.getChild("FrameIndividualAssignments");
      if (elementFrameIndividualAssignments == null) {
/* de:
 * Bereich <FrameIndividualAssignments> nicht vorhanden.
 * Definitionen könnten im Bereich <CommonAssignments> sein;
 * Deswegen vorerst nur den Status-Code setzen.
 * en:
 * <FrameIndividualAssignments>-Division not present.
 * Definitions might be in the <CommonAssignments> division;
 * so only the Status-Code is set for now. */
        StatusCode = CONST_FRAMEINDIVIDUAL_DIVISION_NOT_PRESENT;
      }
/* de:
 * Lesen der Liste mit den <FrameIndividualAssignment>-Elementen
 * und ermitteln der Anzahl dieser.
 * en:
 * Get the list of <FrameIndividualAssignment>-elements
 * and the number of elements within. */
      
listFrameIndividualAssignment = elementFrameIndividualAssignments.getChildren();
      intlistFrameIndividualAssignmentSize = listFrameIndividualAssignment.size();
      if (intlistFrameIndividualAssignmentSize == 0) {
/* de:
 * Bereich <FrameIndividualAssignments> nicht vorhanden.
 * Definitionen könnten im Bereich <CommonAssignments> sein;
 * Deswegen vorerst nur den Status-Code setzen.
 * en:
 * <FrameIndividualAssignments>-Division not present.
 * Definitions might be in the <CommonAssignments> division;
 * so only the Status-Code is set for now. */
        StatusCode = CONST_FRAMECLASS_NOT_PRESENT;
      }
/* de:
 * Jedes Element der Liste untersuchen ob der Name der JFrame-Klasse
 * mit jenem Namen übereinstimmt,
 * en:

 * Inspect each element of the list to find the element
   fitting the Class-Name of the JFrame passed as parameter. */
      for (intlistFrameIndividualAssignmentIndex = 0;
           intlistFrameIndividualAssignmentIndex < intlistFrameIndividualAssignmentSize;
           intlistFrameIndividualAssignmentIndex++) {
        elementFrameIndividualAssignment = (Element)

           listFrameIndividualAssignment.get(intlistFrameIndividualAssignmentIndex);
/* de:
 * Element <FrameClassName> holen und dessen Wert mit dem Namen der Klasse,
 * die als Parameter übergeben wurde, vergleichen.
 * en:

 * Get the element with the <FrameClassName> to compare its content
 * with the Class-Name of the passed parameter. */
        elementFrameClassName =
            elementFrameIndividualAssignment.getChild(
"FrameClassName");
        if (elementFrameClassName == null) {
          
StatusCode = CONST_FRAMECLASS_NOT_PRESENT;
        }
        
else {
          strFrameClassName = elementFrameClassName.getTextTrim();
         
if (strFrameClassName.compareTo(parmstrFrameClassName) == 0) {
/* de:
 * Passendes <FrameClassName>-Element innerhalb der Liste gefunden.
 * Liste mit den <FunctionKeyAssignment>-Elementen bilden und jedes untersuchen.
 * en:
 * Fitting <FrameClassName>-element found within the list;
 * extract the list of <FunctionKeyAssignment>s and inspect each of it. */
            
listFunctionKeyAssignment =
               elementFrameIndividualAssignment.getChildren(
"FunctionKeyAssignment");
            intlistFunctionKeyAssignmentSize = listFunctionKeyAssignment.size();
            if (intlistFunctionKeyAssignmentSize == 0) {
              
StatusCode = CONST_GUI_ELEMENT_NOT_PRESENT;
            }
            for (intlistFunctionKeyAssignmentIndex = 0;
                 intlistFunctionKeyAssignmentIndex < intlistFunctionKeyAssignmentSize;
                 intlistFunctionKeyAssignmentIndex++) {
              elementFunctionKeyAssignment
= (Element)
                listFunctionKeyAssignment.get(intlistFunctionKeyAssignmentIndex);
/* de:
 * Vergleichen ob der <InternalKeyCode> des XML-Elements <FunctionKeyAssignment>
 * jenem entspricht der als Parameter übergeben wurde.
 * en:
 * Check if the <InternalKeyCode> of the inspected <FunctionKeyAssignment>
 * fits the searched one passed as parameter. */
              elementInternalKeyCode =
                elementFunctionKeyAssignment.getChild(
"InternalKeyCode");
              if (elementInternalKeyCode != null) {
                strInternalKeyCode = elementInternalKeyCode.getTextTrim();
                if (strInternalKeyCode != null) {
                  if (strInternalKeyCode.compareTo(parmstrInternalKeyCode) == 0)
/* de:
 * XML-Element für den gesuchten InternalKeyCode und FrameClassName gefunden;
 * XML-Element an die aufrufende Methode zurückgeben.

 * en:
 * XML-element for searched InternalKeyCode and FrameClassName found;
 * return the XML-element. */
                      return elementFunctionKeyAssignment;
                }
              }
            }
          }
        }
      }
/* de:
 * Gesuchtes Element bis jetzt nicht in der XML-Struktur gefunden;
 * Bereich <CommonAssignments> durchsuchen und zurückliefern was dort gefunden wird.

 * en:

 * Searched element not found within the XML-structure till now;
 * search the <CommonAssignments> division and return what is found there. */
      StatusCode = CONST_GUI_ELEMENT_NOT_PRESENT;
      
return getCommonKeyByInternalKeyCode(parmstrInternalKeyCode);
    }
/*
 * ************************************************** */
/* de:
 * Methode zum 'Holen' eines XML-Elementes aus dem Bereich <CommonAssignments>
 * mit dem als Parameter übergebenem Namen des zugehörigen Buttons (Schaltfläche).
 * en:

 * Method to 'get' a XML-Element belonging to the <CommonAssignments> division
 * with the name of the assigned button which was passed as parameter. */
    private Element getCommonKeyByButtonName(String parmstrButtonName) {
/* 
 * Variables:
 */
/* de:
 * Element für den Bereich <CommonAssignments>,
 * Element für ein <FunctionKeyAssignment>,
 * Element für den <ButtonName> und
 * Zeichenkette für den Wert des Elementes <ButtonName>.
 * en:
 * Element for the <CommonAssignments> Division,
 * element for one <FunctionKeyAssignment>,
 * element for the <ButtonName> and
 * String with the assigned Name of the Button. */
      
Element elementCommonAssignments;
      Element elementFunctionKeyAssignment;
      Element elementButtonName;
      String  strButtonName;
/* de:
 * Liste mit allen Elementen <FunctionKeyAssignment>, Anzahl und Index.
 * en:
 * List of all <FunctionKeyAssignment>-elements, size and index. */
      
List listFunctionKeyAssignment;
      int intlistFunctionKeyAssignmentSize;
      int intlistFunctionKeyAssignmentIndex = 0;
/* de:
 * Prüfen ob überhaupt eine XML-Struktur vorhanden ist.
 * en:
 * Initial verification of there is any XML-structure present. */
      if (XML_RootElement == null) {
/* de:
 * Keine XML-Struktur in der Datei; Status-Code setzen und
 * 'null' Wert zurückliefern.
 * en:
 * XML-structure not present within the file; set Status-Code and
 * return a 'null'-value. */
        StatusCode = CONST_NOT_WELL_FORMED;
        
return null;
      }
/* de:
 * Allgemeine Prüfung ob ein
<FunctionKeyAssignment>-Element vorhanden ist.
 * en:
 * General check if there are child-elements named <CommonAssignments> present. */
      
elementCommonAssignments = XML_RootElement.getChild("CommonAssignments");
      if (elementCommonAssignments == null) {
        
StatusCode = CONST_COMMONELEMENTS_DIVISION_NOT_PRESENT;
        
return null;
      }
/* de:
 * Erstellen der Liste mit den <FunctionKeyAssignment>-Elementen und
 * die Anzahl der Elemente in der Liste.
 * en:
 * Get the list of <FunctionKeyAssignment>-elements and
 * the number of elements within. */
      
listFunctionKeyAssignment = elementCommonAssignments.getChildren();
      intlistFunctionKeyAssignmentSize = listFunctionKeyAssignment.size();
      if (intlistFunctionKeyAssignmentSize == 0) {
        
StatusCode = CONST_COMMONELEMENTS_DIVISION_NOT_PRESENT;
        
return null;
      }
/* de:
 * Untersuchen jedes Elements der Liste um jenes zu finden bei dem
 * der Wert von <ButtonName>
mit dem übergebenen Parameter übereinstimmt.
 * en:
 * Inspect each element of the list to find the element
   fitting the Button-Name passed as parameter. */
      for (intlistFunctionKeyAssignmentIndex = 0;
           intlistFunctionKeyAssignmentIndex < intlistFunctionKeyAssignmentSize;
           intlistFunctionKeyAssignmentIndex++) {
        elementFunctionKeyAssignment
= (Element)
           listFunctionKeyAssignment.get(intlistFunctionKeyAssignmentIndex);
/* de:
 * Holen des XML-Elements <ButtonName>
damit sein Wert mit dem
 * übergebenen Parameter verglichen werden kann.
 * en:
 * Get the XML-element <ButtonName> to compare its value
 * with the passed parameter. */
        elementButtonName = elementFunctionKeyAssignment.getChild("ButtonName");
        if (elementButtonName != null) {
/* de:
 * Vergleichen ob das gesuchte Element gefunden wurde;
 * sonst beim
nächsten Element in der Liste mit dem Vergleichen weitermachen.
 * en:
 * Compare if the element was found;
 * otherwise skip and continue the comparison with the next element of the list. */
          strButtonName = elementButtonName.getTextTrim();
          
if (strButtonName.compareTo(parmstrButtonName) == 0) {
/* de:
 * Passendes
<FunctionKeyAssignment>-Element in der Liste gefunden;
 * an die aufrufende Methode zurück geben
!
 * en:
 * Fitting <FunctionKeyAssignment>-element found within the list; return it ! */
            return elementFunctionKeyAssignment;
          }
        }
      }
/* de:
 * Gesuchter ButtonName nicht in der XML-Struktur gefunden; Fehler zurückgeben
!
 * en:
 * Searched ButtonName not found within the XML-structure; return the error. */
      StatusCode = CONST_GUI_ELEMENT_COMMON_NOT_PRESENT;
      
return null;
    }
/*
 * ************************************************** */
/* de:
 * Methode zum 'Holen' eines XML-Elementes aus dem Bereich <CommonAssignments>
 * mit dem als Parameter übergebenem internem Code der Funktionstaste.
 * en:

 * Method to 'get' a XML-Element belonging to the <CommonAssignments> division
 * with the internal code of the function-key which was passed as parameter. */
    private Element getCommonKeyByInternalKeyCode(String parmstrInternalKeyCode) {
/* 
 * Variables:
 */
/* de:
 * Element für den Bereich <CommonAssignments>,
 * Element für ein <FunctionKeyAssignment>,
 * Element für den <InternalKeyCode> und
 * Zeichenkette für den Wert des Elementes <InternalKeyCode>.
 * en:
 * Element for the <CommonAssignments> Division,
 * element for one <FunctionKeyAssignment>,
 * element for the <InternalKeyCode> and
 * String with the assigned value of <InternalKeyCode>. */
      
Element elementCommonAssignments;
      Element elementFunctionKeyAssignment;
      Element elementInternalKeyCode;
      String  strInternalKeyCode;
/* de:
 * Liste mit allen Elementen <FunctionKeyAssignment>, Anzahl und Index.
 * en:
 * List of all <FunctionKeyAssignment>-elements, size and index. */
      
List listFunctionKeyAssignment;
      int intlistFunctionKeyAssignmentSize;
      int intlistFunctionKeyAssignmentIndex = 0;
/* de:
 * Prüfen ob überhaupt eine XML-Struktur vorhanden ist.
 * en:
 * Initial verification of there is any XML-structure present. */
      if (XML_RootElement == null) {
/* de:
 * Keine XML-Struktur in der Datei; Status-Code setzen und
 * 'null' Wert zurückliefern.
 * en:
 * XML-structure not present within the file; set Status-Code and
 * return a 'null'-value. */
        StatusCode = CONST_NOT_WELL_FORMED;
        
return null;
      }
/* de:
 * Allgemeine Prüfung ob ein
<FunctionKeyAssignment>-Element vorhanden ist.
 * en:
 * General check if there are child-elements named <CommonAssignments> present. */
      
elementCommonAssignments = XML_RootElement.getChild("CommonAssignments");
      if (elementCommonAssignments == null) {
        
StatusCode = CONST_COMMONELEMENTS_DIVISION_NOT_PRESENT;
        
return null;
      }
/* de:
 * Erstellen der Liste mit den <FunctionKeyAssignment>-Elementen und
 * die Anzahl der Elemente in der Liste.
 * en:
 * Get the list of <FunctionKeyAssignment>-elements and
 * the number of elements within. */
      
listFunctionKeyAssignment = elementCommonAssignments.getChildren();
      intlistFunctionKeyAssignmentSize = listFunctionKeyAssignment.size();
      if (intlistFunctionKeyAssignmentSize == 0) {
        
StatusCode = CONST_COMMONELEMENTS_DIVISION_NOT_PRESENT;
        
return null;
      }
/* de:
 * Untersuchen jedes Elements der Liste um jenes zu finden bei dem
 * der Wert von <InternalKeyCode>
mit dem übergebenen Parameter übereinstimmt.
 * en:
 * Inspect each element of the list to find the element
   fitting the internal-key-code passed as parameter. */
      for (intlistFunctionKeyAssignmentIndex = 0;
           intlistFunctionKeyAssignmentIndex < intlistFunctionKeyAssignmentSize;
           intlistFunctionKeyAssignmentIndex++) {
        elementFunctionKeyAssignment
= (Element)
           listFunctionKeyAssignment.get(intlistFunctionKeyAssignmentIndex);
/* de:
 * Holen des XML-Elements <InternalKeyCode>
damit sein Wert mit dem
 * übergebenen Parameter verglichen werden kann.
 * en:
 * Get the XML-element <InternalKeyCode> to compare its value
 * with the passed parameter. */
        elementInternalKeyCode =
            elementFunctionKeyAssignment.getChild(
"InternalKeyCode");
        if (elementInternalKeyCode != null) {
/* de:
 * Vergleichen ob das gesuchte Element gefunden wurde;
 * sonst beim
nächsten Element in der Liste mit dem Vergleichen weitermachen.
 * en:
 * Compare if the element was found;
 * otherwise skip and continue the comparison with the next element of the list. */
          strInternalKeyCode = elementInternalKeyCode.getTextTrim();
          
if (strInternalKeyCode.compareTo(parmstrInternalKeyCode) == 0) {
/* de:
 * Passendes
<FunctionKeyAssignment>-Element in der Liste gefunden;
 * an die aufrufende Methode zurück geben
!
 * en:
 * Fitting <FunctionKeyAssignment>-element found within the list; return it ! */
            return elementFunctionKeyAssignment;
          }
        }
      }
/* de:
 * Gesuchter InternalKeyCode nicht in der XML-Struktur gefunden; Fehler zurückgeben
!
 * en:
 * Searched InternalKeyCode not found within the XML-structure; return the error. */
      StatusCode = CONST_GUI_ELEMENT_COMMON_NOT_PRESENT;
      
return null;
    }
/* *****
 * METHODE, die den JSBS-internen Code einer Funktionstaste aus dem XML-Element
 * <InternalKeyCode> ermittelt.

 * en:

 * METHOD to get the KeyCode used internally within the JSBS out of a XML-element 
 * 
<InternalKeyCode>. */
    private String getProperty_InternalKeyCode(Element parmelementKey) {
/* 
 * de: Auslesen des XML-Elements für den <DisplayedKeyCode>.

 * en:
Get the XML-element representing <DisplayedKeyCode>. */
        Element elementKeyCode = parmelementKey.getChild(
"InternalKeyCode");
/* 
 * de:

 * Prüfen ob das XML-Element für <InternalKeyCode> vorhanden ist und auch ein Wert

 * vorhanden ist. Dann den JSBS-internen Wert (Zeichenkette) zurück liefern
.
 * en:

 *
Verify if the XML-element for the <InternalKeyCode> exists and if it contains a
 * value, too. In that case return the value (as a string)
. */
        if (elementKeyCode != null) {
    
      String strInternalKeyCode = elementKeyCode.getTextTrim();
     
     if (strInternalKeyCode != null) return strInternalKeyCode;
        }

/* 
 * de:

 *
XML-Element <InternalKeyCode> nicht vorhanden. Sollte zwar nicht passieren - rechtfertigt 
 *
nicht einen Absturz oder Fehler. Leere Zeichenkette zurück liefern.
 * en:

 *
XML-element <InternalKeyCode> is missing. Should not happen - but not severe enough to 
 *
dump the program or return an error. Return an empty string. */
        return "";
    }

/* *****
 * METHODE, die den angezeigten Code einer Funktionstaste aus dem XML-Element
 * <DisplayedKeyCode> ermittelt.

 * Ist kein <DisplayedKeyCode> in der XML-Struktur definiert damm wird der <InternalKeyCode>

 * aus der XML-Struktur ermittelt
und dazu der anzuzeigende Code aus der Klasse
 * mit den System-Services geholt.
 * en:

 * METHOD to get the KeyCode to be displayed out of a XML-element <DisplayedKeyCode>.
 * If there is no <DisplayedKeyCode> defined within the XML-structure then the 

 * <InternalKeyCode> is read out of the XML-structure
and the language-specific Key-Code
 *
to be displayed is read out of the class with the system-services. */
    private String getProperty_DisplayedKeyCode(Element parmelementKey) {
/* 
 * de: Auslesen des XML-Elements für den <DisplayedKeyCode>.

 * en:
Get the XML-element representing <DisplayedKeyCode>. */
        Element elementKeyCode = parmelementKey.getChild(
"DisplayedKeyCode");
/* 
 * de:

 * Prüfen ob das XML-Element für <DisplayedKeyCode> vorhanden ist und auch ein Wert

 * vorhanden ist. Dann den Wert (anzuzeigende Zeichenkette) zurück liefern
.
 * en:

 *
Verify if the XML-element for the <DisplayedKeyCode> exists and if it contains a
 * value, too. In that case return the value (string to be displayed)
. */
        if (elementKeyCode != null) {
    
      String strDisplayedKeyCode = elementKeyCode.getTextTrim();
     
     if (strDisplayedKeyCode != null) return strDisplayedKeyCode;
        }

/* 
 * de: Auslesen des XML-Elements für den <InternalKeyCode>.

 * en:
Get the XML-element representing <InternalKeyCode>. */
        elementKeyCode = parmelementKey.getChild(
"InternalKeyCode");
/* 
 * de:

 *
Wenn auch kein <InternalKeyCode> definiert ist dann eine leere Zeichenkette zurück liefern.
 * en:

 *
If an <InternalKeyCode> is missing too, then return an empty string. */
        if (elementKeyCode == null) return "";
        String strInternalKeyCode = elementKeyCode.getTextTrim();
        
if (strInternalKeyCode == null) return "";
/* de:
 * Das XML-Element <InternalKeyCode> enthält einen gültigen Text;
 * die Methode aus der Klasse mit den System-Services benutzen um den
 * sprach-spezifischen Text für die Anzeige zu ermitteln.
 * en:
 * The XML-element <InternalKeyCode> contains a valid Text; use the method to get
 * the language-specific Key-Code for display. */

       
return JSBS_SystemServices.getDisplayedKeyCode(
            strInternalKeyCode,
structJSBS_UniversalParameters.strLanguageCode);
    }

/* *****
 * de:

 * METHODE zum Auslesen des Namens der Schaltfläche (Button); das ist die Referenz

 * zum JButton der mit dieser Funktionstaste 'angeklickt' werden soll.

 * en:

 * METHOD to get the Button-Name; that is the reference to the JButton
 * that should be triggered with the Function-Key. */
    private String getProperty_ButtonName(Element parmelementKey) {
/* 
 * de: Auslesen des XML-Elements mit dem <ButtonName>.

 * en:
Get the XML-element representing <ButtonName>. */
        Element elementButtonName = parmelementKey.getChild(
"ButtonName");
        
if (elementButtonName != null) return elementButtonName.getTextTrim();
        
else return "";
    }
/* *****
 *

 * de:

 * METHODE zum Auslesen des Namens der Datei mit dem grafischen Symbol (Icon), das

 * auf der Schaltfläche (JButton) oder dem Reiter (Tab) eines JTabbedPane angezeigt

 *
werden soll.
 * en:

 *
METHOD to get the File-Name for the Icon to be attached to the JButton or
 *
the Tab of a JTabbedPane. */
    private String getProperty_IconFileName(Element parmelementKey) {
/* 
 * de: Auslesen des XML-Elements mit dem <IconFileName>.

 * en:
Get the XML-element representing <IconFileName>. */
        Element elementIconFileName = parmelementKey.getChild(
"IconFileName");
        
if (elementIconFileName != null) return elementIconFileName.getTextTrim();
        
else return "";
    }

/* *****
 *

 * de:

 * METHODE zum Auslesen des Namens der Datei mit dem grafischen Symbol (Icon), das

 * als 'Warnungs-Hinweis' auf dem Reiter (Tab) eines JTabbedPane angezeigt werden soll.

 * en:

 *
METHOD to get the File-Name for the Icon to be attached to the Tab of a JTabbedPane
 * in the case of a 'Warning'-condition
. */
    private String getProperty_WarningIconFileName(Element parmelementKey) {
/* 
 * de: Auslesen des XML-Elements mit dem <WarningIconFileName>.

 * en:
Get the XML-element representing <WarningIconFileName>. */
        Element elementIconFileName = parmelementKey.getChild(
"WarningIconFileName");
        
if (elementIconFileName != null) return elementIconFileName.getTextTrim();
        
else return "";
    }

/*
 * ************************************************** */
/*
 * de:
 * Methode, um die Eigenschaften, die in der XML-Struktur definiert sind,
 * auf ein GUI-Element vom Typ JButton zu übertragen.
 * en:

 * Method to transfer the properties defined in the XML-structure
 * to a GUI-element of type JButton. */

    
public int processJButton(JButton parmJButton, String parmFrameClassName) {
/*
 * de:
 * Passendes Element aus der XML-Struktur finden und alle seine Unter-Elemente
 * mit den Eigenschaften die auf den JButtton übertragen werden sollen.
 * en:
 * Find the fitting element out of the XML-structure and all its
 * sub-elements representing all properties to be transferred to the JButton */

      Element elementKey;
/* de:
 * Prüfen, dass alle übergebenen Parameter gültig sind; sonst besteht die Gefahr dass
 * der Code sich unvorhergesehen verhält.
 * en:
 * Verify that the passed parameters are valid; otherwise there is unpredicted behaviour. */

      if (parmFrameClassName == null) return CONST_GUI_ELEMENT_NOT_PRESENT;
      if (parmJButton == null) return CONST_GUI_ELEMENT_NOT_PRESENT;
/*
 * de:
 * Name des JButton ermitteln und zum Holen des passenden XML-Elementes verwenden.
 * en:

 * Get the Name of the JButton; used as identifier to get the fitting <Key> out of the XML-structure. */
      String strButtonName = parmJButton.getName();
      if (strButtonName == null) return CONST_GUI_ELEMENT_NOT_PRESENT;
/*
 * Get the fitting Key using the method implemented above. */

      elementKey = getKeyByButtonName(parmFrameClassName, strButtonName);
      if (elementKey == null) {
        StatusCode = CONST_GUI_ELEMENT_NOT_PRESENT;
        return StatusCode;
      }
/* de:
 * Im XML-Element <Key> definierte Eigenschaften auf den JButton, der als
 * Parameter übergeben wurde, übertragen.
 * en:
 * Transfer the properties of the XML-element <Key> to the JButton
 * that is passed as parameter. */

/* First keep the text already assigned to the JButton.
* The text will be prefixed with the language-specific Key-Code later. */

      String strExistingText = parmJButton.getText();
/* de: Sprach-spezifischen Tasten-Code aus den XML-Element ermitteln.
 * en: Get the language-specific Key-Code out of the XML-element. */

      String strDisplayedKeyCode =
          getProperty_DisplayedKeyCode(elementKey);
/* de:
 * Prüfen ob der Text des JButton bereits mit dem Tasten-Code beginnt.
 * Wenn nicht dann wird der anzuzeigende Tasten-Code vor dem
 * bereits bestehenden Text eingefügt.
 * en:
 * Inspect if the text of the JButton already begins with the Key-Code.
 * If not, put the Key-Code in front of the already assigned text. */

     
if (strExistingText.indexOf(strDisplayedKeyCode) != 0)
          parmJButton.setText(strDisplayedKeyCode +
" - " + strExistingText);
/* de: Graphisches Symbol (Icon) dem JButton zuordnen.
 * en: Assign the Icon to the JButton. */

      String strIconFileName =
          
structJSBS_UniversalParameters.strGraphicElementsDirectoryName +
          getProperty_IconFileName(elementKey);
      parmJButton.setIcon(
new ImageIcon(strIconFileName));
/*
 * de:
 * Status-Code dieser Klasse zurückliefern; dieser reflektiert eventuell aufgetretene Fehler.

 * en:
 * Return the Status-Code of this class; it reflects if errors occured during processing. */

     
return StatusCode;
    }
/*
 * ************************************************** */
/*

 * de:

 * METHODE zum Auslesen der Schaltfläche (JButton) die dem gesuchten Code für die Funktionstaste

 * zugeordnet werden soll.

 * en:

 * METHOD to get the name of a Button that is attached to the searched Function-Key-Code. */
    
public String getButtonName(String parmFrameClassName,
                                String parmInternalKeyCode) {
/*
 * Variable / Variables:
 */
/*

 * de:

 * Passendes Element aus der XML-Struktur und

 * Elemente die alle Eigenschaften, die dem JButton zugeordnet werden sollen, repräsentieren.

 * en:

 *
Fitting element out of the XML-structure and
 * elements representing all properties to be transferred to the JButton */

      Element elementKey;
/*
 * de: Prüfen dass die übergebenen Parameter gültig sind um unerwartetes Verhalten zu vermeiden.

 * en:
Verify that the passed parameters are valid;,otherwise there is unpredicted behaviour. */
      if (parmFrameClassName == null) return "";
      if (parmInternalKeyCode == null) return "";
/*
 * de: Passende 'Funktionstaste' mit der weiter oben implementierten Methode auslesen.

 * en: Get the fitting Key using the method implemented above */
      elementKey = getKeyByInternalKeyCode(parmFrameClassName, parmInternalKeyCode);
      if (elementKey == null) {
        StatusCode = CONST_GUI_ELEMENT_NOT_PRESENT;
        return "";
      }
/*
 * de: Wert für <ButtonName> aus dem XML-Element auslesen und zurück liefern.

 * en:
Get the property for the <ButtonName> out of the XML-element and return it. */
     
return getProperty_ButtonName(elementKey);
    }

/*
 * ************************************************** */
/*
 * de:
 * METHODE, um die Eigenschaften, die in der XML-Struktur definiert sind,
auf die
 * Reiter ('Tabs') der untergeordneten JPanel innerhalb eines JTabbedPane zu übertragen.
 * Anmerkung:
 * Das Verarbeiten eines JTabbedPane wurde später in diese Klasse eingefügt weil die
 * Eigenschaften eines Reiters ('Tab') ähnlich jenen eines JButton sind.
 * Aus diesem Grund ist in Variablennamen und XML-Elementen oft 'JButton' enthalten;
 * die XML-Elemente und Variable gelten aber für beide GUI-Elemente gleich.
 * en:
 * METHOD to transfer the properties defined in the XML-structure to the 'Tabs' of the
 * subordinate JPanel of a JTabbedPane.

 * Remark:
 * The processing of a JTabbedPaned was added later to this class as the properties of
 * a Tab are similar to the ones of a JButton.
 * Therefore 'JButton' is used in names of variables and XML-elements; XML-elements and
 * variables are valid for both GUI-elements. */
    
public int processJTabbedPane(JTabbedPane parmJTabbedPane, String parmFrameClassName) {
/* de:
 * Prüfen, dass alle übergebenen Parameter gültig sind; sonst besteht die Gefahr dass
 * der Code sich unvorhergesehen verhält.
 * en:
 * Verify that the passed parameters are valid; otherwise there is unpredicted behaviour. */

      if (parmFrameClassName == null) return CONST_GUI_ELEMENT_NOT_PRESENT;
      if (parmJTabbedPane == null) return CONST_GUI_ELEMENT_NOT_PRESENT;
/*
 * de:
 * Die untergeordneten GUI-Elemente innerhalb des als Parameter übergebenen JTabbedPane ermitteln
 * und jedes einzelne innerhalb der for-Schleife bearbeiten.

 * en:
 * Get the subordinate GUI-Elements within the JTabbedPane passed as parameter and process each within

 * the
for-loop. */
      int intComponentCount = parmJTabbedPane.getComponentCount();
      int intComponentIndex;
      for (intComponentIndex = 0; intComponentIndex < intComponentCount; intComponentIndex++) {
/* de:
 * Herausholen des untergeordneten GUI-Elements und vergleichen, ob es von der Klasse 'JPanel' ist.
 * Nur ein 'JPanel' wird weiter bearbeitet.

 * en:
 * Get the subordinate GUI-Element and compare if it is of class 'JPanel', Only a 'JPanel' is 

 * 
processed further. */
        Component comp =  parmJTabbedPane.getComponentAt(intComponentIndex);
        if (! (comp instanceof JPanel)) continue;
/* de:
 * Component wieder einem JPanel zuweisen (cast) und den Namen des JPanel auslesen.

 * en:
 * Cast the Component to a JPanel again and get the name of the JPanel
. */
  
      JPanel locJPanel = (JPanel) comp;
  
      String strJPanelName = locJPanel.getName();
/* de:
 * Wenn dem JPanel kein Name zugewiesen ist kann auch kein passendes XML-Element gefunden werden;

 * weiter in der for-Schleife mit dem nächsten JPanel innerhalb des JTabbedPane
.
 * en:
 * If a name was not assigned to the JPanel then it is impossible to find a fitting XML-element;

 * in that case continue the for-loop with the next JPanel
. */
  
      if (strJPanelName == null) continue;
/* de:
 * XML-Element für den Namen des JPanels aus der XML-Struktur auslesen. Wenn
kein passendes XML-Element
 *
gefunden wurde dann weiter in der for-Schleife mit dem nächsten JPanel innerhalb des JTabbedPane.
 * en:
 * Get the XML-Element fitting to the name of the JPanel out of the XML-structure
. If a fitting
 * XML-element was not found then continue the for-loop with the next JPanel.
*/
        Element elementKey;
        elementKey = getKeyByButtonName(parmFrameClassName, strJPanelName);
        if (elementKey == null) continue;
/* de:
 * Im XML-Element <FunctionKeyAssignment> definierte Eigenschaften auf den Reiter (Tab), der zum

 * gerade bearbeiteten JPanel gehört, übertragen
.
 * en:
 * Transfer the properties of the XML-element <
FunctionKeyAssignment> to the Tab belonging to
 * the JPanel that is just processed. */

/* de:
 * Zuerst den Titel-Text des Reiters (Tab) aufheb
en. Damit wird im nächsten Schritt überprüft,
 * ob bereits der Text der zugeordneten 'Mnemonic'-Taste am Beginn enthalten ist
.
 * en:
 *
First keep the text already assigned to the Tab. This is used in the next step to check, if
 * the text of the assigne 'Mnemonic'-key is already shown. */
   
     String strExistingText = parmJTabbedPane.getTitleAt(intComponentIndex);
/* de: Sprach-spezifischen Tasten-Code aus den XML-Element ermitteln.
 * en: Get the language-specific Key-Code out of the XML-element. */

    
    String strDisplayedKeyCode =
   
         getProperty_DisplayedKeyCode(elementKey);
/* de:
 * Prüfen ob der Text des Reiters (Tab) bereits mit dem Tasten-Code beginnt.
 * Wenn nicht dann wird der anzuzeigende Tasten-Code vor dem
 * bereits bestehenden Text eingefügt.
 * en:
 * Inspect if the text of the Tab already begins with the Key-Code.
 * If not, put the Key-Code in front of the already assigned text. */

    
    if (strExistingText.indexOf(strDisplayedKeyCode) != 0)
    
        parmJTabbedPane.setTitleAt(intComponentIndex, strDisplayedKeyCode + " - " + strExistingText);
/* de:
 *
'Mnemonic'-Taste zuordnen. 'Mnemonic' ist jene Ziffer oder jener Buchstabe, der gemeinsam mit der 'Alt'-Taste
 * bewirkt, das das betroffene JPanel des
JTabbedPane in den Vordergrund gebracht wird und Eingaben in den 
 * enthaltenen GUI-Elementen gemacht werden können
.
 * Der Tasten-Code für die 'Mnemonic'-Taste hängt vom Betriebssystem ab und wird über den in der XML-Struktur

 * zugeordneten JSBS-internen Code ermittelt.

 * en:
 * Assign the 'Mnemonic'-key. 'Mnemonic' is that number or letter, which causes - together with the 'Alt'-key -

 *
that the concerned JPanel is brought to front and entries can be made to the included GUI-elements.
 * The key-code of the Mnemonic-key depends on the operating-system and is derived from the JSBS-internal

 * key-code defined within the XML-structure.
*/
    
    String strInternalKeyCode =
   
         getProperty_InternalKeyCode(elementKey);
    
    int intMnemonicKeyCode =
   
         JSBS_SystemServices.getSystemKeyCodeForInternalKeyCode(strInternalKeyCode);
    
    parmJTabbedPane.setMnemonicAt(intComponentIndexintMnemonicKeyCode);
/* de: Methode zum zuordnen des graphischen Symbol (Icon) aufrufen.
 * en: Call the method to assign the Icon. */

     
  setNormalIcon(parmJTabbedPane, intComponentIndex, elementKey);
      }

/*
 * de: Status-Code auf OK (fehlerfrei) setzen und zurück liefern.

 * en: Set the Status-Code to OK (without error) and return ist. */
      StatusCode = CONST_OK;
     
return StatusCode;
    }

/*
 * ************************************************** */
/*
 * de:
 * METHODEN, um das entsprechende graphische Symbol (Icon) auf dem Reiter (Tab) eines JTabbedPane 

 * zu anzuzeigen.
 * en:
 * METHODS to show the adjacent graphic symbol (icon) on a tab of the JTabbedPane. */
    
private void setNormalIcon(JTabbedPane parmJTabbedPane, int parmTabIndex, Element parmKeyElement) {
/* de:
 *
Name der Datei mit dem graphischen Symbol (Icon) aus der XML-Struktur auslesen, Verzeichnis
 * hinzufügen, Icon erstellen und auf dem Reiter (Tab) platzieren
.
 * en:

 *
Read the name of the file with the graphic symbol (Icon) out of the XML-structure, add the
 * directory, build an Icon and place it on the Tab
. */
      String strIconFileName =
          
structJSBS_UniversalParameters.strGraphicElementsDirectoryName +
          getProperty_IconFileName(parmKeyElement);
      parmJTabbedPane.setIconAt(
parmTabIndexnew ImageIcon(strIconFileName));
    }

/* *****
 *
Wrapper-Methode / Wrapper-method */
    
public int setNormalIcon(JTabbedPane parmJTabbedPane, String parmFrameClassName, String parmPanelName) {
/* de:
 * Prüfen, dass alle übergebenen Parameter gültig sind; sonst besteht die Gefahr dass
 * der Code sich unvorhergesehen verhält.
 * en:
 * Verify that the passed parameters are valid; otherwise there is unpredicted behaviour. */

      if (parmJTabbedPane == null) return CONST_GUI_ELEMENT_NOT_PRESENT;
      if (parmFrameClassName == null) return CONST_GUI_ELEMENT_NOT_PRESENT;
      if (parmPanelName == null) return CONST_GUI_ELEMENT_NOT_PRESENT;
/*
 * de:
 * Die untergeordneten GUI-Elemente innerhalb des als Parameter übergebenen JTabbedPane ermitteln
 * und jedes einzelne innerhalb der for-Schleife bearbeiten.

 * en:
 * Get the subordinate GUI-Elements within the JTabbedPane passed as parameter and process each within

 * the
for-loop. */
      int intComponentCount = parmJTabbedPane.getComponentCount();
      int intComponentIndex;
      for (intComponentIndex = 0; intComponentIndex < intComponentCount; intComponentIndex++) {
/* de:
 * Herausholen des untergeordneten GUI-Elements und vergleichen, ob es von der Klasse 'JPanel' ist.
 * Nur ein 'JPanel' wird weiter bearbeitet.

 * en:
 * Get the subordinate GUI-Element and compare if it is of class 'JPanel', Only a 'JPanel' is 

 * 
processed further. */
        Component comp =  parmJTabbedPane.getComponentAt(intComponentIndex);
        if (! (comp instanceof JPanel)) continue;
/* de:
 * Component wieder einem JPanel zuweisen (cast) und den Namen des JPanel auslesen.

 * en:
 * Cast the Component to a JPanel again and get the name of the JPanel
. */
  
      JPanel locJPanel = (JPanel) comp;
  
      String strJPanelName = locJPanel.getName();
/* de:
 * Wenn dem JPanel kein Name zugewiesen ist kann auch kein passendes XML-Element gefunden werden;

 * weiter in der for-Schleife mit dem nächsten JPanel innerhalb des JTabbedPane
.
 * en:
 * If a name was not assigned to the JPanel then it is impossible to find a fitting XML-element;

 * in that case continue the for-loop with the next JPanel
. */
  
      if (strJPanelName == null) continue;
/* de:
 * Vergleichn ob das (dem JTabbedPane) untergeordnete JPanel den gleichen Namen hat wie der als

 * Parameter übergebene
.
 * en:
 * Compare if the subordinate (to the JTabbedPane) JPanel has the same name as the one passed as

 * parameter
. */
  
      if (strJPanelName.trim().compareTo(parmPanelName.trim()) == 0{
/* de:
 * XML-Element für den Namen des JPanels aus der XML-Struktur auslesen. Wenn
kein passendes XML-Element
 *
gefunden wurde dann diese Methode beenden.
 * en:
 * Get the XML-Element fitting to the name of the JPanel out of the XML-structure
. If a fitting
 * XML-element was not found then end this method.
*/
          Element elementKey;
          elementKey = getKeyByButtonName(parmFrameClassName, strJPanelName);
          if (elementKey == null) return CONST_GUI_ELEMENT_NOT_PRESENT;
/* de:
 * Im XML-Element <FunctionKeyAssignment> definierte Eigenschaften für das graphische Symbol (Icon)

 *
auf den Reiter (Tab), der zum gerade bearbeiteten JPanel gehört, übertragen.
 * en:
 * Transfer the properties for the graphic symbol (icon) of the XML-element <
FunctionKeyAssignment> to
 *
the Tab belonging to the JPanel that is just processed. */
     
    setNormalIcon(parmJTabbedPane, intComponentIndex, elementKey);
/*
 * de: Status-Code auf OK (fehlerfrei) setzen und zurück liefern.

 * en: Set the Status-Code to OK (without error) and return ist. */
          StatusCode = CONST_OK;
    
      return StatusCode;
    
    }
      }

/*
 * de:

 *
Kein XML-Element für die (in den Parametern übergebene) Kombination FrameClassName / PanelName
 * in der XML-Struktur definiert; entsprechenden Status-Code setzen und zurück liefern
.
 * en:
 * No fitting XML-element defined within the XML-structure for the combination FramClassName / PanelName

 *
(passed as parameters); set the status-code and return ist. */
      StatusCode CONST_GUI_ELEMENT_NOT_PRESENT;
     
return StatusCode;
    }

/* *****
 *
Wrapper-Methode / Wrapper-method */
    
public int setNormalIcon(JTabbedPane parmJTabbedPane, JSBS_TaskFrame parmTF, JPanel parmJPanel) {
/* de:
 * Prüfen, dass alle übergebenen Parameter gültig sind; sonst besteht die Gefahr dass
 * der Code sich unvorhergesehen verhält.
 * en:
 * Verify that the passed parameters are valid; otherwise there is unpredicted behaviour. */

      if (parmJTabbedPane == null) return CONST_GUI_ELEMENT_NOT_PRESENT;
      if (parmTF == null) return CONST_GUI_ELEMENT_NOT_PRESENT;
      if (parmJPanel == null) return CONST_GUI_ELEMENT_NOT_PRESENT;
/*
 * de:
 * Namen für das übergebene Task-Frame und das JPanel ermitteln und die dafür vorgesehene Methode aufrufen.

 * en:
 * Get the names for the passed Task-Frame and the JPanel and call the method processing them
. */
      return setNormalIcon(parmJTabbedPane, parmTF.getClass().getName(), parmJPanel.getName());
    }

/*
 *
********** */
    
private void setWarningIcon(JTabbedPane parmJTabbedPane, int parmTabIndex, Element parmKeyElement) {
/* de:
 *
Name der Datei mit dem graphischen Symbol (Icon) aus der XML-Struktur auslesen, Verzeichnis
 * hinzufügen, Icon erstellen und auf dem Reiter (Tab) platzieren
.
 * en:

 *
Read the name of the file with the graphic symbol (Icon) out of the XML-structure, add the
 * directory, build an Icon and place it on the Tab
. */
      String strIconFileName =
          
structJSBS_UniversalParameters.strGraphicElementsDirectoryName +
          getProperty_WarningIconFileName(parmKeyElement);
      parmJTabbedPane.setIconAt(
parmTabIndexnew ImageIcon(strIconFileName));
    }

/* *****
 *
Wrapper-Methode / Wrapper-method */
    
public int setWarningIcon(JTabbedPane parmJTabbedPane, String parmFrameClassName, String parmPanelName) {
/* de:
 * Prüfen, dass alle übergebenen Parameter gültig sind; sonst besteht die Gefahr dass
 * der Code sich unvorhergesehen verhält.
 * en:
 * Verify that the passed parameters are valid; otherwise there is unpredicted behaviour. */

      if (parmJTabbedPane == null) return CONST_GUI_ELEMENT_NOT_PRESENT;
      if (parmFrameClassName == null) return CONST_GUI_ELEMENT_NOT_PRESENT;
      if (parmPanelName == null) return CONST_GUI_ELEMENT_NOT_PRESENT;
/*
 * de:
 * Die untergeordneten GUI-Elemente innerhalb des als Parameter übergebenen JTabbedPane ermitteln
 * und jedes einzelne innerhalb der for-Schleife bearbeiten.

 * en:
 * Get the subordinate GUI-Elements within the JTabbedPane passed as parameter and process each within

 * the
for-loop. */
      int intComponentCount = parmJTabbedPane.getComponentCount();
      int intComponentIndex;
      for (intComponentIndex = 0; intComponentIndex < intComponentCount; intComponentIndex++) {
/* de:
 * Herausholen des untergeordneten GUI-Elements und vergleichen, ob es von der Klasse 'JPanel' ist.
 * Nur ein 'JPanel' wird weiter bearbeitet.

 * en:
 * Get the subordinate GUI-Element and compare if it is of class 'JPanel', Only a 'JPanel' is 

 * 
processed further. */
        Component comp =  parmJTabbedPane.getComponentAt(intComponentIndex);
        if (! (comp instanceof JPanel)) continue;
/* de:
 * Component wieder einem JPanel zuweisen (cast) und den Namen des JPanel auslesen.

 * en:
 * Cast the Component to a JPanel again and get the name of the JPanel
. */
  
      JPanel locJPanel = (JPanel) comp;
  
      String strJPanelName = locJPanel.getName();
/* de:
 * Wenn dem JPanel kein Name zugewiesen ist kann auch kein passendes XML-Element gefunden werden;

 * weiter in der for-Schleife mit dem nächsten JPanel innerhalb des JTabbedPane
.
 * en:
 * If a name was not assigned to the JPanel then it is impossible to find a fitting XML-element;

 * in that case continue the for-loop with the next JPanel
. */
  
      if (strJPanelName == null) continue;
/* de:
 * Vergleichn ob das (dem JTabbedPane) untergeordnete JPanel den gleichen Namen hat wie der als

 * Parameter übergebene
.
 * en:
 * Compare if the subordinate (to the JTabbedPane) JPanel has the same name as the one passed as

 * parameter
. */
  
      if (strJPanelName.trim().compareTo(parmPanelName.trim()) == 0{
/* de:
 * XML-Element für den Namen des JPanels aus der XML-Struktur auslesen. Wenn
kein passendes XML-Element
 *
gefunden wurde dann diese Methode beenden.
 * en:
 * Get the XML-Element fitting to the name of the JPanel out of the XML-structure
. If a fitting
 * XML-element was not found then end this method.
*/
          Element elementKey;
          elementKey = getKeyByButtonName(parmFrameClassName, strJPanelName);
          if (elementKey == null) return CONST_GUI_ELEMENT_NOT_PRESENT;
/* de:
 * Im XML-Element <FunctionKeyAssignment> definierte Eigenschaften für das graphische Symbol (Icon)

 *
auf den Reiter (Tab), der zum gerade bearbeiteten JPanel gehört, übertragen.
 * en:
 * Transfer the properties for the graphic symbol (icon) of the XML-element <
FunctionKeyAssignment> to
 *
the Tab belonging to the JPanel that is just processed. */
     
    setWarningIcon(parmJTabbedPane, intComponentIndex, elementKey);
/*
 * de: Status-Code auf OK (fehlerfrei) setzen und zurück liefern.

 * en: Set the Status-Code to OK (without error) and return ist. */
          StatusCode = CONST_OK;
    
      return StatusCode;
    
    }
      }

/*
 * de:

 *
Kein XML-Element für die (in den Parametern übergebene) Kombination FrameClassName / PanelName
 * in der XML-Struktur definiert; entsprechenden Status-Code setzen und zurück liefern
.
 * en:
 * No fitting XML-element defined within the XML-structure for the combination FramClassName / PanelName

 *
(passed as parameters); set the status-code and return ist. */
      StatusCode CONST_GUI_ELEMENT_NOT_PRESENT;
     
return StatusCode;
    }

/* *****
 *
Wrapper-Methode / Wrapper-method */
    
public int setWarningIcon(JTabbedPane parmJTabbedPane, JSBS_TaskFrame parmTF, JPanel parmJPanel) {
/* de:
 * Prüfen, dass alle übergebenen Parameter gültig sind; sonst besteht die Gefahr dass
 * der Code sich unvorhergesehen verhält.
 * en:
 * Verify that the passed parameters are valid; otherwise there is unpredicted behaviour. */

      if (parmJTabbedPane == null) return CONST_GUI_ELEMENT_NOT_PRESENT;
      if (parmTF == null) return CONST_GUI_ELEMENT_NOT_PRESENT;
      if (parmJPanel == null) return CONST_GUI_ELEMENT_NOT_PRESENT;
/*
 * de:
 * Namen für das übergebene Task-Frame und das JPanel ermitteln und die dafür vorgesehene Methode aufrufen.

 * en:
 * Get the names for the passed Task-Frame and the JPanel and call the method processing them
. */
      return setWarningIcon(parmJTabbedPane, parmTF.getClass().getName(), parmJPanel.getName());
    }

}

zum Inhaltsverzeichnis

Erklärungen und Anwendungsbeispiele

xxx

zum Inhaltsverzeichnis

Verwandte Dokumentation

Dokument

Inhalt

Datei 'FunctionsKeys.xml' mit der Zuordnung von Funktionstasten zu Schaltflächen (Buttons)  Dieses Dokument beschreibt den Aufbau der Datei 'FunctionKeys.xml'.
Aus dieser Datei ('FunctionKeys.xml') werden die Werte mit den Methoden dieser Klasse (JSBS_XML_FunctionKeys) ausgelesen.

zum Inhaltsverzeichnis