|
Letzte
Bearbeitung dieses Dokuments: |
Code
Erklärungen
und Anwendungsbeispiele
Verwandte
Dokumentation
package
js_base.frame;
import
java.awt.*;
import
java.awt.event.*;
import
java.net.*;
import
java.text.*;
import
java.util.*;
import
javax.swing.*;
import
javax.swing.event.*;
import
javax.swing.table.*;
import
javax.swing.text.JTextComponent;
import
javax.swing.tree.TreePath;
import
js_base.bo.*;
import
js_base.boc.*;
import
js_base.connections.JSBS_DB_ConnectionManager;
import
js_base.ejb.interfaces.remote.JSBS_StandardEJBBeanRemote;
import
js_base.structures.*;
import
js_base.utilities.JSBS_Formatter;
import
js_base.xml.*;
/**
*
* @author kurt(at)javascout[dot]biz
* @date
2006-05-03
*
* @description
* de:
*
Klasse für ein JFrame das von Start-Frames (üblicherweise
als 'Command-Center'
* bezeichnet) von
Fat-Client-Anwendungsprogrammen (Heavyweight-Clients) importiert
wird.
*
* Diese Klasse enthält
Variablen zum
* + definieren ob das Anwendungsprogramm
direkt auf die Datenbank zugreift
* oder EJB
auf einem Java-Application-Server (JAS) verwendet,
* +
die Verbindung zur Datenbank bzw. dem JAS aufrecht erhalten,
*
+ XML-Baum-Struktur mit den Parametern für den Zugriff
auf Datenbank oder JAS,
* + XML-Baum-Struktur mit
Text-Elementen in der gewählten Sprache,
* + eine
Daten-Struktur mit verschiedenen Parametern
* z.B.
gewählte Sprache, angemeldeter Benutzer, TCP/IP-Adresse, usw.
*
* en:
*
Class for a JFrame to be inherited by Start-Frames (usually called
'Command-Center')
* of Fat-Client-Applications
(Heavyweight-Clients).
*
* This
class contains variables for
* + defining if the
application has direct access to a dabase
* or
is using EJB on a Java-Application-Server (JAS),
* +
holding the connection to the database or JAS respectively,
* +
XML-tree-structure for parameters to access the database or
JAS,
* + XML-tree-structure with text-elements in
the selected language,
* + a structure with
various parameters
* e.g. selected
language, logged on user, TCP/IP-address, etc.
*
*
@change-log
*
when who why
*
--------------------------------------------------------
*
*/public
class
JSBS_StartFrame
extends
JFrame
implements
ActionListener,
KeyListener, FocusListener,
MouseListener,
WindowListener, TableColumnModelListener,
ItemListener {/*
*
de:
* Array mit den, für ein gesamtes Anwendungsprogramm
implementierten, ISO-Sprach-Codes.
* Die in dieser Basisklasse festgelegten Werte sind nur als Muster gedacht - es wird
* dringend empfohlen, diese Werte in der erbenden Klasse entsprechend den Anforderungen
* des zu erstellenden Anwendungsprogramms zu überschreiben.
*
* Dieses Array enthält die ISO-Codes der implementierten Sprachen.
* Diese Festlegung hat alleine keine weiteren Auswirkungen - kann aber innerhalb des
* Anwendungsprogramms geprüft werden
.
* * en:
* Array with the ISO-language-codes that are implemented for the whole application program.
* The values defined within this base-class are intended to be just samples - it is highly
* recommended to overwrite those values in the inheriting class according to requierements
* of the application-program to be built.
*
* This array containes the ISO-code for the
implemented
languages.
* This definition on its own has no further implications - but it can be verified within
* an application program. */
public
String[]
arrayApplicationImplementedLanguages
=
{
"de"
,
"en"
,
"fr"
};
/*
*
de:
* KONSTANTE Werte für die Art des Zugriffs auf
Daten.
* StandAlone: Die Datenbank ist auf der gleichen
Maschine wie das Anwendungsprogramm
*
oder es wird über das TCP/IP-Netzwerk zugegriffen
(sofern das durch das
*
Datenbanksystem ermöglicht wird).
* FatClient: Der
Zugriff auf die Daten erfolgt über einen Java-Application-Server
(JAS);
* mehrere
Clients sind möglich.
* MobileClient: Die Daten des JAS
sind auf einen mobilen Client (Notebook) gespiegelt.
*
Die Datenerfassung kann auf
dem mobilen Client erfolgen (auch wenn keine
*
Verbindung zum JAS existiert) und
die Daten werden synchronisiert sobald
*
eine Verbindung zum JAS wieder
hergestellt ist.
*
en:
* CONSTANTS for the Run-Version (i.e. the access to
stored data).
* StandAlone: Database is on the same machine
as the application or accessed over the
*
TCP/IP-nework (must be provided by the
database-system).
* FatClient: Access to Data is via a
Java-Application-Server (JAS); multiple clients possible.
*
MobileClient: Data from the JAS is mirrored at a local database on a
mobile-client (notebook);
* Data-entry
can be done on the mobile-client (even if there is no connection
to
* JAS)
and data is synchronized when a connection to the JAS is
established again. */
public
static final int
CONST_StandAlone
=
1;
public
static final int
CONST_FatClient
=
2;
public
static final int
CONST_MobileClient
=
3;
/*
de: Variable für die Art des Zugriffs auf Daten.
* en:
Variable for the run-version to be used. */
public
int
RunVersion
;
/*
*
de:
* Merker, ob eine Verbindung zum JAS (Java Application Server) möglich ist.
* Diese Variable ist notwendig, wenn eine 'MobileClient'-Version im Einsatz ist.
* Dieser Merker wird auf 'false' gesetzt, wenn bei einem Zugriff auf Daten festgestellt wird, dass
* die Verbindung zum JAS nicht mehr hergestellt werden kann.
* Durch die wiederholten Versuche des Java-Runtime-Systems kann es bis zu einer Minute dauern bis
* im Anwendungsprogramm erkennbar ist, dass die Verbindung zum JAS nicht möglich ist.
* Um bei einem Zugriff auf Daten schneller zu wissen, ob die Daten vom JAS abgefragt werden können
* - oder alternativ von der lokalen Datenbank gelesen werden müssen - wird zuerst der Wert dieses Merkers
*
abgefragt bevor versucht wird, die Verbindung zum JAS herzustellen.
* Ist dieser Wert einmal auf 'false' (Verbindung zum JAS nicht möglich), kann nur mehr durch den
* Anwender ausprobiert werden, ob die Verbindung zum JAS wieder hergestellt werden kann
.
* en:
* Flag if a connection to the JAS (Java Application Server) can be established.
* This variable is needed if a 'MobileClient' version is in operation.
* This flag is set to 'false' when, during the access to data is detected, that a connection to the JAS
* can not be established.
* Due to repeated trials of the Java-Runtime-System it may take up to one minute until the application
* program realises, that a connection to the JAS is impossible
.
* To get a faster information if data on the JAS can be accessed - or has to be read from the local database
*
as an alternative - the value of this flag is used before a connection to the JAS is tried.
* If this value is set to 'false' (connection to JAS not possible), then a manual trial by the user is necessary
* to test the connection to the JAS and re-establish it again
. */
public boolean
bolJASConnectionEstablished
=
true
;
/*
*
de:
* DocumentListener Klasse zur Verarbeitung von
Änderungen in Eingabe- oder
Auswahl-Feldern.
* en:
* DocumentListener
class to process changes in entry- or selection-fields of the GUI.
*/
public
JSBS_StartFrame__DocumentListener
structJSBS_StartFrame__DocumentListener
;
/*
*
de:
* Liste der aktiven (geöffneten) Teilprogramme
(Tasks);
* zum anzeigen der Liste in der ListBox in
pnl_OpenTasks.
* en:
* List
of the open (Sub-)Tasks;
* for display of the list in
the ListBox of pnl_OpenTasks. */
public
Vector
vecOpenTasksList
=
new
Vector();
/*
*
de: Connection-Manager für den Zugriff auf die Datenbank.
*
en: Connection-Manager for access to the database. */
public
JSBS_DB_ConnectionManager
structJSBS_DB_ConnectionManager
;
/*
*
de: Klasse für die Verbindung zum JAS (Java Application
Server).
* en: Class for connecting to the JAS (Java
Application Server). */
public
JSBS_StartFrame__JASConnections
structJSBS_StartFrame__JASConnections
=
null
;
/*
*
de:
* Struktur mit verschiedenen Parametern;
*
bitte informieren Sie sich über jede Variable bei der Klasse der
Struktur.
* en:
* Structure with a variety of
parameters;
* please see the description for each variable
at the class of the structure. */
public
JSBS_UniversalParameters
structJSBS_UniversalParameters
;
/*
*
de:
* Struktur mit Regeln zum Prüfen von
Anwender-Eingaben in Feldern auf der GUI;
* bitte
informieren Sie sich über jede Variable bei der Klasse der
Struktur.
* en:
* Structure with Rules to check the
User-Entry in GUI-fields;
* please see the description for
eacht variable at the class of the structure. */
public
JSBS_EntryRules
structJSBS_EntryRules
=
new
JSBS_EntryRules(
this
);
/*
*
de:
* XML-Struktur mit den Eigenschaften für die
sprachabhängigen GUI-Elemente.
* en:
*
XML-structure with properties for language dependant GUI-elements.
*/
public
JSBS_XML_DisplayStrings
structJSBS_XML_DisplayStrings
;
/*
*
de:
* XML-Struktur mit der Zuordnung von Symbolen (Icons)
und Funktionstasten zu den
* - innerhalb des
Anwendungsprogramms verwendeten – Funktionstasten.
*
en:
* XML-structure with allocation of Icons and
Function-Key-Codes to JButton-Names
* used within the
application. */
public
JSBS_XML_FunctionKeys
structJSBS_XML_FunctionKeys
;
/*
*
de:
* XML-Struktur mit der Liste der Anwendungen;
*
konkret: die angezeigte Information über die aufrufbaren
Geschäftsfall-Anwendungen.
* en:
*
XML-structure with the list of Tasks;
* i.e. the
displayed information about the callable business-tasks.
*/
public
JSBS_XML_Tasks
structJSBS_XML_Tasks
;
/*
*
de:
* Array der JPanels deren Ränder eingefärbt
werden sollen – mit der Methode
*
JSBS_GUIServices.setPanelBorders().
* Die Größe
und der Inhalt dieses Array muss innerhalb des
Anwendungsprogramms,
* das diese Basis-Klasse erbt,
definiert werden.
* en:
* Array of JPanels whose
borders should be colored using the method
*
JSBS_GUIServices.setPanelBorders().
* The size and the
content of this array has to be defined by the application
*
that inherits this base-class. */
protected
JPanel[]
arrayJPanelBordersToBeColored
=
null
;
/*
*
de:
* Schaltfläche (Button) auf den ein 'Mausklick'
simuliert wird wenn die Eingabe-Taste der
* Tastatur
betätigt wird.
* Diese Variable kann dynamisch durch
das Anwendungsprogramm verändert werden -
* damit kann
der Anwender geführt werden welche Schaltfläche im Ablauf
als als Nächstes
* betätigt werden soll.
*
en:
* Button where a 'mouse-click' is simulated when the
Enter-Key on the keyboard is pressed.
* This variable can be
dynamically filled by the application to guide the user
*
what button is recommended to be used next. */
protected
JButton
btnEnterTriggeredButton
=
null
;
/*
*
de:
* Merker (Flags) zum 'Aufheben' wenn Modifier-Tasten
(Umschalten, Steuerung, Alt) betätigt
* wurden. Diese
Merker sind notwendig weil Tasten-Kombinationen als sequentielle
Tastatur-Codes
* an die Anwendung weiter gegeben werden.
*
en:
* Flags to keep if modifying keys were typed.
*
Those are necessary as key-combinations are delivered to the
application
* as sequential key-strokes. */
protected
boolean
bolAltKeyModifier
=
false
;
protected
boolean
bolCtrlKeyModifier
=
false
;
protected
boolean
bolShiftKeyModifier
=
false
;
/*
*
de:
* Flag zur Steuerung der Methoden die innerhalb von
'columnMarginChanged' aufgerufen werden.
* Damit wird
verhindert, dass beim erneuten Aufbau des Inhalts von JTables durch
ein
* zeitversetztes Auslösen des
'TableColumnModelListener' falsche Spaltenbreiten aus der
*
JTable ausgelesen werden und in weiterer Folge auf der Datenbank
gespeichert werden.
* Der Wert muss auf 'true' gesetzt
werden bevor eine JTable neu 'befüllt' wird und danach
*
muss der Wert wieder auf 'false' gesetzt werden.
* en:
*
Flag to control the methods called within 'columnMarginChanged'.
*
This inhibits that wrong column-widths are read from the JTables and
stored on the database
* thereafter. This may be caused when
the 'TableColumnModelListener' is triggered with a delay.
*
The value has to be set to 'true' before a JTable is 'refilled' and
set to 'false' again
* after the filling of the JTable has
ended. */
public boolean
bolInhibitColumnMarginChangeStore
=
false
;
/*
*
de:
* Business-Object mit der Information über die
Größe (Breite, Höhe) und
* Position
(Abstand in Bildpunkten zwischen der oberen linken Ecke des Frames
und der
* oberen linken Ecke des Bildschirms) eines
Frames.
* Weiters enthält dieses BO 10 Arrays für
die Spaltenbreite von JTables.
* Diese Arrays können
vom Anwendungsprogramm, das diese Basisklasse erbt, beliebig
*
verwendet werden.
* en:
* Business-Object that
holds the information about the Frame-Size (width, height)
*
and Position (distance in pixels between the upper-left corner of the
frame from the
* upper-left corner of the
display-screen).
* Further, this BO holds 10 arrays to
describe the column-widths of JTables.
* These arrays can be
utilized by the application program inheriting this base-class. */
public
JSBS_FramePosition_BOC
structJSBS_FramePosition_BOC
;
/*
*
de:
* Business-Object mit der Information über die eindeutige Identifizierung
*
eines Endgerätes (PDFP - Physical Device Fingerprint).
*
Die Indentifizierung des Endgerätes erfolgt über den 'Hostname' des
*
Betriebssystems oder, wenn der 'Hostname' nicht ermittelbar ist, alternativ
*
über die
TCP/IP-Adresse
.
* Dieses BO enthält 15 Variablen (vom Type String); diese können
vom
*
Anwendungsprogramm, das diese Basisklasse erbt, beliebig verwendet werden.
* en:
* Business-Object with the information about the unique identification of a
*
user equipment (PDFP - Physical Device Fingerprint).
*
The identification uf the user equipment is done via the 'Hostname' of the
*
operating system or, if the 'Hostname' can not be determined, over the
*
TCP/IP-address alternatively
* This BO holds 15 variables (of type String); those can be
utilized by
*
the application program inheriting this base-class. */
public
JSBS_PDFP_BOC
structJSBS_PDFP_BOC
;
/*
*
==============================
* de:
* BLOCK MIT DEN VARIABLEN FÜR DAS FÜLLEN VON COMBO-BOXEN MIT WÄHRUNG, SPRACHE ODER LAND.
* en:
* BLOCK WITH THE VARIABLES TO FILL COMBO-BOXES WITH CURRENCY, LANGUAGE OR COUNTRY. *//*
*
de:
* Business-Object mit der Liste der, in einer individuellen Installation
* des Anwendungsprogramms, definierten
Währungen.
* en:
* Business-Object with the
list of currencies defined in the individual
* installation of the application-program. */
public
JSBS_Currency_BOC_Set
structJSBS_Currency_BOC_Set
=
null
;
/*
*
de:
* Variable für den Zeitpunkt, zu dem die Werte in der Variable
*
'structJSBS_Currency_BOC_Set' zuletzt von der Datenbank gelesen wurden.
*
Damit kann eine Refresh-Periode verwirklicht werden nach deren Ablauf
*
die Werte in 'structJSBS_Currency_BOC_Set' neu von der Datenbank gelesen
*
werden. Innerhalb der Refresh-Periode wird nicht neu von der Datenbank
*
gelesen sondern die Werte in 'structJSBS_Currency_BOC_Set'
als 'aktuell'
*
angenommen
.
* en:
* Variable for the time, at that the values of the variable
* 'structJSBS_Currency_BOC_Set
'
were retrieved from the database. That
* variable allows to establish a refresh-period after which the values in
* 'structJSBS_Currency_BOC_Set
' are retrieved again from the database.
* Within the refresh-period, a re-read from the database is not done -
* instead the values in 'structJSBS_Currency_BOC_Set
' are assumed to
* be 'up-to-date'. */
private
Date
dteJSBS_Currency_BOC_Set_LastRead
=
new
Date(0);
/*
*
--------------------
*
de:
* Business-Object mit der Liste der, in einer individuellen Installation des
* Anwendungsprogramms, definierten Ländern.
* en:
* Business-Object with the
list of the countries defined in the individual
* installation of the
application-program
. */
private
JSBS_Country_BOC_Set
structJSBS_Country_BOC_Set
=
null
;
/*
*
de:
* Variable für den Zeitpunkt, zu dem die Werte in der Variable
*
'structJSBS_Country_BOC_Set' zuletzt von der Datenbank gelesen wurden.
*
Damit kann eine Refresh-Periode verwirklicht werden nach deren Ablauf
*
die Werte in 'structJSBS_Country_BOC_Set' neu von der Datenbank gelesen
*
werden. Innerhalb der Refresh-Periode wird nicht neu von der Datenbank
*
gelesen sondern die Werte in 'structJSBS_Country_BOC_Set'
als 'aktuell'
*
angenommen
.
* en:
* Variable for the time, at that the values of the variable
* 'structJSBS_Country_BOC_Set' were retrieved from the database. That
* variable allows to establish a refresh-period after which the values in
* 'structJSBS_Country_BOC_Set' are retrieved again from the database.
* Within the refresh-period, a re-read from the database is not done -
* instead the values in 'structJSBS_Country_BOC_Set' are assumed to
* be 'up-to-date'. */
private
Date
dteJSBS_Country_BOC_Set_LastRead
=
new
Date(0);
/*
*
--------------------
*
de:
* Business-Object mit der Liste der, in einer individuellen Installation des
* Anwendungsprogramms, definierten Sprachen
.
* en:
* Business-Object with the
list of the languages defined in the individual
* installation of the
application-program
. */
private
JSBS_Language_BOC_Set
structJSBS_Language_BOC_Set
=
null
;
/*
*
de:
* Variable für den Zeitpunkt, zu dem die Werte in der Variable
*
'structJSBS_Language_BOC_Set' zuletzt von der Datenbank gelesen wurden.
*
Damit kann eine Refresh-Periode verwirklicht werden nach deren Ablauf
*
die Werte in 'structJSBS_Language_BOC_Set' neu von der Datenbank gelesen
*
werden. Innerhalb der Refresh-Periode wird nicht neu von der Datenbank
*
gelesen sondern die Werte in 'structJSBS_Language_BOC_Set'
als 'aktuell'
*
angenommen
.
* en:
* Variable for the time, at that the values of the variable
* 'structJSBS_Language_BOC_Set' were retrieved from the database. That
* variable allows to establish a refresh-period after which the values in
* 'structJSBS_Language_BOC_Set' are retrieved again from the database.
* Within the refresh-period, a re-read from the database is not done -
* instead the values in 'structJSBS_Language_BOC_Set' are assumed to
* be 'up-to-date'. */
private
Date
dteJSBS_Language_BOC_Set_LastRead
=
new
Date(0);
/*
*
============================== *//*
*
de: GUI-Elemente für das Standard-Layout.
* en:
GUI-elements for the standard layout. */
protected
JPanel
pnl_Main
;
protected
JPanel
pnl_Main_With_Currency_Selection
;
protected
JPanel
pnl_Head
;
protected
JPanel
pnl_Head_With_Currency_Selection
;
/*
*
de:
*
Eigenes JPanel in dem bei Bedarf (unterbrochene Verbindung zum JAS bei Betriebsart 'MobileClient')
*
die Schaltfläche 'btn_ConnectToJAS' (für den Versuch zum Wieder-Verbinden mit dem JAS durch den
*
Anwender) platziert wird.
*
Wenn nur 'btn_ConnectToJAS' innerhalb eines (dieses) JPanel platziert ist, dann ist der Code für
*
das Einfügen oder Entfernen wesentlich einfacher als wenn mehrere Components auf einem JPanel sind.
* en:
* Seperate JPanel which contains the JButton 'btn_ConnectToJAS' (for the trial by the user to reconnect
*
to the JAS) that is shown when needed (broken connection to the JAS at mode 'MobileClient').
*
If only 'btn_ConnectToJAS' is placed within a (this) JPanel, the code to insert or remove is much
*
easier
than several components are placed on a JPanel. */
protected
JPanel
pnl_ConnectToJAS
;
/* *** */
protected
JPanel
pnl_Data
;
protected
JPanel
pnl_Info
;
protected
JPanel
pnl_Lists
;
protected
JPanel
pnl_Entry
;
/*
* de: GUI-Elemente für pnl_Head (ganz oben).
*
en:
GUI-elements for the pnl_Head (at the top). */
protected
JButton
btn_Help
;
protected
JLabel
lbl_ApplicationTitle1
;
protected
JLabel
lbl_ApplicationTitle2
;
protected
JLabel
lbl_CurrencySelection
;
protected
JComboBox
combo_CurrencySelection
;
protected
JLabel
lbl_HeadDate
;
protected
JLabel
lbl_HeadUser
;
/*
* de:
* Schaltfläche für den Versuch des Anwenders, wieder eine Verbindung zum JAS herzustellen.
* Für eine detaillierte Beschreibung sehen Sie bitte bei 'pnl_ConnectToJAS' nach.
*
en:
* JButton for the trial of the user to re-establish a connection to the JAS.
* Please see 'pnl_ConnectToJAS' for a detailled description. */
protected
JButton
btn_ConnectToJAS
;
/*
*
de: GUI-Elemente für pnl_Lists (im oberen Teil von pnl_Data).
*
en: GUI-elements for the pnl_Lists (at the upper part of pnl_Data).
*/
protected
JLabel
lbl_SelectableTasks
;
protected
JScrollPane
pnl_SelectableTasks
;
protected
JTree
tree_SelectableTasks
;
protected
JLabel
lbl_OpenTasks
;
protected
JScrollPane
pnl_OpenTasks
;
protected
JTable
pnl_OpenTasksTable
;
protected
DefaultTableColumnModel
pnl_OpenTasksTableDefaultTableColumnModel
;
/*
* de: GUI-Elemente für pnl_Entry (im unteren Teil von pnl_Data). *
en: GUI-elements for the pnl_Entry (at the lower part of pnl_Data).
*/
protected
JLabel
lbl_Code
;
protected
JLabel
lbl_Parameter1
;
protected
JLabel
lbl_Parameter2
;
protected
JLabel
lbl_Parameter3
;
protected
JTextField
txt_Code
;
protected
JTextField
txt_Parameter1
;
protected
JTextField
txt_Parameter2
;
protected
JTextField
txt_Parameter3
;
protected
JButton
btn_Continue
;
/*
de: Feld für die Info-Hinweise (pnl_Info im unteren Bereich)
*
en: Field for the info-messages (pnl_Info at the bottom).
*/
protected
JLabel
lbl_InfoMessage
;
/*
* ********************
*
de: Erstellen der GUI-Elemente.
* en: Create the GUI-elements. */
protected
JPanel
get_pnl_Main() {
/*
de: Automatisches Erstellen des GUI-Elements wenn es nicht schon exisitert.
* en: Auto-create the GUI-element if it does not already exist. */
if
(
pnl_Main
==
null
)
{
try
{
pnl_Main
=
new
JPanel();
pnl_Main.setName(
"pnl_Main"
);
pnl_Main.setLayout(new
GridBagLayout());
/*
*
de: Festlegen des GridBagConstraints für das Element das hinzugefügt wird.
* en: Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_pnl_Head =
new
GridBagConstraints();
gbc_pnl_Head.gridx
=
0;
gbc_pnl_Head.gridy
=
0;
gbc_pnl_Head.fill
=
GridBagConstraints.
HORIZONTAL
;
gbc_pnl_Head.weightx
=
1;
gbc_pnl_Head.anchor
=
GridBagConstraints.
CENTER
;
/*
de:
* Hinzufügen des Elements auf das Panel; die Position des Elements wird durch GridBagConstraints
* gesteuert.
* en:
* Add the element to the panel; element-position is controlled by
GridBagConstraints. */
get_pnl_Main().add(get_pnl_Head(),
gbc_pnl_Head);
/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_pnl_Data =
new
GridBagConstraints();
gbc_pnl_Data.gridx
=
0;
gbc_pnl_Data.gridy
=
1;
gbc_pnl_Data.fill
=
GridBagConstraints.
BOTH
;
gbc_pnl_Data.weightx
=
1;
gbc_pnl_Data.weighty
=
1;
gbc_pnl_Data.anchor
=
GridBagConstraints.
CENTER
;
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints. */
get_pnl_Main().add(get_pnl_Data(),
gbc_pnl_Data);
/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_pnl_Info =
new
GridBagConstraints();
gbc_pnl_Info.gridx
=
0;
gbc_pnl_Info.gridy
=
2;
gbc_pnl_Info.fill
=
GridBagConstraints.
HORIZONTAL
;
gbc_pnl_Info.weightx
=
1;
gbc_pnl_Info.anchor
=
GridBagConstraints.
CENTER
;
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints. */
get_pnl_Main().add(get_pnl_Info(),
gbc_pnl_Info);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building pnl_Main in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
pnl_Main
;
}
/*
* ********************
*/
protected
JPanel
get_pnl_Main_With_Currency_Selection() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
pnl_Main_With_Currency_Selection
==
null
)
{
try
{
pnl_Main_With_Currency_Selection
=
new
JPanel();
pnl_Main_With_Currency_Selection.setName(
"pnl_Main_With_Currency_Selection"
);
pnl_Main_With_Currency_Selection.setLayout(new
GridBagLayout());
/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_pnl_Head_With_Currency_Selection =
new
GridBagConstraints();
gbc_pnl_Head_With_Currency_Selection.gridx
=
0;
gbc_pnl_Head_With_Currency_Selection.gridy
=
0;
gbc_pnl_Head_With_Currency_Selection.fill
=
GridBagConstraints.
HORIZONTAL
;
gbc_pnl_Head_With_Currency_Selection.weightx
=
1;
gbc_pnl_Head_With_Currency_Selection.anchor
=
GridBagConstraints.
CENTER
;
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Main_With_Currency_Selection().add(get_pnl_Head_With_Currency_Selection(),
gbc_pnl_Head_With_Currency_Selection);/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_pnl_Data =
new
GridBagConstraints();
gbc_pnl_Data.gridx
=
0;
gbc_pnl_Data.gridy
=
1;
gbc_pnl_Data.fill
=
GridBagConstraints.
BOTH
;
gbc_pnl_Data.weightx
=
1;
gbc_pnl_Data.weighty
=
1;
gbc_pnl_Data.anchor
=
GridBagConstraints.
CENTER
;
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Main_With_Currency_Selection().add(get_pnl_Data(),
gbc_pnl_Data);
/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_pnl_Info =
new
GridBagConstraints();
gbc_pnl_Info.gridx
=
0;
gbc_pnl_Info.gridy
=
2;
gbc_pnl_Info.fill
=
GridBagConstraints.
HORIZONTAL
;
gbc_pnl_Info.weightx
=
1;
gbc_pnl_Info.anchor
=
GridBagConstraints.
CENTER
;
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Main_With_Currency_Selection().add(get_pnl_Info(),
gbc_pnl_Info);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building pnl_Main_With_Currency_Selection in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
pnl_Main_With_Currency_Selection
;
}
/*
* ********************
*/
protected
JPanel
get_pnl_Head_With_Currency_Selection() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
pnl_Head_With_Currency_Selection
==
null
)
{
try
{
pnl_Head_With_Currency_Selection
=
new
JPanel();
pnl_Head_With_Currency_Selection.setName(
"pnl_Head_With_Currency_Selection"
);
pnl_Head_With_Currency_Selection.setLayout(new
GridBagLayout());
/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_btn_Help =
new
GridBagConstraints();
gbc_btn_Help.gridx
=
0;
gbc_btn_Help.gridy
=
0;
gbc_btn_Help.fill
=
GridBagConstraints.
BOTH
;
gbc_btn_Help.weightx
=
1;
gbc_btn_Help.weighty
=
1;
gbc_btn_Help.gridheight
=
2;
gbc_btn_Help.anchor
=
GridBagConstraints.
CENTER
;
gbc_btn_Help.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Head_With_Currency_Selection().add(get_btn_Help(),
gbc_btn_Help);/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_lbl_ApplicationTitle1 =
new
GridBagConstraints();
gbc_lbl_ApplicationTitle1.gridx
=
1;
gbc_lbl_ApplicationTitle1.gridy
=
0;
gbc_lbl_ApplicationTitle1.fill
=
GridBagConstraints.
HORIZONTAL
;
gbc_lbl_ApplicationTitle1.weightx
=
1;
gbc_lbl_ApplicationTitle1.anchor
=
GridBagConstraints.
LINE_START
;
gbc_lbl_ApplicationTitle1.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Head_With_Currency_Selection().add(get_lbl_ApplicationTitle1(),
gbc_lbl_ApplicationTitle1);/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_lbl_ApplicationTitle2 =
new
GridBagConstraints();
gbc_lbl_ApplicationTitle2.gridx
=
1;
gbc_lbl_ApplicationTitle2.gridy
=
1;
gbc_lbl_ApplicationTitle2.fill
=
GridBagConstraints.
HORIZONTAL
;
gbc_lbl_ApplicationTitle2.weightx
=
1;
gbc_lbl_ApplicationTitle2.anchor
=
GridBagConstraints.
LINE_START
;
gbc_lbl_ApplicationTitle2.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Head_With_Currency_Selection().add(get_lbl_ApplicationTitle2(),
gbc_lbl_ApplicationTitle2);/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_lbl_CurrencySelection =
new
GridBagConstraints();
gbc_lbl_CurrencySelection.gridx
=
2;
gbc_lbl_CurrencySelection.gridy
=
0;
gbc_lbl_CurrencySelection.fill
=
GridBagConstraints.
HORIZONTAL
;
gbc_lbl_CurrencySelection.weightx
=
1;
gbc_lbl_CurrencySelection.anchor
=
GridBagConstraints.
LINE_START
;
gbc_lbl_CurrencySelection.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Head_With_Currency_Selection().add(get_lbl_CurrencySelection(),
gbc_lbl_CurrencySelection);/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_combo_CurrencySelection =
new
GridBagConstraints();
gbc_combo_CurrencySelection.gridx
=
2;
gbc_combo_CurrencySelection.gridy
=
1;
gbc_combo_CurrencySelection.fill
=
GridBagConstraints.
HORIZONTAL
;
gbc_combo_CurrencySelection.weightx
=
1;
gbc_combo_CurrencySelection.anchor
=
GridBagConstraints.
LINE_START
;
gbc_combo_CurrencySelection.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Head_With_Currency_Selection().add(get_combo_CurrencySelection(),
gbc_combo_CurrencySelection);/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_lbl_HeadDate =
new
GridBagConstraints();
gbc_lbl_HeadDate.gridx
=
3;
gbc_lbl_HeadDate.gridy
=
0;
gbc_lbl_HeadDate.fill
=
GridBagConstraints.
HORIZONTAL
;
gbc_lbl_HeadDate.weightx
=
1;
gbc_lbl_HeadDate.anchor
=
GridBagConstraints.
LINE_END
;
gbc_lbl_HeadDate.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Head_With_Currency_Selection().add(get_lbl_HeadDate(),
gbc_lbl_HeadDate);
/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_lbl_HeadUser =
new
GridBagConstraints();
gbc_lbl_HeadUser.gridx
=
3;
gbc_lbl_HeadUser.gridy
=
1;
gbc_lbl_HeadUser.fill
=
GridBagConstraints.
HORIZONTAL
;
gbc_lbl_HeadUser.weightx
=
1;
gbc_lbl_HeadUser.anchor
=
GridBagConstraints.
LINE_END
;
gbc_lbl_HeadUser.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Head_With_Currency_Selection().add(get_lbl_HeadUser(),
gbc_lbl_HeadUser);
/*
*
de:
*
Hinzufügen des Panels in dem bei Bedarf die Schaltfläche 'btn_ConnectToJAS' angezeigt wird.
*
Eine detaillierte Beschreibung des Zwecks finden Sie bei der Variable 'pnl_ConnectToJAS'.
*
Zuerst Festlegen der GridBagConstraints für das hinzuzufügende Element.
*
en:
*
Add the panel where the button 'btn_ConnectToJAS' is shown when needed.
*
Please see the description at variable 'pnl_ConnectToJAS' for background informations. *
First, define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_pnl_ConnectToJAS =
new
GridBagConstraints();
gbc_pnl_ConnectToJAS
.
gridx
= 4;
gbc_pnl_ConnectToJAS
.
gridy
= 0;
gbc_pnl_ConnectToJAS
.
fill
=
GridBagConstraints.
BOTH
;
gbc_pnl_ConnectToJAS
.
weightx
=
1;
gbc_pnl_ConnectToJAS
.
weighty
=
1;
gbc_pnl_ConnectToJAS
.
gridheight
=
2;
gbc_
pnl_ConnectToJAS
.
anchor
=
GridBagConstraints.
CENTER
;
gbc_pnl_ConnectToJAS
.
insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Head_With_Currency_Selection().add(get_
pnl_ConnectToJAS
(),
gbc_
pnl_ConnectToJAS
);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building pnl_Head_With_Currency_Selection in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
pnl_Head_With_Currency_Selection
;
}
/*
* ********************
*/
protected
JPanel
get_pnl_Head() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
pnl_Head
==
null
)
{
try
{
pnl_Head
=
new
JPanel();
pnl_Head.setName(
"pnl_Head"
);
pnl_Head.setLayout(new
GridBagLayout());
/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_btn_Help =
new
GridBagConstraints();
gbc_btn_Help.gridx
=
0;
gbc_btn_Help.gridy
=
0;
gbc_btn_Help.fill
=
GridBagConstraints.
BOTH
;
gbc_btn_Help.weightx
=
1;
gbc_btn_Help.weighty
=
1;
gbc_btn_Help.gridheight
=
2;
gbc_btn_Help.anchor
=
GridBagConstraints.
CENTER
;
gbc_btn_Help.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Head().add(get_btn_Help(), gbc_btn_Help);
/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_lbl_ApplicationTitle1 =
new
GridBagConstraints();
gbc_lbl_ApplicationTitle1.gridx
=
1;
gbc_lbl_ApplicationTitle1.gridy
=
0;
gbc_lbl_ApplicationTitle1.fill
=
GridBagConstraints.
HORIZONTAL
;
gbc_lbl_ApplicationTitle1.weightx
=
1;
gbc_lbl_ApplicationTitle1.anchor
=
GridBagConstraints.
LINE_START
;
gbc_lbl_ApplicationTitle1.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Head().add(get_lbl_ApplicationTitle1(),
gbc_lbl_ApplicationTitle1);
/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_lbl_ApplicationTitle2 =
new
GridBagConstraints();
gbc_lbl_ApplicationTitle2.gridx
=
1;
gbc_lbl_ApplicationTitle2.gridy
=
1;
gbc_lbl_ApplicationTitle2.fill
=
GridBagConstraints.
HORIZONTAL
;
gbc_lbl_ApplicationTitle2.weightx
=
1;
gbc_lbl_ApplicationTitle2.anchor
=
GridBagConstraints.
LINE_START
;
gbc_lbl_ApplicationTitle2.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Head().add(get_lbl_ApplicationTitle2(), gbc_lbl_ApplicationTitle2);
/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_lbl_HeadDate =
new
GridBagConstraints();
gbc_lbl_HeadDate.gridx
=
3;
gbc_lbl_HeadDate.gridy
=
0;
gbc_lbl_HeadDate.fill
=
GridBagConstraints.
HORIZONTAL
;
gbc_lbl_HeadDate.weightx
=
1;
gbc_lbl_HeadDate.anchor
=
GridBagConstraints.
LINE_END
;
gbc_lbl_HeadDate.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Head().add(get_lbl_HeadDate(),
gbc_lbl_HeadDate);
/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_lbl_HeadUser =
new
GridBagConstraints();
gbc_lbl_HeadUser.gridx
=
3;
gbc_lbl_HeadUser.gridy
=
1;
gbc_lbl_HeadUser.fill
=
GridBagConstraints.
HORIZONTAL
;
gbc_lbl_HeadUser.weightx
=
1;
gbc_lbl_HeadUser.anchor
=
GridBagConstraints.
LINE_END
;
gbc_lbl_HeadUser.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Head().add(get_lbl_HeadUser(),
gbc_lbl_HeadUser);
/*
*
de:
*
Hinzufügen des Panels in dem bei Bedarf die Schaltfläche 'btn_ConnectToJAS' angezeigt wird.
*
Eine detaillierte Beschreibung des Zwecks finden Sie bei der Variable 'pnl_ConnectToJAS'.
*
Zuerst Festlegen der GridBagConstraints für das hinzuzufügende Element.
*
en:
*
Add the panel where the button 'btn_ConnectToJAS' is shown when needed.
*
Please see the description at variable 'pnl_ConnectToJAS' for background informations. *
First, define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_pnl_ConnectToJAS =
new
GridBagConstraints();
gbc_pnl_ConnectToJAS
.
gridx
= 4;
gbc_pnl_ConnectToJAS
.
gridy
= 0;
gbc_pnl_ConnectToJAS
.
fill
=
GridBagConstraints.
BOTH
;
gbc_pnl_ConnectToJAS
.
weightx
=
1;
gbc_pnl_ConnectToJAS
.
weighty
=
1;
gbc_pnl_ConnectToJAS
.
gridheight
=
2;
gbc_
pnl_ConnectToJAS
.
anchor
=
GridBagConstraints.
CENTER
;
gbc_pnl_ConnectToJAS
.
insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Head().add(get_
pnl_ConnectToJAS
(),
gbc_
pnl_ConnectToJAS
);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building pnl_Head in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
pnl_Head
;
}
/*
* ********************
*/
protected
JPanel
get_pnl_ConnectToJAS() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
pnl_ConnectToJAS
==
null
)
{
try
{
pnl_ConnectToJAS
=
new
JPanel();
pnl_ConnectToJAS
.setName(
"pnl_
ConnectToJAS
"
);
pnl_ConnectToJAS
.setLayout(new BorderLayout());
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building pnl_ConnectToJAS in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
pnl_ConnectToJAS
;
}
/*
* ********************
*/
protected
JPanel
get_pnl_Data() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
pnl_Data
==
null
)
{
try
{
pnl_Data
=
new
JPanel();
pnl_Data.setName(
"pnl_Data"
);
pnl_Data.setLayout(new
GridBagLayout());
/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_pnl_Lists =
new
GridBagConstraints();
gbc_pnl_Lists.gridx
=
0;
gbc_pnl_Lists.gridy
=
0;
gbc_pnl_Lists.fill
=
GridBagConstraints.
BOTH
;
gbc_pnl_Lists.weightx
=
1;
gbc_pnl_Lists.weighty
= 100;
gbc_pnl_Lists.anchor
=
GridBagConstraints.
CENTER
;
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints. */
get_pnl_Data().add(get_pnl_Lists(),
gbc_pnl_Lists);
/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_pnl_Entry =
new
GridBagConstraints();
gbc_pnl_Entry.gridx
=
0;
gbc_pnl_Entry.gridy
=
1;
gbc_pnl_Entry.fill
=
GridBagConstraints.
HORIZONTAL
;
gbc_pnl_Entry.weightx
=
1;
gbc_pnl_Entry.anchor
=
GridBagConstraints.
CENTER
;
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints. */
get_pnl_Data().add(get_pnl_Entry(),
gbc_pnl_Entry);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building pnl_Data in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
pnl_Data
;
}
/*
* ********************
*/
protected
JPanel
get_pnl_Lists() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
pnl_Lists
==
null
)
{
try
{
pnl_Lists
=
new
JPanel();
pnl_Lists.setName(
"pnl_Lists"
);
pnl_Lists.setLayout(new
GridBagLayout());
/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_lbl_SelectableTasks =
new
GridBagConstraints();
gbc_lbl_SelectableTasks.gridx
=
0;
gbc_lbl_SelectableTasks.gridy
=
0;
gbc_lbl_SelectableTasks.fill
=
GridBagConstraints.
NONE
;
gbc_lbl_SelectableTasks.weightx
=
1;
gbc_lbl_SelectableTasks.anchor
=
GridBagConstraints.
LINE_START
;
gbc_lbl_SelectableTasks.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Lists().add(get_lbl_SelectableTasks(),
gbc_lbl_SelectableTasks);/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_pnl_SelectableTasks =
new
GridBagConstraints();
gbc_pnl_SelectableTasks.gridx
=
0;
gbc_pnl_SelectableTasks.gridy
=
1;
gbc_pnl_SelectableTasks.fill
=
GridBagConstraints.
BOTH
;
gbc_pnl_SelectableTasks.weightx
=
1;
gbc_pnl_SelectableTasks.weighty
=
1;
gbc_pnl_SelectableTasks.anchor
=
GridBagConstraints.
LINE_START
;
gbc_pnl_SelectableTasks.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Lists().add(get_pnl_SelectableTasks(),
gbc_pnl_SelectableTasks);/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_lbl_OpenTasks =
new
GridBagConstraints();
gbc_lbl_OpenTasks.gridx
=
1;
gbc_lbl_OpenTasks.gridy
=
0;
gbc_lbl_OpenTasks.fill
=
GridBagConstraints.
NONE
;
gbc_lbl_OpenTasks.weightx
=
5;
gbc_lbl_OpenTasks.anchor
=
GridBagConstraints.
LINE_START
;
gbc_lbl_OpenTasks.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Lists().add(get_lbl_OpenTasks(),
gbc_lbl_OpenTasks);/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_pnl_OpenTasks =
new
GridBagConstraints();
gbc_pnl_OpenTasks.gridx
=
1;
gbc_pnl_OpenTasks.gridy
=
1;
gbc_pnl_OpenTasks.fill
=
GridBagConstraints.
BOTH
;
gbc_pnl_OpenTasks.weightx
=
5;
gbc_pnl_OpenTasks.weighty
=
5;
gbc_pnl_OpenTasks.anchor
=
GridBagConstraints.
LINE_START
;
gbc_pnl_OpenTasks.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Lists().add(get_pnl_OpenTasks(),
gbc_pnl_OpenTasks);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building pnl_Lists in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
pnl_Lists
;
}
/*
* ********************
*/
protected
JPanel
get_pnl_Entry() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
pnl_Entry
==
null
)
{
try
{
pnl_Entry
=
new
JPanel();
pnl_Entry.setName(
"pnl_Entry"
);
pnl_Entry.setLayout(new
GridBagLayout());
/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_lbl_Code =
new
GridBagConstraints();
gbc_lbl_Code.gridx
=
0;
gbc_lbl_Code.gridy
=
0;
gbc_lbl_Code.fill
=
GridBagConstraints.
HORIZONTAL
;
gbc_lbl_Code.weightx
=
1;
gbc_lbl_Code.anchor
=
GridBagConstraints.
LINE_START
;
gbc_lbl_Code.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints. */
get_pnl_Entry().add(get_lbl_Code(),
gbc_lbl_Code);/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_lbl_Parameter1 =
new
GridBagConstraints();
gbc_lbl_Parameter1.gridx
=
1;
gbc_lbl_Parameter1.gridy
=
0;
gbc_lbl_Parameter1.fill
=
GridBagConstraints.
HORIZONTAL
;
gbc_lbl_Parameter1.weightx
=
3;
gbc_lbl_Parameter1.anchor
=
GridBagConstraints.
LINE_START
;
gbc_lbl_Parameter1.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Entry().add(get_lbl_Parameter1(),
gbc_lbl_Parameter1);/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_lbl_Parameter2 =
new
GridBagConstraints();
gbc_lbl_Parameter2.gridx
=
2;
gbc_lbl_Parameter2.gridy
=
0;
gbc_lbl_Parameter2.fill
=
GridBagConstraints.
HORIZONTAL
;
gbc_lbl_Parameter2.weightx
=
3;
gbc_lbl_Parameter2.anchor
=
GridBagConstraints.
LINE_START
;
gbc_lbl_Parameter2.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Entry().add(get_lbl_Parameter2(),
gbc_lbl_Parameter2);/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_lbl_Parameter3 =
new
GridBagConstraints();
gbc_lbl_Parameter3.gridx
=
3;
gbc_lbl_Parameter3.gridy
=
0;
gbc_lbl_Parameter3.fill
=
GridBagConstraints.
HORIZONTAL
;
gbc_lbl_Parameter3.weightx
=
3;
gbc_lbl_Parameter3.anchor
=
GridBagConstraints.
LINE_START
;
gbc_lbl_Parameter3.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Entry().add(get_lbl_Parameter3(),
gbc_lbl_Parameter3);/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_btn_Continue =
new
GridBagConstraints();
gbc_btn_Continue.gridx
=
4;
gbc_btn_Continue.gridy
=
0;
gbc_btn_Continue.fill
=
GridBagConstraints.
BOTH
;
gbc_btn_Continue.weightx
=
1;
gbc_btn_Continue.weighty
=
1;
gbc_btn_Continue.gridheight
=
2;
gbc_btn_Continue.anchor
=
GridBagConstraints.
CENTER
;
gbc_btn_Continue.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Entry().add(get_btn_Continue(),
gbc_btn_Continue);/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_txt_Code =
new
GridBagConstraints();
gbc_txt_Code.gridx
=
0;
gbc_txt_Code.gridy
=
1;
gbc_txt_Code.fill
=
GridBagConstraints.
HORIZONTAL
;
gbc_txt_Code.weightx
=
1;
gbc_txt_Code.anchor
=
GridBagConstraints.
LINE_START
;
gbc_txt_Code.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints. */
get_pnl_Entry().add(get_txt_Code(),
gbc_txt_Code);/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_txt_Parameter1 =
new
GridBagConstraints();
gbc_txt_Parameter1.gridx
=
1;
gbc_txt_Parameter1.gridy
=
1;
gbc_txt_Parameter1.fill
=
GridBagConstraints.
HORIZONTAL
;
gbc_txt_Parameter1.weightx
=
3;
gbc_txt_Parameter1.anchor
=
GridBagConstraints.
LINE_START
;
gbc_txt_Parameter1.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Entry().add(get_txt_Parameter1(),
gbc_txt_Parameter1);/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_txt_Parameter2 =
new
GridBagConstraints();
gbc_txt_Parameter2.gridx
=
2;
gbc_txt_Parameter2.gridy
=
1;
gbc_txt_Parameter2.fill
=
GridBagConstraints.
HORIZONTAL
;
gbc_txt_Parameter2.weightx
=
3;
gbc_txt_Parameter2.anchor
=
GridBagConstraints.
LINE_START
;
gbc_txt_Parameter2.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Entry().add(get_txt_Parameter2(),
gbc_txt_Parameter2);/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_txt_Parameter3 =
new
GridBagConstraints();
gbc_txt_Parameter3.gridx
=
3;
gbc_txt_Parameter3.gridy
=
1;
gbc_txt_Parameter3.fill
=
GridBagConstraints.
HORIZONTAL
;
gbc_txt_Parameter3.weightx
=
3;
gbc_txt_Parameter3.anchor
=
GridBagConstraints.
LINE_START
;
gbc_txt_Parameter3.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Entry().add(get_txt_Parameter3(),
gbc_txt_Parameter3);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building pnl_Entry in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
pnl_Entry
;
}
/*
* ********************
*/
protected
JPanel
get_pnl_Info() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
pnl_Info
==
null
)
{
try
{
pnl_Info
=
new
JPanel();
pnl_Info.setName(
"pnl_Info"
);
pnl_Info.setLayout(new
GridBagLayout());
/*
*
Define GridBagConstraints for the element to be added.
*/
GridBagConstraints
gbc_lbl_InfoMessage =
new
GridBagConstraints();
gbc_lbl_InfoMessage.gridx
=
0;
gbc_lbl_InfoMessage.gridy
=
0;
gbc_lbl_InfoMessage.fill
=
GridBagConstraints.
HORIZONTAL
;
gbc_lbl_InfoMessage.weightx
=
1;
gbc_lbl_InfoMessage.anchor
=
GridBagConstraints.
LINE_START
;
gbc_lbl_InfoMessage.insets
=
new
Insets(3,3,3,3);
/*
Add the element to the panel; element-position is controlled by
GridBagConstraints.
*/
get_pnl_Info().add(get_lbl_InfoMessage(),
gbc_lbl_InfoMessage);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building pnl_Info in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
pnl_Info
;
}
/*
* ********************
*/
public
JButton
get_btn_Help() {
/*
de: Automatisches Erstellen des GUI-Elements wenn es nicht bereits
existiert.
* en: Auto-create the GUI-element if it does
not already exist. */
if
(
btn_Help
==
null
)
{
try
{
btn_Help
=
new
JButton();
btn_Help.setName(
"btn_Help"
);
btn_Help.setActionCommand(
"btn_Help"
);
btn_Help.addActionListener(
this
);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building btn_Help in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
btn_Help
;
}
/*
* ********************
*/
public
JLabel
get_lbl_ApplicationTitle1() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
lbl_ApplicationTitle1
==
null
)
{
try
{
lbl_ApplicationTitle1
=
new
JLabel();
lbl_ApplicationTitle1.setName(
"lbl_ApplicationTitle1"
);
lbl_ApplicationTitle1.setText(
"lbl_ApplicationTitle1"
);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building lbl_ApplicationTitle1 in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
lbl_ApplicationTitle1
;
}
/*
* ********************
*/
public
JLabel
get_lbl_ApplicationTitle2() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
lbl_ApplicationTitle2
==
null
)
{
try
{
lbl_ApplicationTitle2
=
new
JLabel();
lbl_ApplicationTitle2.setName(
"lbl_ApplicationTitle2"
);
lbl_ApplicationTitle2.setText(
"lbl_ApplicationTitle2"
);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building lbl_ApplicationTitle2 in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
lbl_ApplicationTitle2
;
}
/*
* ********************
*/
public
JLabel
get_lbl_CurrencySelection() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
lbl_CurrencySelection
==
null
)
{
try
{
lbl_CurrencySelection
=
new
JLabel();
lbl_CurrencySelection.setName(
"lbl_CurrencySelection"
);
lbl_CurrencySelection.setText(
"lbl_CurrencySelection"
);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building lbl_CurrencySelection in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
lbl_CurrencySelection
;
}
/*
* ********************
*/
public
JComboBox
get_combo_CurrencySelection() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
combo_CurrencySelection
==
null
)
{
try
{
combo_CurrencySelection
=
new
JComboBox();
combo_CurrencySelection.setName(
"combo_CurrencySelection"
);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building combo_CurrencySelection in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
combo_CurrencySelection
;
}
/*
* ********************
*/
public
JLabel
get_lbl_HeadDate() {
/*
de: Automatisches Erstellen des GUI-Elements wenn es nicht bereits existiert.
* en: Auto-create the GUI-element if it does not already exist. */
if
(
lbl_HeadDate
==
null
)
{
try
{
lbl_HeadDate
=
new
JLabel();
lbl_HeadDate.setName(
"lbl_HeadDate"
);
/*
de:
* Umwandeln des Arbeitsdatum aus den Universal-Parameter von der (Java-)Klasse 'Calendar'
* in die (Java-)Klasse 'Date', die für die weitere Verarbeitung verwendet werden kann.
* en:
* Convert the Working-Date from the Universal-Parameters from (Java-)class
'Calendar' to
* (Java-)class 'Date' which can be used for further
processing. */
java.util.Date
date =
new
java.util.Date(
structJSBS_UniversalParameters
.
calWorkDate
.getTimeInMillis());
/*
de: UK-Format als Standard für das angezeigte Datum verwenden.
* en: Set the UK-format as default for the displayed Date. */
DateFormat
df = DateFormat.getDateInstance(DateFormat.
LONG
,
Locale.
ENGLISH
);
/*
de: Wenn eine andere Sprache gewählt wurde dann wird eine andere 'Locale' gesetzt.
* en: If another language was chosen, set another Locale. */
if
(
structJSBS_UniversalParameters
.
strLanguageCode
.indexOf(
"de"
)
>= 0)
df
= DateFormat.getDateInstance(DateFormat.
LONG
,
Locale.
GERMAN
);
if
(
structJSBS_UniversalParameters
.
strLanguageCode
.indexOf(
"fr"
)
>= 0)
df
= DateFormat.getDateInstance(DateFormat.
LONG
,
Locale.
FRENCH
);
lbl_HeadDate
.setText(df.format(date));
lbl_HeadDate.setHorizontalAlignment(SwingConstants.
TRAILING
);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building lbl_HeadDate in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
lbl_HeadDate
;
}
/*
* ********************
*/
public
JLabel
get_lbl_HeadUser() {
/*
de: Automatisches Erstellen des GUI-Elements wenn es nicht bereits existiert.
* en: Auto-create the GUI-element if it does not already exist. */
if
(
lbl_HeadUser
==
null
)
{
try
{
lbl_HeadUser
=
new
JLabel();
lbl_HeadUser.setName(
"lbl_HeadUser"
);
/*
de: Angemeldeten Anwender im Textfeld anzeigen.
* en: Set the registered User to the Text-Field. */
lbl_HeadUser
.setText(
structJSBS_UniversalParameters
.
strUserName
);
lbl_HeadUser.setHorizontalAlignment(SwingConstants.
TRAILING
);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building lbl_HeadUser in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
lbl_HeadUser
;
}
/*
* ********************
*/
public
JButton
get_btn_ConnectToJAS() {
/*
de: Automatisches Erstellen des GUI-Elements wenn es nicht bereits
existiert.
* en: Auto-create the GUI-element if it does
not already exist. */
if
(
btn_ConnectToJAS
==
null
)
{
try
{
btn_ConnectToJAS
=
new
JButton();
btn_ConnectToJAS.setName(
"btn_ConnectToJAS"
);
btn_ConnectToJAS.setText(
"btn_ConnectToJAS"
);
btn_ConnectToJAS.setActionCommand(
"btn_ConnectToJAS"
);
btn_ConnectToJAS.addActionListener(
this
);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building btn_ConnectToJAS in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
btn_ConnectToJAS
;
}
/*
* ********************
*/
public
JLabel
get_lbl_SelectableTasks() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
lbl_SelectableTasks
==
null
)
{
try
{
lbl_SelectableTasks
=
new
JLabel();
lbl_SelectableTasks.setName(
"lbl_SelectableTasks"
);
lbl_SelectableTasks.setText(
"lbl_SelectableTasks"
);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building lbl_SelectableTasks in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
lbl_SelectableTasks
;
}
/*
* ********************
*/
public
JTree
get_tree_SelectableTasks() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
tree_SelectableTasks
==
null
)
{
try
{
tree_SelectableTasks
=
new
JTree();
tree_SelectableTasks.setName(
"tree_SelectableTasks"
);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building tree_SelectableTasks in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
tree_SelectableTasks
;
}
/*
* ********************
*/
public
JScrollPane
get_pnl_SelectableTasks() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
pnl_SelectableTasks
==
null
)
{
try
{
pnl_SelectableTasks
=
new
JScrollPane();
pnl_SelectableTasks.setName(
"pnl_SelectableTasks"
);
pnl_SelectableTasks.setVerticalScrollBarPolicy(JScrollPane.
VERTICAL_SCROLLBAR_AS_NEEDED
);
pnl_SelectableTasks.setHorizontalScrollBarPolicy(JScrollPane.
HORIZONTAL_SCROLLBAR_AS_NEEDED
);
pnl_SelectableTasks.setViewportView(get_tree_SelectableTasks());
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building pnl_SelectableTasks in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
pnl_SelectableTasks
;
}
/*
* ********************
*/
public
JLabel
get_lbl_OpenTasks() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
lbl_OpenTasks
==
null
)
{
try
{
lbl_OpenTasks
=
new
JLabel();
lbl_OpenTasks.setName(
"lbl_OpenTasks"
);
lbl_OpenTasks.setText(
"lbl_OpenTasks"
);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building lbl_OpenTasks in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
lbl_OpenTasks
;
}
/*
* ********************
*/
public
JScrollPane
get_pnl_OpenTasks() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
pnl_OpenTasks
==
null
)
{
try
{
pnl_OpenTasks
=
new
JScrollPane();
pnl_OpenTasks.setName(
"pnl_OpenTasks"
);
pnl_OpenTasks.setVerticalScrollBarPolicy(JScrollPane.
VERTICAL_SCROLLBAR_AS_NEEDED
);
pnl_OpenTasks.setHorizontalScrollBarPolicy(JScrollPane.
HORIZONTAL_SCROLLBAR_AS_NEEDED
);
pnl_OpenTasks.setViewportView(get_pnl_OpenTasksTable());
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building pnl_OpenTasks in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
pnl_OpenTasks
;
}
/*
* ********************
*/
public
JTable
get_pnl_OpenTasksTable() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
pnl_OpenTasksTable
==
null
)
{
try
{
pnl_OpenTasksTable
=
new
JTable();
pnl_OpenTasksTable.setName(
"pnl_OpenTasksTable"
);
pnl_OpenTasksTable.setColumnModel(get_pnl_OpenTasksTableDefaultTableColumnModel());
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building pnl_OpenTasksTable in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
pnl_OpenTasksTable
;
}
/*
* ********************
*/
public
DefaultTableColumnModel
get_pnl_OpenTasksTableDefaultTableColumnModel() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
pnl_OpenTasksTableDefaultTableColumnModel
==
null
)
{
try
{
/*
Construct a ListSelectionModel which is needed for the
ColumnModel
* and allow the column-width to be
variable. */
DefaultListSelectionModel
locDefaultListSelectionModel =
new
DefaultListSelectionModel();
locDefaultListSelectionModel.setValueIsAdjusting(true
);
/*
*/
pnl_OpenTasksTableDefaultTableColumnModel
=
new
DefaultTableColumnModel();
pnl_OpenTasksTableDefaultTableColumnModel.setSelectionModel(locDefaultListSelectionModel);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building pnl_ OpenTasksTableDefaultTableColumnModel in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
pnl_OpenTasksTableDefaultTableColumnModel
;
}
/*
* ********************
*/
public
JLabel
get_lbl_Code() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
lbl_Code
==
null
)
{
try
{
lbl_Code
=
new
JLabel();
lbl_Code.setName(
"lbl_Code"
);
lbl_Code.setText(
"lbl_Code"
);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building lbl_Code in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
lbl_Code
;
}
/*
* ********************
*/
public
JTextField
get_txt_Code() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
txt_Code
==
null
)
{
try
{
txt_Code
=
new
JTextField();
txt_Code.setName(
"txt_Code"
);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building txt_Code in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
txt_Code
;
}
/*
* ********************
*/
public
JLabel
get_lbl_Parameter1() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
lbl_Parameter1
==
null
)
{
try
{
lbl_Parameter1
=
new
JLabel();
lbl_Parameter1.setName(
"lbl_Parameter1"
);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building lbl_Parameter1 in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
lbl_Parameter1
;
}
/*
* ********************
*/
public
JTextField
get_txt_Parameter1() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
txt_Parameter1
==
null
)
{
try
{
txt_Parameter1
=
new
JTextField();
txt_Parameter1.setName(
"txt_Parameter1"
);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building txt_Parameter1 in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
txt_Parameter1
;
}
/*
* ********************
*/
public
JLabel
get_lbl_Parameter2() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
lbl_Parameter2
==
null
)
{
try
{
lbl_Parameter2
=
new
JLabel();
lbl_Parameter2.setName(
"lbl_Parameter2"
);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building lbl_Parameter2 in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
lbl_Parameter2
;
}
/*
* ********************
*/
public
JTextField
get_txt_Parameter2() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
txt_Parameter2
==
null
)
{
try
{
txt_Parameter2
=
new
JTextField();
txt_Parameter2.setName(
"txt_Parameter2"
);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building txt_Parameter2 in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
txt_Parameter2
;
}
/*
* ********************
*/
public
JLabel
get_lbl_Parameter3() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
lbl_Parameter3
==
null
)
{
try
{
lbl_Parameter3
=
new
JLabel();
lbl_Parameter3.setName(
"lbl_Parameter3"
);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building lbl_Parameter3 in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
lbl_Parameter3
;
}
/*
* ********************
*/
public
JTextField
get_txt_Parameter3() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
txt_Parameter3
==
null
)
{
try
{
txt_Parameter3
=
new
JTextField();
txt_Parameter3.setName(
"txt_Parameter3"
);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building txt_Parameter3 in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
txt_Parameter3
;
}
/*
* ********************
*/
public
JButton
get_btn_Continue() {
/*
de: Automatisches Erstellen des GUI-Elements wenn es nicht bereits
existiert.
* en: Auto-create the GUI-element if it does
not already exist. */
if
(
btn_Continue
==
null
)
{
try
{
btn_Continue
=
new
JButton();
btn_Continue.setName(
"btn_Continue"
);
btn_Continue.setText(
"btn_Continue"
);
btn_Continue.setActionCommand(
"btn_Continue"
);
btn_Continue.addActionListener(
this
);
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building btn_Continue in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
btn_Continue
;
}
/*
* ********************
*/
public
JLabel
get_lbl_InfoMessage() {
/*
Auto-create the GUI-element if it does not already exist. */
if
(
lbl_InfoMessage
==
null
)
{
try
{
lbl_InfoMessage
=
new
JLabel();
lbl_InfoMessage.setName(
"lbl_InfoMessage"
);
lbl_InfoMessage.setMinimumSize(
new
Dimension(10,12));
}
catch
(Throwable
Exc) {
System.out
.println(
"Error
while building lbl_InfoMessage in class
JSBS_StartFrame"
);
Exc.printStackTrace();
}
}
return
lbl_InfoMessage
;
}
/*
*
-------------------------------
* de:
* METHODE die
zusammen mit der interface ActionHandler erforderlich ist.
*
Wenn diese Methode in einer abgeleiteten Klasse überschrieben
wird
* dann muß der Code in dieser Methode (dieser
Basis-Klasse) in der überschreibenden
* Methode so wie
in diesem Beispiel aufgerufen werden:
*
super.actionPerformed(e);
* en:
* METHOD that is
requiered together with the interface ActionHandler.
* If
this method is overwritten in the derived class,
* the
code of this method in this base class has to be called in the
overwriting method
* like this
example:
* super.actionPerformed(e);. */
public
void
actionPerformed(ActionEvent
e) {
/*
de:
* Prüfen ob eine allgemein gültige
Schaltfläche angeklickt wurde und ausführen
* der
Verarbeitung die der Schaltfläche zugeordnet ist.
* en:
* Verify if a General Button was clicked and perform the
task associated to it. */
String
strActionCommand = e.getActionCommand();
/*
*/
if
(strActionCommand.equals(
"btn_Continue"
))
{
/*
de:
* Methode, die prüft ob ein bereits aktives
Task-Frame (Fenster für die Bearbeitung
* eines
Geschäftsfalles) gewählt wurde und diesem den Focus
'gibt'.
* Wenn eine ungültige Nummer eingegeben wurde
passiert nichts.
* en:
* Call the method that
checks if an alredy Opened Task-Frame was selected and gives
* it
the focus. If not a valid number is entered – nothing happens.
*/
if
(JSBS_OpenedTaskStructure.focusOpenedTask(
vecOpenTasksList
,
get_txt_Code()))
/*
de:
* Falls ein Task-Frame den Focus bekommen hat dann wird
dieses Start-Frame
* hinter andere Fenster gesetzt.
*
en:
* In case that a Task-Frame was focussed bring this
(Start-Frame)
* to the back behind other windows. */
this
.toBack();
}
/*
*/
if
(strActionCommand.equals(
"btn_Help"
))
{
/*
de: Die Anzeige des Hilfe-Dokuments wurde angefordert.
* en:
Display of the document with Help was requested. *//*
de:
* Namen der Datei mit dem Hilfe-Dokument aus der
XML-Struktur
* der Datei 'DisplayStrings.xml' holen.
*
en:
* Get the name of the file with the Help-document out
of the XML-Struktur
* of file 'DisplayStrings.xml'.
*/
String
strHelpFileName =
structJSBS_XML_DisplayStrings
.getFrameHelpFileName(
this
);
if
(strHelpFileName
!=
null
)
{
/*
de: Erste Prüfung ob ein Datei-Name gefunden wurde.
*
en: First verification if a file-name was found. */
if
(strHelpFileName.length()
> 0) {
/*
de: Zweite Prüfung ob ein Datei-Name gefunden wurde.
*
en: Second verification if a file-name was found. *//*
de: Erweitern des Datei-Namens auf gesamte Verzeichnis-Struktur.
*
en: Expand the file-name to the complete directory-structure. */
strHelpFileName
=
structJSBS_UniversalParameters
.
strHelpElementsDirectoryName
+
strHelpFileName;
/*
de: Anzeigen des Hilfe-Dokumentes.
* en: Display the
Help-document. */
try
{Desktop.getDesktop().browse(
new
URI(
"file:///"
+
strHelpFileName));}
/*
de: Fehler beim Anzeigen des Hilfe-Dokumentes - kein Grund für
eine Fehlerbehandlung.
* en: Error when displaying the
help-document - no reason for error-handling. */
catch
(Exception
wwwExc) {wwwExc.printStackTrace();}
}
}
}
/*
*/
if
(strActionCommand.equals(
"btn_ConnectToJAS"
))
{
/*
de:
* Merker für eine existierende Verbindung zum JAS (Java Application Server) setzen weil
* sonst die anschließend aufgerufene Methode zum Testen der Verbindung zum JAS sofort wieder
* beendet werden würde ohne überhaupt die Verbindung zu prüfen.
* en:
* Set the flag signalling an existing connection to the JAS (Java Application Server) as
* otherwise the method to test the connection to the JAS (called thereafter) would terminate
* without testing the connection anyway.
*/
bolJASConnectionEstablished =
true
;
testJASConnection();
}
}
/*
*
-------------------------------
* de:
* METHODE die
zusammen mit der Interface ItemListener implementiert werden muss.
*
Diese Methode wird aufgerufen, wenn sich der Status eine Combobox
(Auswahl einer
* anderen Zeile), einer Checkbox oder
eines Radiobuttons ändert.
* en:
* METHOD
that is requiered together with the interface ItemListener.
*
This method is called, if the status of a Combobox (other line
selected), a
* checkbox or a Radiobutton is changed.
*/
public
void
itemStateChanged(ItemEvent
e) {
/*
de:
* Die Verarbeitung erfolgt in der Klasse
JSBS_StartFrame__DocumentListener;
* diese
Design-Entscheidung wurde aus pragmatischen Gründen getroffen
weil
*
dort auch die Verarbeitung von Änderungen in Eingabefeldern für
Text erfolgt.
* en:
* The processing happens within
the class JSBS_StartFrame__DocumentListener;
* This decision
was made for pragmatic reasons as the processing of changes in
*
input-fields with text is made there, too.
*/
structJSBS_StartFrame__DocumentListener
.itemStateChanged(e);
}
/*
*
-------------------------------
* de:
* METHODEN
die zusammen mit der Interface KeyListener implementiert werden
müssen.
* Wenn eine Methode dieser Basis-Klasse Code
enthält und diese Methode in einer
* abgeleiteten
Klasse überschrieben werden muss, dann muss die Methode
dieser
* Basis-Klasse auf folgende Weise aufgerufen
werden:
* super.keyPressed(e);.
* en:
*
METHODS that are requiered together with the interface
KeyListener.
* If a method of this base-class contains
code and has to be overwritten
* in the derived class, the
method in this base class has to be called in the
* overwriting
method like this example:
* super.keyPressed(e);.
*/
public
void
keyPressed(KeyEvent
e) {
/*
de:
* Diese Methode wird verwendet um zu prüfen ob eine
Funktionstaste (der Tastatur)
* betätigt wurde.
*
en:
* This method is used to check if a Function-Key (of the
keyboard) was pressed. */
/* de:
* Zeichenkette die den
internen Tastatur-Code enthalten wird. Das ist jener Code
*
der innerhalb des JavaScout Fat-Client-Framework (JS-FCF) verwendet
wird.
* en:
* String that will contain the Internal
Key-Code. That ist the code that is
* used within the
JavaScout Fat-Client-Framework (JS-FCF). */
String
strInternalKeyCode =
""
;
/*
de: Flag ob eine Funktionstaste (F1 bis F12) betätigt wurde.
*
en: Flag to indicate if a Function-Key (F1 to F12) was pressed.
*/
boolean
bolFunctionKeyPressed
=
false
;
/*
de: Den Java-internen Tastatur-Code aus dem KeyEvent ermitteln.
*
en: Derive the Java-internal key-code from the KeyEvent. */
int
intKeyCode
= e.getKeyCode();
/*
de:
* Untersuchen des Key-Events ob die 'Enter'- (Eingabe-)
Taste betätigt wurde.
* Diese simuliert einen Mausklick
auf eine definierte Schaltfläche (JButton).
* en:
*
Inspect the Key-Event if the 'Enter'-Key was pressed. This key
simulates
* a mouse-click to the defined 'JButton'.
*/
if
(intKeyCode
== KeyEvent.
VK_ENTER
)
{
/*
de:
* 'Eingabe'- (Enter-) Taste gedrückt; prüfen
ob dieser eine Schaltfläche
* (JButton) zugeordnet
ist.
* en: Enter-key was pressed; verify if a Button is
attached to the Enter-key. */
if
(
btnEnterTriggeredButton
!=
null
)
{
/*
de:
* Schaltfläche (JButton) ist zugeordnet; Prüfen
ob er 'enabled' ist und dann
* den 'Mausklick'
simulieren.
* en: JButton is defined, see if the Button is
enabled and simulate the 'click'. */
if
(
btnEnterTriggeredButton
.isEnabled())
{
btnEnterTriggeredButton
.doClick();
e.consume();
}
/*
de: Schaltfläche nicht 'enabled'; einen 'Beep' zur Warnung
ausgeben.
* en: Button not enabled; produce a beep to warn
the user. */
else
getToolkit().beep();
/*
de: Aufgabe der Methode erfüllt; Methode beenden.
* en:
Mission of this method completed; end the method. */
return
;
}
}/*
de:
* Untersuchen des Key-Events ob eine 'Modifier'-Taste
betätigt wurde.
* Nur so ist eine Prüfung
unabhängig von Betriebssystem und gewählter
*
Sprache möglich.
* en:
* Inspect the
Key-Event if a 'Modifier'-Key was pressed. This code is the only
*
way to check independent from operating system and chosen language.
*/
if
(intKeyCode
== KeyEvent.
VK_ALT
)
{
bolAltKeyModifier
=
true
;
e.consume();
}
if
(intKeyCode
== KeyEvent.
VK_CONTROL
)
{
bolCtrlKeyModifier
=
true
;
e.consume();
}
if
(intKeyCode
== KeyEvent.
VK_SHIFT
)
{
bolShiftKeyModifier
=
true
;
e.consume();
}/*
de:
* Wenn 'Modifier'-Tasten gedrückt sind dann den
internen Code für diese jetzt in
* die Zeichenkette
für den Internen Key-Code einfügen.
* en:
*
If 'Modifier'-keys are pressed then insert the internal code for them
* now to the string for the Internal Key-Code. */
if
(
bolAltKeyModifier
)
strInternalKeyCode +=
"Alt-"
;
if
(
bolCtrlKeyModifier
)
strInternalKeyCode +=
"Ctrl-"
;
if
(
bolShiftKeyModifier
)
strInternalKeyCode +=
"Shift-"
;
/*
de:
* Untersuchen des Key-Events ob eine Funktionstaste
betätigt wurde.
* Nur so ist eine Prüfung
unabhängig von Betriebssystem und gewählter
*
Sprache möglich.
* en:
* Inspect the
Key-Event if a Function-Key was pressed. This code is the only
*
way to check independent from operating system and chosen language.
*/
if
(intKeyCode
== KeyEvent.
VK_F1
)
{
strInternalKeyCode
+= "F1"
;
bolFunctionKeyPressed
=
true
;
e.consume();
}
if
(intKeyCode
== KeyEvent.
VK_F2
)
{
strInternalKeyCode
+= "F2"
;
bolFunctionKeyPressed
=
true
;
e.consume();
}
if
(intKeyCode
== KeyEvent.
VK_F3
)
{
strInternalKeyCode
+= "F3"
;
bolFunctionKeyPressed
=
true
;
e.consume();
}
if
(intKeyCode
== KeyEvent.
VK_F4
)
{
strInternalKeyCode
+= "F4"
;
bolFunctionKeyPressed
=
true
;
e.consume();
}
if
(intKeyCode
== KeyEvent.
VK_F5
)
{
strInternalKeyCode
+= "F5"
;
bolFunctionKeyPressed
=
true
;
e.consume();
}
if
(intKeyCode
== KeyEvent.
VK_F6
)
{
strInternalKeyCode
+= "F6"
;
bolFunctionKeyPressed
=
true
;
e.consume();
}
if
(intKeyCode
== KeyEvent.
VK_F7
)
{
strInternalKeyCode
+= "F7"
;
bolFunctionKeyPressed
=
true
;
e.consume();
}
if
(intKeyCode
== KeyEvent.
VK_F8
)
{
strInternalKeyCode
+= "F8"
;
bolFunctionKeyPressed
=
true
;
e.consume();
}
if
(intKeyCode
== KeyEvent.
VK_F9
)
{
strInternalKeyCode
+= "F9"
;
bolFunctionKeyPressed
=
true
;
e.consume();
}
if
(intKeyCode
== KeyEvent.
VK_F10
)
{
strInternalKeyCode
+= "F10"
;
bolFunctionKeyPressed
=
true
;
e.consume();
}
if
(intKeyCode
== KeyEvent.
VK_F11
)
{
strInternalKeyCode
+= "F11"
;
bolFunctionKeyPressed
=
true
;
e.consume();
}
if
(intKeyCode
== KeyEvent.
VK_F12
)
{
strInternalKeyCode
+= "F12"
;
bolFunctionKeyPressed
=
true
;
e.consume();
}/*
de:
* Wenn kein definierter 'Virtual-Key' für eine
Funktionstaste gedrückt wurde
*
dann wird der Internal Key-Code mit der in Java festgelegten
Bezeichnung
*
für die Taste gebildet. Diese Bezeichnung der Taste kann vom
Betriebssystem
*
oder der gewählten Sprache abhängen.
*
en:
*
If no defined 'Virtual-Key' for a Function-Key was pressed then
the
*
Internal Key-Code is build with the Java-defined Text of the key.
*
This text might depend on the operating system or chosen language.
*/
if
(!
bolFunctionKeyPressed)
strInternalKeyCode
+= KeyEvent.getKeyText(intKeyCode);
/*
de:
*
Untersuchen der XML-Struktur ob ein ButtonName dem Internal Key-Code
*
zugeordnet ist.
*
en:
*
Inspect the XML-structure if a ButtonName is associated with the
*
Internal Key-Code. */
String
strButtonName =
structJSBS_XML_FunctionKeys
.getButtonName(
this
.getClass().getName(),
strInternalKeyCode);
/*
de:
*
Wenn ein 'ButtonName' gefunden wurde dann wird die Methode
aufgerufen,
*
die unter den GUI-Elementen den 'JButton' mit dem passenden Namen
sucht
*
und einen 'Mausklick' auf diesen 'JButton' simuliert.
*
en:
*
If a 'ButtonName' was found then the method is called to find
the 'JButton'
*
with the fitting ButtonName amongst the GUI-Elements and simulate a
'mouse-click'
*
on that 'JButton'. */
if
(strButtonName.length()
> 0) {
JSBS_GUIServices.clickButton(
this
.getContentPane(),
strButtonName);
/*
de:
*
'Consume' (Verbrauchen) des KeyEvent damit er nichts anderes
auslöst.
*
en:
*
'Consume' the KeyEvent so it can not trigger something esle.
*/
e.consume();
}
}
public
void
keyReleased(KeyEvent
e) {
/*
de:
*
Diese Methode setzt die Markierungen für die Midifier-Tasten
(Alt, Steuerung,
*
Umschalten) zurück.
*
Zuerst wird der numerische Tastatur-Code ermittelt und dieser wird
dann mit
*
dem 'Virtual-Key' verglichen.
*
Der Vergleich mit dem 'Virtual Key' liefert ein eindeutiges Ergebnis
das nicht
*
vom verwendeten Betriebssystem oder der eingestellten Sprache
abhängt.
*
en:
* This
method is used to reset the flags for Modifier-keys (Alt, Control,
Shift).
* First
derive the numeric key-code and then compare it with the
'Virtual-Key'.
*
The comparison with the 'Virtual-Key' gives a unique result
independent from
*
the underlying operating-system or the chosen language. */
int
intKeyCode
= e.getKeyCode();
/*
de:
*
Untersuchen ob ein 'Modifier-Key' losgelassen wurde.
*
Wenn es ein 'Midifier-Key' war dann das entsprechende 'Flag'
zurücksetzen und
*
den KeyEvent als 'consumed' markieren.
*
en:
* Inspect
if a Modifier-key was released.
* If
it was a Modifier-Key, reset the flag and mark the KeyEvent as
'consumed'. */
if
(intKeyCode
== KeyEvent.
VK_ALT
)
{
bolAltKeyModifier
=
false
;
e.consume();
}
if
(intKeyCode
== KeyEvent.
VK_CONTROL
)
{
bolCtrlKeyModifier
=
false
;
e.consume();
}
if
(intKeyCode
== KeyEvent.
VK_SHIFT
)
{
bolShiftKeyModifier
=
false
;
e.consume();
}
}
public
void
keyTyped(KeyEvent
e) {
}
/*
*
-------------------------------
*
de:
*
Methoden die vom interface FocusListener verlangt werden.
*
Da diese Methoden Code enthalten, muss, wenn diese Methode auch in
einer
*
abgeleiteten Klasse implementiert ist, diese Methode so wie im
folgenden
*
Beispiel aufgerufen werden:
* super.focusGained(e);
*
en:
*
Methods that are requiered together with the interface
FocusListener.
*
As these methods contain code, so if they are overwritten in the
derived class,
* the
method in this base class has to be called in the overwriting method
* like
this example:
* super.focusGained(e);
*/
public
void
focusGained(FocusEvent
e) {
/*
de:
*
Prüfen, ob das Objekt, das den 'Focus' erhalten hat, vom Typ
'Container' ist.
*
In diesem Fall die Methode zum Ändern der 'Border'-Farbe
aufrufen.
*
In der aufgerufenen Methode wird auch die Info-Message für das
jeweilige Feld angezeigt.
*
en:
*
Verify if the Object that gained the 'Focus' is of Type
'Container.
*
In that case call the method to change the color of the 'Border'.
*
In the called methode the Info-Message for the field is set, too.
*/
if
(e.getSource()
instanceof
Container)
JSBS_GUIServices.setEntryFieldBorderFocussed((Container)e.getSource(),
this
);
/*
de:
*
Spezieller Algorithmus zum Anzeigen der Info-Message für die
Felder zur Parameter-Eingabe.
*
en:
*
Special algorithm to display the Info-Message for the field to enter
parameters. */
String
strGUIElementName = ((Container) e.getSource()).getName();
/*
de: Vorsichtsmassnahme falls der Focus auf einem GUI-Element ohne
Namen liegt.
*
en: Precaution if the focus is at a GUI-element without a name.
*/
if
(strGUIElementName
==
null
)
return
;
/*
de:
*
Vergleichen ob der Focus auf einem Parameter-Feld liegt und wenn ja,
*
dann die entsprechende Info-Message aus der XML-Struktur holen und
anzeigen.
* Die
Info-Message wird durch den vom Benutzer eingegebenen Auswahl-Code
bestimmt.
*
en:
*
Compare if the focus is at a Parameter-field and if, read the fitting
Info-Message
*
out of the XML-structure and display it.
*
The displayed Info-Message depends on the selection-code entered by
the user. */
if
(strGUIElementName.compareTo(
"txt_Parameter1"
)
== 0)
get_lbl_InfoMessage().setText(
structJSBS_XML_Tasks
.getParameter1InfoMessage(get_txt_Code().getText()));
/*
***** */
if
(strGUIElementName.compareTo(
"txt_Parameter2"
)
== 0)
get_lbl_InfoMessage().setText(
structJSBS_XML_Tasks
.getParameter2InfoMessage(get_txt_Code().getText()));
/*
***** */
if
(strGUIElementName.compareTo(
"txt_Parameter3"
)
== 0)
get_lbl_InfoMessage().setText(
structJSBS_XML_Tasks
.getParameter3InfoMessage(get_txt_Code().getText()));
}
/*
*/
public
void
focusLost(FocusEvent
e) {
/*
de:
*
Prüfen, ob das Objekt, das den 'Focus' erhalten hat, vom Typ
'Container' ist.
*
In diesem Fall die Methode zum Ändern der 'Border'-Farbe
aufrufen.
*
en:
*
Verify if the Object that gained the 'Focus' is of Type
'Container.
*
In that case call the method to change the color of the 'Border'.
*/
if
(e.getSource()
instanceof
Container)
JSBS_GUIServices.setEntryFieldBorderUnfocussed(
(Container)e.getSource(),
structJSBS_UniversalParameters
,
structJSBS_EntryRules
);
}
/*
*
-------------------------------
*
Methods that are requiered together with the interface
MouseListener.
* If
these methods contain code and are overwritten in the derived
class,
* the
method in this base class has to be called in the overwriting method
* like
this example:
* super.mouseClicked(e);.
*/
public
void
mouseClicked(MouseEvent
e) {
/*
Inspect which GUI-element received the mouse-click. */
if
(e.getSource()
== get_tree_SelectableTasks()) {
/*
Detect which element of the JTree was clicked by using the
mouse-location. */
TreePath
structSelectedTreePath =
get_tree_SelectableTasks().getPathForLocation(e.getX(),
e.getY());
if
(structSelectedTreePath
!=
null
)
{
/*
Mouse clicked onto a valid part of the JTree; derive the String
displayed there. */
String
strSelection =
structSelectedTreePath.getLastPathComponent().toString();
/*
See if there is a dash ( - ) as delimiter. */
int
intDelimiterPosition
= strSelection.indexOf(
"
- "
);
if
(intDelimiterPosition
> 0) {
/*
Delimiter present; the String before it is the user-selectable-code.
*/
get_txt_Code().setText(strSelection.substring(0,
intDelimiterPosition).trim());
}
else
{
/*
No Delimiter present; only the user-selectable-code was displayed in
the JTree. */
get_txt_Code().setText(strSelection.trim());
}
}
}
/*
********** */
if
(e.getSource()
== get_pnl_OpenTasksTable()) {
/*
User selected a dataset in the table with the Open-Tasks;
*
get the row-number. */
int
intSelectedRow
= get_pnl_OpenTasksTable().getSelectedRow();
if
(intSelectedRow
>= 0) {
/*
Selected row is valid; increase the value (as the row-numbering for
the user starts with 1)
*
and show the value in the GUI-element where the user enters the
row-selection. */
intSelectedRow++;
get_txt_Code().setText(JSBS_Formatter.toFormattedString(intSelectedRow));
}
}
}
public
void
mouseEntered(MouseEvent
e) {
}
public
void
mouseExited(MouseEvent
e) {
}
public
void
mousePressed(MouseEvent
e) {
}
public
void
mouseReleased(MouseEvent
e) {
}
/*
*
-------------------------------
*
de:
*
METHODEN die zusammen mit der interface WindowListener notwendig
sind.
*
Wenn diese Methoden Code enthalten und in einer erbenden Klasse
*
überschrieben werden, dann muss die Methode dieser Basis-Klasse
wie im
*
folgenden Beispiel aufgerufen werden:
*
super.windowActivated(e);.
*
en:
*
METHODS that are requiered together with the interface
WindowListener.
* If
these methods contain code and are overwritten in the derived
class,
* the
method in this base class has to be called in the overwriting method
* like
this example:
* super.windowActivated(e);.
*/
public
void
windowActivated(WindowEvent
e) {
}
public
void
windowClosed(WindowEvent
e) {
/*
*
de: Klasse des Fensters vernichten und die gesamte Anwendung beenden.
*
en: Dispose the class of the window and exit the whole application.
*/
this
.dispose();
System.exit(0);
}
public
void
windowClosing(WindowEvent
e) {
/*
*
de:
*
Automatische Steuerung für das Schliessen ausschalten.
*
en:
*
Disable the automatic control for the closing-operation.
*/
this
.setDefaultCloseOperation(JFrame.
DO_NOTHING_ON_CLOSE
);
/*
*
de:
*
Alle Task-Frames (Fenster für die Abwicklung von
Geschäftsfällen) schliessen.
*
en:
*
Close all Task-Frames (windows for handling business-transactions).
*/
JSBS_OpenedTaskStructure.closeAllOpenTasks(
vecOpenTasksList
);
/*
*
de:
*
Prüfen ob alle Task-Frames geschlossen sind.
*
Bei einer Rückfrage an den Benutzer kann der Benutzer
entschieden haben, dass
*
einzelne Task-Frames nicht geschlossen werden.
*
en:
*
Verify if all Task-Frames are closed.
*
If a query to the user occured, the user might have decided that the
single Task-Frame
*
is not closed. */
if
(
vecOpenTasksList
.size()
> 0)
return
;
/*
de:
*
Methode zum Speichern von Größe und Position des JFrame
auf der Datenbank aufrufen.
*
en:
*
Call the method that stores size and position of the JFrame to the
database. */
storeFramePosition();
/*
*
de: Klasse des Fensters vernichten und die gesamte Anwendung beenden.
*
en: Dispose the class of the window and exit the whole application.
*/
this
.dispose();
System.exit(0);
}
public
void
windowDeactivated(WindowEvent
e) {
}
public
void
windowDeiconified(WindowEvent
e) {
}
public
void
windowIconified(WindowEvent
e) {
}
public
void
windowOpened(WindowEvent
e) {
}
/*
*
-------------------------------
*
de:
*
Methoden die zusammen mit der interface TableColumnModelListener
erforderlich sind.
*
Wenn Methoden Code enthalten und von einer erbenden Klasse
überschrieben werden,
*
dann muss die Methode in dieser Klasse wie in diesem Beispiel
aufgerufen werden:
*
super.columnMarginChanged(e); .
* en:
*
Methods that are requiered together with the interface
TableColumnModelListener.
* If
these methods contain code and are overwritten in the derived
class,
* the
method in this base class has to be called in the overwriting method
* like
this example:
* super.columnMarginChanged(e);
. */
public
void
columnMarginChanged(ChangeEvent
e) {
/*
*
de:
*
Prüfen, ob der Code in dieser Methode überhaupt ausgeführt
werden soll.
*
Die Bedeutung von 'bolInhibitTableColumnChangeStore' ist bei der
Definition
*
der Variable beschrieben.
*
en:
*
Verify if the Code within this methode should be performed.
*
The meaning of 'bolInhibitTableColumnChangeStore' is describe at the
definition
*
of the variable. */
if
(
bolInhibitColumnMarginChangeStore
)
return
;
/*
de:
* Spaltenbreite
einer Tabelle verändert.
* In
dieser Basisklasse werden die neuen Breiten der Spalten in der
Tabelle
* 'SelectionListTable'
(in dieser Basisklasse definiert) abgefragt und auf die
*
Variable 'ColumnWidthArray01' des BO 'JSBS_FramePosition_BOC' (auch
in dieser
* Klasse
definiert) übertragen.
* en:
* Width
of a column of any table (JTable) changed.
*
In this base-class the new widths of the columns in the table
'SelectionListTable'
* (defined
within this base-class) are queried and transferred to the
variable
* 'ColumnWidthArray'
of the BO 'JSBS_FramePosition_BOC' (defined within this
base-class,
*
too). */
if
(
structJSBS_FramePosition_BOC
==
null
)
return
;
structJSBS_FramePosition_BOC
.
ColumnWidthArray01
=
JSBS_GUIServices.getTableColumnWidth(get_pnl_OpenTasksTable());
}
public
void
columnSelectionChanged(ListSelectionEvent
e) {
}
public
void
columnAdded(TableColumnModelEvent
e) {
}
public
void
columnMoved(TableColumnModelEvent
e) {
}
public
void
columnRemoved(TableColumnModelEvent
e) {
}
/*
*
-------------------------------
*
de:
*
METHODE, die KeyListener, FocusListener, ItemListener und
DocumentListener zu einem
*
GUI-Element und allen seinen untergeordneten Komponenten
hinzufügt.
*
Wenn diese Methode von einen TaskFrame (das diese Klasse 'erbt' dann
wird das ContentPane
*
des JFrame (üblicherweise das überschriebene 'MainPanel')
als 'Container'-Parameter
*
übergeben.
*
Diese Methode untersucht jeden 'Conteiner' auf untergeordnete
Komponenten und für jede
*
gefundene Komponente ruft sich diese Methode selbst auf und übergibt
die Komponente als
*
Parameter.
*
*
Der Parameter 'DocumentListener' erlaubt, diesen DocumentListener zu
jeder JTextComponent
*
zuzuordnen.
*
Dann werden die Methoden 'changedUpdate', 'insertUpdate' oder
'removedUpdate' (in der
*
Klasse, die als DocumentListener-Parameter übergeben wird)
aufgerufen wenn der Text einer
*
JTextComponent verändert wird.
*
*
en:
*
METHOD that adds KeyListener, FocusListener and DocumentListener to a
GUI-element and
* all
its subordinate components.
* If
this method is called from a TaskFrame (a derivation of this
class),
* then
the ContentPane of the JFrame (usually the overwritten 'MainPanel')
* is
passed as 'Container'-parameter.
* This
method inspects each 'Container' for components and calls itself for
each component
*
and passes that component as parameter.
*
* The
parameter 'DocumentListener' allows to attach this DocumentListener
to each JTextComponents.
* Then
the methods 'changedUpdate', insertUpdate' or 'removedUpdate'
(implemented in
* the
class that is passed as DocumentListener-parameter) are called when
the text of a
*
JTextComponent changes. */
protected
void
addListeners(Container
parmContainer, DocumentListener parmDocumentListener) {
/*
*
de: KeyListener und FocusListener werden zu jedem Typ eines
GUI-Elementeshinzugefügt.
*
en: KeyListener and FocusListener are added to any type of a
GUI-element.
*/
parmContainer.addKeyListener(
this
);
parmContainer.addFocusListener(
this
);
/*
*
de:
*
Wenn der 'Container' ein 'JFrame' ist dann wird der 'WindowListener'
zum 'Container'
*
hinzugefügt.
*
Verwendet wird dieser Listener um die Größe und Position
des Frames zu sichern und das
*
Objekt zu 'vernichten' wenn das Frame (Fenster) geschlossen wird.
*
en:
*
If the 'Container' is a 'JFrame', then the 'WindowListener' is added
to the 'Container'.
*
This listener reacts to changes concerning the frame (open, close,
change size, etc.).
*
A usage of this listener is the saving of the frame-position and
-size and
*
the disposal of the object when the frame (window) is closed.
*/
if
(parmContainer
instanceof
JFrame)
addWindowListener(
this
);
/*
*
de:
*
Wenn der 'Container' eine 'JTextComponent' ist und ein
'DocumentListener' übergeben wird,
*
dann wird der 'DocumentListener' zum 'Container' hinzugefügt.
*
en:
*
If the 'Container' is a 'JTextComponent' and a 'DocumentListener' is
passed,
* then
the 'DocumentListener' is added to the 'Container'. */
if
((parmContainer
instanceof
JTextComponent)
&& (parmDocumentListener !=
null
))
{
/*
de:
*
Klassifizieren des 'Container' als Typ 'JTextComponent' um den
'DocumentListener'
*
hinzufügen zu können.
*
en:
*
Classify the 'Container' as type 'JTextComponent' to be able to add
the
*
'DocumentListener'. */
JTextComponent
locJTextComponent = (JTextComponent) parmContainer;
/*
de:
*
Extrahieren des 'Document' (die Komponente die für den Text
'verantwortlich'
*
ist und den 'DocumentListener' hinzufügen.
*
en:
*
Extract the 'Document' (the component that is responsible for the
text) from
* the
JTextComponent and add the 'DocumentListener'.
*/
locJTextComponent.getDocument().addDocumentListener(parmDocumentListener);
}
/*
*
de:
* Spezielle Bearbeitung einer JComboBox ist notwendig
weil das 'Document' der
* JComboBox nicht als
'Unter-Komponente' mit dem Standard-Algorithmus erreicht
*
werden kann.
* en:
*
Special processing of a JCombobox; neccessary as the 'Document' of
the JComboBox
* can not be reached as 'Sub-Component' with
the standard-algorithm. */
if
(parmContainer
instanceof
JComboBox)
{
/*
de:
* Zuerst den 'Container' als Typ 'JComboBox'
klassifizieren um danach das 'JTextDocument'
* herausholen
zu können.
* en:
* First classify the
'Container' as type 'JComboBox' to be able to get the
*
'JTextDocument' thereafter. */
JComboBox
locJComboBox = (JComboBox) parmContainer;
/*
de:
* ItemListener hinzufügen; damit wird bei einer
Änderung der Auswahl die entsprechende
* Methode
aufgerufen.
* en:
* Add the Itemlistener; this
causes that the associated method is called when
* the
selection is changed.
*/
locJComboBox.addItemListener(
this
);
/*
*
de:
* Wenn ein 'DocumentListener' als Parameter übergeben
wurde dann wird dieser dem Editor
* für den Text
in
der JComboBox hinzugefügt.
* en:
*
When a 'DocumentListener' was passed as parameter then it will be
added to the editor
* for the text within the JComboBox.
*/
if
(parmDocumentListener
!=
null
)
{
/*
de:
* Extrahieren des 'Document' (die Komponente die für
den Text 'verantwortlich'
* ist) und den 'DocumentListener'
hinzufügen.
* en:
* Extract the 'Document'
(the component that is responsible for the text) from
* the
JTextComponent and add the 'DocumentListener'. */
JTextComponent
locJTextComponent =
(JTextComponent)
locJComboBox.getEditor().getEditorComponent();
locJTextComponent.getDocument().addDocumentListener(parmDocumentListener);
}
}
/*
*
de:
*
Spezielle Bearbeitung einer JTable ist notwendig weil die individuell
eingestellten
*
Spaltenbreiten für jeden Benutzer in weiterer Folge auf einer
Datenbank-Tabelle
*
gespeichert wird damit bei einem neuerlichen Aufruf des Task-Frames
die gewählten
*
Spaltenbreiten wieder angezeigt werden.
*
en:
*
Special processing of a JTable; neccessary as the individually chosen
width of the
*
columns for each user is stored in a database-table. This enables,
when the task-frame
*
is opened again, to re-establish the set column-widths. */
if
(parmContainer
instanceof
JTable)
{
/*
de:
*
Zuerst den 'Container' als Typ 'JTable' klassifizieren um danach das
'TableColumnModel'
*
herausholen zu können.
*
en:
*
First classify the 'Container' as type 'JTable' to be able to get the
*
'TableColumnModel' thereafter. */
JTable
locJTable = (JTable) parmContainer;
/*
de:
*
Extrahieren des 'TableColumnModel' (die Komponente die für den
Aufbau der Spalten
*
'verantwortlich' ist) und den 'Listener' hinzufügen.
*
en:
*
Extract the 'TableColumnModel' (the component that is responsible for
the arrangement of
*
the columns) and add the 'Listener'. */
TableColumnModel
locTableColumnModel =
locJTable.getColumnModel();
locTableColumnModel.addColumnModelListener(
this
);
}
/*
*
de:
* Spezielle Bearbeitung von GUI-Elementen des Typs
'JToggleButton' (das sind
* JCheckBox und JRadioButton).
*
Zu diesen wird der 'ItemListener' hinzugefügt der auf Änderungen
des 'Status' reagiert
* und dann die Methode
'itemStateChanged' aufruft.
* en:
*
Special processing of GUI-elements of type 'JToggleButton' (i.e.
JCheckBox and
* JRadioButton).
*
To these, the 'ItemListener' is added which reacts to changes of the
'Status' and
* calls the method 'itemStateChanged'.
*/
if
(parmContainer
instanceof
JToggleButton)
{
/*
de:
* Zuerst den 'Container' als Typ 'JToggleButton'
klassifizieren um danach dan
* 'ItemListener' hinzufügen
zu können.
* en:
* First classify the
'Container' as type 'JToggleButton' to be able to add the
*
'ItemListener' thereafter. */
JToggleButton
locJToggleButton = (JToggleButton) parmContainer;
locJToggleButton.addItemListener(
this
);
}
/*
de:
*
Untersuchen ob der 'Container' weitere Komponenten enthält. Wenn
Komponenten in diesem
*
'Container' vorhanden sind, dann diese Methode rekursiv für
jeden 'Container' aufrufen.
*
en:
*
Inspect if the 'Container' has components in it. If there are
components
* within
this 'Container', call this method recursively for each of it.
*/
Component
comps[] = parmContainer.getComponents();
for
(
int
i
= 0; i < comps.
length
;
i++) {
Component
comp = comps[i];
addListeners((Container)
comp, parmDocumentListener);
}
}
/*
*
-------------------------------
*
Methods with a variable number of parameters that call the
Error-Handler.
* There,
the file with the XML-structure is read and the decision is
made
* if
the event is an 'Error' (causing a termination of the application),
* a
'Warning' (asking for a confirmation of the user to continue
processing) or
* a
'Log Only' (where the Event is just written to the Log-File without
any
* user-requiered
action. */
public
void
handleErrorEvent(String
parmClassName, String
parmCode,
String
parmParameter1, String
parmParameter2,
String
parmParameter3, String
parmParameter4,
String
parmParameter5) {
/*
* Call
the Dialog to display and/or log Error- and Warning-Events. */
JSBS_ErrorDialog
dlgJSBS_ErrorDialog =
new
JSBS_ErrorDialog(
this
,
parmClassName, parmCode, parmParameter1,
parmParameter2,
parmParameter3,
parmParameter4, parmParameter5);
/* Check
if the Dialog requests a 'dump' of the application. */
if
(dlgJSBS_ErrorDialog.
strProcessIndicator
.compareTo(
"D"
)
== 0) System.exit(0);
/* Application
should continue; dispose the shown dialog. */
dlgJSBS_ErrorDialog.dispose();
}
/*
*/
public
void
handleErrorEvent(String
parmClassName, String
parmCode,
String
parmParameter1, String
parmParameter2,
String
parmParameter3, String parmParameter4)
{
handleErrorEvent(parmClassName,
parmCode, parmParameter1,
parmParameter2,
parmParameter3,
parmParameter4,
""
);
}
/*
*/
public
void
handleErrorEvent(String
parmClassName, String
parmCode,
String
parmParameter1, String
parmParameter2,
String
parmParameter3) {
handleErrorEvent(parmClassName,
parmCode, parmParameter1,
parmParameter2,
parmParameter3,
""
,
""
);
}
/*
*/
public
void
handleErrorEvent(String
parmClassName, String
parmCode,
String
parmParameter1, String parmParameter2)
{
handleErrorEvent(parmClassName,
parmCode, parmParameter1, parmParameter2,
""
,
""
,
""
);
}
/*
*/
public
void
handleErrorEvent(String
parmClassName, String
parmCode,
String
parmParameter1) {
handleErrorEvent(parmClassName,
parmCode, parmParameter1,
""
,
""
,
""
,
""
);
}
/*
*/
public
void
handleErrorEvent(String
parmClassName, String parmCode)
{
handleErrorEvent(parmClassName,
parmCode,
""
,
""
,
""
,
""
,
""
);
}
/*
*
-------------------------------
*
de:
*
METHODE zum 'Aufheben' der Schaltfläche (JButton), die ausgelöst
werden soll wenn die
*
Eingabe-Taste betätigt wird, in der dafür vorgesehenen
Variable.
*
Nach dem Zuweisen der Schaltfläche auf die Variable wird die
Methode zur Neu-Zeichnen
*
der Ränder der Schaltflächen aufgerufen.
*
en:
*
METHOD to 'keep' the JButton, that should be triggered when the
Enter-Key is pressed,
*
in the designated variable.
*
After assigning the JButton to the variable, the method to redraw the
Button-Borders is called. */
public
void
setEnterTriggeredButton(JButton
parmJButton) {
/*
de: Zuweisen der als Parameter übergebenen Schaltfläche zu
der Variablen.
*
en: Assign the JButton passed as parameter to the variable. */
btnEnterTriggeredButton
=
parmJButton;
/*
de: Aufrufen der Methode die die Ränder der Schaltflächen
neu zeichnet.
*
en: Call the method to redraw the button-borders. */
JSBS_GUIServices.setButtonBorders(
this
,
structJSBS_UniversalParameters
,
btnEnterTriggeredButton
);
}
/*
*
-------------------------------
*
de:
*
METHODEN zum Holen der Eigenschaften eines Frames (Größe
und Position) und der Spaltenbreiten
*
für JTables von der Datenbank und Wieherstellen von Größe
und Position des Frames.
*
*
Die folgende Methode muss von der erbenden Klasse
(Anwendungs-spezifisches Teilprogramm für
*
die Bearbeitung eines Geschäftsfalls) aufgerufen werden nachdem
die Verbindung zur Datenbank
*
oder zum EJB-Server hergestellt wurde und das Frame 'konstruiert'
wurde.
*
*
en:
*
METHODS to retrieve the Frame-Properties (size and position) and the
column-widths for JTables
*
from the database and resize and position the Frame according to
them. */
/*
*
The following method has to be called by the derived class
(application-specific Task-Frame)
*
after the access to the database (or EJB-server) is established and
the JFrame is constructed. */
public
void
setFramePosition()
{
/*
*
de:
* Prüfen, ob eine Verbindung zum JAS (Java Application Server) aufgebaut werden kann.
* Der folgende Zugriff auf die Datenbank ist möglicherweise der erste nach dem Starten
* des Anwendungsprogramms und deswegen wird jetzt geprüft, ob überhaupt eine Verbindung
* zum JAS möglich ist
.
*
en:
* Verify if a
connection to the JAS (Java Application Server) can be established.
* The following access to the database might be the first one after the start of the
* application program and therefore, now a check is made if a connection to the JAS
* is possible
. */
testJASConnection(
)
;
/*
de: Initialisieren des BOC.
*
en: Initialize the BOC. */
structJSBS_FramePosition_BOC
=
new
JSBS_FramePosition_BOC(
this
);
/*
de: 'Holen' der Werte für die FramePosition von der
Datenbank.
*
en: Retrieve the FramePosition-properties from the database. */
structJSBS_FramePosition_BOC
.getValidByUserKnownKey(
this
.getClass().getName(),
structJSBS_UniversalParameters.strUserName
);
/*
*
de:
*
Es besteht keine Verpflichtung für ein erbendes
Anwendungsprogramm, eine Datenbank-Tabelle
*
'Parameter' zu erstellen. Deswegen ist ein Fehler beim Zugriff auf
die DB-Tabelle kein Grund
*
den Anwender darüber zu informieren.
*
Der Unterschied ist nur, wie das BO mit Werten versorgt wird.
*
en:
*
As there is no obligation for an application using this base-class to
have a database-table
*
named 'Parameter', a failure of the data-access is not an error to be
reported.
*
The differentiation is just the way, how the BO is supplied with
values. */
if
(
structJSBS_FramePosition_BOC
.
StatusCode
==
JSBS_BO.
CONST_OK
)
{
/*
de: Eigenschaften für die Frame-Position auf der Datenbank
gefunden; Frame anpassen
*
en: Frame-Position-properties found on the database; adapt the Frame.
*/
this
.setSize(
structJSBS_FramePosition_BOC
.
FrameWidth
,
structJSBS_FramePosition_BOC
.
FrameHeight
);
this
.setLocation(
structJSBS_FramePosition_BOC
.
PosX
,
structJSBS_FramePosition_BOC
.
PosY
);
}
else
{
/*
de:
*
Eigenschaften für die Frame-Position nicht auf der Datenbank
gefunden.
*
Namen des JFrame und des Users in das BO übertragen – für
den Fall das diese Information
*
gespeichert wird wenn das Frame geschlossen wird.
*
en:
*
Frame-Position-properties not found on the database;
*
Supply the BO with the name of the JFrame and the user - in case that
this information is stored
*
when the JFrame is closing. */
structJSBS_FramePosition_BOC
.
FrameClassName
=
this
.getClass().getName()
;
structJSBS_FramePosition_BOC
.
UserID
=
structJSBS_UniversalParameters.strUserName
;
}
}
/*
*
--------------------------
*
de:
*
Die folgende METHODE wird aufgerufen wenn das JFrame (Fenster)
geschlossen wird.
*
In der Methode wird die Größe und die Position des JFrame
abgefragt und die Werte auf der
*
Datenbank gespeichert.
*
en:
*
The following METHOD is called when the JFrame (window) is
'closing'.
*
Within this method, the size and the position of the JFrame is taken
and stored to the database. */
public
void
storeFramePosition()
{
/*
*
de:
*
Prüfen ob das BOC bereits 'konstruiert' wurde.
*
Weil die 'Konstruktion' im erbenden, Anwendungs-spezifischen Frame
erfolgt kann es möglich sein,
*
dass das Anwendungsprogramm keinen Gebrauch davon macht, dass die
Größe und Position des Frames
*
auf der Datenbank gespeichert werden.
*
en:
*
Check if the BOC is constructed.
*
As the construction happens in the derived Task-Frame
(application-specific)
*
the application might not make use of keeping the Frame-postion and
-size within the database. */
if
(
structJSBS_FramePosition_BOC
==
null
)
return
;
/*
de: Ermitteln der Werte des Frames; die Werte können als Klasse
'Rectangle' ausgelesen werden.
*
en: Get the properties from the frame; the properties can be derived
as class 'Rectangle'. */
Rectangle
locRectangle =
new
Rectangle();
locRectangle
=
this
.getBounds();
structJSBS_FramePosition_BOC
.
PosX
=
locRectangle.
x
;
structJSBS_FramePosition_BOC
.
PosY
=
locRectangle.
y
;
structJSBS_FramePosition_BOC
.
FrameWidth
=
locRectangle.
width
;
structJSBS_FramePosition_BOC
.
FrameHeight
=
locRectangle.
height
;
/*
*
de:
*
Speichern der Werte in der Datenbank.
*
Weil für die Anwendung eine Datenbank-Tabelle 'Parameter'
möglicherweise nicht
*
vorhanden ist wird das Resultat nicht geprüft und über
einen Fehler wird ein
*
Anwender nicht informiert.
*
en:
*
Store the values to the database.
*
As there might be not database-table 'Parameter' existing for the
application,
*
the result is not checked and an error is not reported. */
structJSBS_FramePosition_BOC
.store();
}
/*
* ********************
* Method
to add an opened Task to the list of active
Tasks
* Parameters:
* parmTaskFrame
. . . . . Object of the Task(-frame), used to be brought to 'Front'
when selected.
* parmTaskInternalCode
. . Internal Code from the XML-file (see class
JSBS_XML_Tasks),
* used
to derive the Selectable Code (known to the user) and display
this.
* parmTaskData
. . . . . . a text supplied by the Task calling this
method,
* contains
additional information e.g. the Product-Code of a Product).
*/
public
double
addOpenTaskFrame(JSBS_TaskFrame
parmTaskFrame,
String
parmInternalCode,
String
parmTaskData) {
/*
Retrieve the Displayed Code (user-known) from the XML-structure.
*/
String
locstrDisplayedCode =
structJSBS_XML_Tasks
.getDisplayedCode(parmInternalCode);
/*
Generate a surrogate for the unique identifier. */
double
locdblTaskID
= JSBS_BO_Services.generateSurrogate();
/*
Construct the structure holding the information about the open Task.
*/
JSBS_OpenedTaskStructure
structJSBS_OpenedTaskStructure =
new
JSBS_OpenedTaskStructure(locdblTaskID,
parmTaskFrame, locstrDisplayedCode, parmTaskData)
;
/*
Add to the vector (list).
*/
vecOpenTasksList
.addElement(structJSBS_OpenedTaskStructure);
/*
Re-Display the list with the Opened Tasks.
*/
redisplay_pnl_OpenTasks();
/*
Return the surrogate. */
return
locdblTaskID;
}
/*
* ********************
*
de:
*
Methode zum Entfernen eines Eintrags für ein Teilprogramm aus
der Liste der
*
aufgerufenen Teilprogramme.
*
Parameter:
*
parmTaskID . . . . . . . Eindeutiger ID des Teilprogramms;
vergeben beim Eintrag in die Liste.
*
en:
* Method
to remove an opened Task entry from the list of active
Tasks.
* Parameters:
* parmTaskID
. . . . . . . Unique ID of the Task, given when added to the list.
*/
public
void
removeOpenTaskFrame(
double
parmTaskID)
{
/*
*
de:
*
Zuerst wird die Spaltenbreite in der Tabelle für die Anzeige
gesichert.
*
Das ist notwendig weil in der aufgerufenen Methode
'redisplay_pnl_OpenTasks()' - oder einer
*
weiter unterhalb aufgerufenen Methode - durch das Auslösen von
'columnMarginChanged'
*
die Werte im Array auf gleich breite Spalten zurückgesetzt
werden.
*
en:
*
First, the width of the columns within the table for display is
saved.
*
This
is necessary as in the called method 'redisplay_pnl_OpenTaskd()' - or
in a method called
*
further down - the method 'columnMarginChanged' is triggered. This
trigger causes that the
*
values within the array are reset to equal wide columns. */
/*
*
de: Anzahl der Elemente im Array für die Spaltenbreite.
*
en: Number of elements within the array to hold the width of the
columns. */
int
intColumnWidthArraySize
=
structJSBS_FramePosition_BOC
.
ColumnWidthArray01
.
length
;
/*
*
de: Aufbauen des temporären Arrays zum Sichern der Werte für
die Spaltenbreiten.
*
en: Build a temporary array to secure the values for the
columnwidths. */
String[]
arraytmpColumnWidthArray =
new
String[intColumnWidthArraySize];
/*
*
de:
*
In einer 'for'-Schleife jeden Wert des Arrays für die
Spaltenbreiten auslesen und
*
in das temporäre Array übertragen.
*
en:
*
Within a 'for'-loop each value of the array for the columnwidths is
read and transferred
*
to the temporary array. */
for
(
int
intColumnWidthArrayIndex
= 0;
intColumnWidthArrayIndex
< intColumnWidthArraySize;
intColumnWidthArrayIndex++)
{
/* de:
Wert in das temporäre Array übertragen.
*
en: Transfer the value into the
temporary
array. */
arraytmpColumnWidthArray[intColumnWidthArrayIndex]
=
structJSBS_FramePosition_BOC
.
ColumnWidthArray01
[intColumnWidthArrayIndex]
;
}
/*
*
de:
*
Struktur eines Eintrags eines Teilprogramms für eine
Geschäftsanwendung (OpenedTask);
*
enthält ein Element des untersuchten Vector.
*
en:
*
Structure of one OpenedTask for a programm to perform a
business-task;
*
holds
the inspected element of the Vector. */
JSBS_OpenedTaskStructure
structJSBS_OpenedTaskStructure;
/*
de: Anzahl der Elemente im Vector; verwendet in der
'for'-Schleife.
*
en: Number of elements within the Vector; used in the 'for'-loop.
*/
int
intVectorSize
=
vecOpenTasksList
.size();
/*
de: Alle Elemente des Vector untersuchen um das zu entfernde Element
zu finden.
*
en: Inspect all Vector-elements to identify the element to be
removed. */
for
(
int
intVectorIndex
= 0; intVectorIndex < intVectorSize; intVectorIndex++) {
structJSBS_OpenedTaskStructure
=
(JSBS_OpenedTaskStructure)
vecOpenTasksList
.elementAt(intVectorIndex)
;
/*
de: Vergleichen ob der ID des Vector-Element derjenige ist der
entfernt werden soll.
*
en: Compare the ID if the Vector-element is the one to be removed.
*/
if
(structJSBS_OpenedTaskStructure.
dblTaskID
==
parmTaskID) {
/*
de: Angefordertes Element aus dem Vector entfernen und Liste neu
anzeigen.
*
en: Remove the requested element from the vector and redisplay the
list. */
vecOpenTasksList
.removeElementAt(intVectorIndex);
redisplay_pnl_OpenTasks();
/*
*
de:
*
Gesicherte Werte aus dem temporären Array für die
Spaltenbreiten wieder in das
*
originale Array übertragen.
*
en:
*
Transfer the secured values from the temporary array for the
columnwidth
*
to the original array. */
for
(
int
intColumnWidthArrayIndex
= 0;
intColumnWidthArrayIndex
< intColumnWidthArraySize;
intColumnWidthArrayIndex++)
{
/* de:
Wert in das originale Array übertragen.
*
en: Transfer the value into the
original
array. */
structJSBS_FramePosition_BOC
.
ColumnWidthArray01
[intColumnWidthArrayIndex]
=
arraytmpColumnWidthArray[intColumnWidthArrayIndex]
;
}
return
;
}
}
}
/*
* ********************
* de:
*
Methode zum Ändern der Daten eines Tasks (Geschäftsprogramm)
in
* der
Liste mit den geöffneten Task-Frames.
* Der
Task wird durch den ID bestimmt.
* Parameter:
* parmTaskID
. . . . . . . Eindeutiger ID des Tasks;
* wurde
vergeben als der Task in die Liste eingetragen
wurden.
* parmTaskData
. . . . . . Text der in der Task-List angezeigt wird.
*
en:
* Method
to change the displayed Task-Data at the Task identified by the
ID.
* Parameters:
* parmTaskID
. . . . . . . Unique ID of the Task, given when added to the
list.
* parmTaskData
. . . . . . Text displayed at the Task-List. */
public
void
updateOpenTaskFrame(
double
parmTaskID,
String parmTaskData) {
/*
* de:
* Datenstruktur
eines OpenedTask; enthält das untersuchte Element des
Vectors.
* en:
* Structure
of one OpenedTask; holds the inspected element of the Vector.
*/
JSBS_OpenedTaskStructure
structJSBS_OpenedTaskStructure;
/*
* de:
* Anzahl
der Elemente innerhalb des Vectors; in der for-Schleife
verwendet.
* en:
* Number
of elements within the Vector; used in the for-loop. */
int
intVectorSize
=
vecOpenTasksList
.size();
/*
* de:
* Alle
Elemente des Vectors untersuchen und das zu ändernde Element
herausfinden.
* en:
* Loop
through the Vector-elements to identify the element to be changed.
*/
for
(
int
intVectorIndex
= 0; intVectorIndex < intVectorSize; intVectorIndex++) {
structJSBS_OpenedTaskStructure
=
(JSBS_OpenedTaskStructure)
vecOpenTasksList
.elementAt(intVectorIndex)
;
/*
* de:
* Den
ID vergleichen ob das Vector-Elment dasjenig ist, das geändert
werden muss.
* en:
* Compare
the ID if the Vector-element is the one to be updated. */
if
(structJSBS_OpenedTaskStructure.
dblTaskID
==
parmTaskID) {
/*
* de:
* Die
Daten für den Task ändern und die Liste neu
anzeigen.
* en:
* Change
the Task-Data and redisplay the list. */
structJSBS_OpenedTaskStructure.
strTaskData
=
parmTaskData;
redisplay_pnl_OpenTasks();
/*
* de:
* Das
Frame für den Task (Geschäftsfallbearbeitung) wieder in den
Vordergrund bringen.
* Etwas
kompliziert aber derzeit (Dezember 2009) ist anscheinend ein Fehler
in der
* Methode
'toFront()'.
* en:
* Bring
the Frame for the Task to the foreground again.
* The
code is a little bit complicated as at the time of writing (December
2009) there
* seems
to be an error in the method 'toFront()'. */
structJSBS_OpenedTaskStructure.
frmTaskFrame
.setAlwaysOnTop(
true
);
structJSBS_OpenedTaskStructure.
frmTaskFrame
.setVisible(
true
);
structJSBS_OpenedTaskStructure.
frmTaskFrame
.setAlwaysOnTop(
false
);
return
;
}
}
}
/*
* ********************
* de:
*
Methode zum Anzeigen der Liste mit den geöffneten Task-Frames.
*
Diese Methode wird aufgerufen wenn sich der Inhalt des Vectors mit
den
*
geöffneten Tasks (Geschäftsprogramme) verändert hat.
*
en:
* Method
to redisplay the list of open Tasks;
* should
be called after the vector with the list of open tasks was modified.
*/
private
void
redisplay_pnl_OpenTasks()
{
/*
*
de: Variable: Objekt der Klasse mit der Struktur der Daten eines
geöffneten Tasks.
*
en: Variable: object of the class with the structure for the data of
an open task. */
JSBS_OpenedTaskStructure
structJSBS_OpenedTaskStructure;
/*
de: Vector mit den 'Roh-Daten' für das spätere Anzeigen in
einer JTable.
*
en: Vector with the 'raw-data' for later display in a JTable.
*/
Vector
vecRawDisplayData =
new
Vector();
/*
de:
*
'Kopf-Anzeige' erstellen und in den Roh-Daten-Vector einfügen.
*
Dieser Vector (für die Kopf-Anzeige) ist die 'erste Reihe im
Roh-Daten-Vector
*
und enthält symbolische Namen für die Spalten die angezeigt
werden.
*
Diese symbolischen Namen werden später (in der Methode
*
'JSBS_XML_DisplayStrings.processJTable(...)') verwendet um die
sprach-abhängigen
*
Texte aus der XML-Struktur zu ermitteln.
*
en:
* Build
the header-display and insert it into the raw-data-vector.
* This
vector (for the header-display) is the 'first row' in the
raw-data-vector
* and
contains the symbolic names for the columns to be displayed.
*
This symbolic names are used to get the language-dependant text out
of the
*
XML-structure (done late in method
'JSBS_XML_DisplayStrings.processJTable(...)') . */
Vector
vecHeader =
new
Vector();
vecHeader.addElement(JSBS_BO_Set.
CONST_ColumnName_RowNr
);
vecHeader.addElement(
"SelectableCode"
);
vecHeader.addElement(
"TaskData"
);
vecRawDisplayData.addElement(vecHeader);
/*
*
de:
*
'Spalten' mit den formatierten Daten 'bauen'.
*
Die Daten werden aus dem Vector 'OpenedTaskStructure' geholt.
*
en:
* Build
the 'rows' containing the formatted data.
* This
data is derived from the vector with the OpenedTaskStructure.
*/
int
locintTableDataSize
=
vecOpenTasksList
.size();
for
(
int
locintTableDataIndex
= 0;
locintTableDataIndex
< locintTableDataSize;
locintTableDataIndex++)
{
/*
de: Daten für einen geöffneten 'Task' (Geschäftsanwendung)
lesen.
*
en: Read the data for an open task.
*/
structJSBS_OpenedTaskStructure
=
(JSBS_OpenedTaskStructure)
vecOpenTasksList
.elementAt(locintTableDataIndex);
/*
de: Vector, der eine Zeile der Tabelle mit den Roh-Daten
repräsentiert, erstellen.
*
en: Produce the vector representing one line of the raw-data-table.
*/
Vector
vecRow =
new
Vector();
vecRow.addElement(JSBS_Formatter.toFormattedString(locintTableDataIndex
+ 1,
4));
vecRow.addElement(structJSBS_OpenedTaskStructure.
strSelectableCode
);
vecRow.addElement(structJSBS_OpenedTaskStructure.
strTaskData
);
/*
de:
* Vector,
der eine Zeile repräsentiert, zum Vector, der die
Roh-Daten-Tabelle
*
enthält, hinzufügen.
*
en:
* Add
the vector representing a row to the vector containing the
raw-data-table.
*/
vecRawDisplayData.addElement(vecRow);
}
/*
de:
*
Prüfen ob das Client-Side-Objekt (BOC), das die Information über
das Fenster - darunter
*
auch die Breite von Tabellen-Spalten - bereits 'konstruiert' wurde.
*
Wenn das Objekt noch nicht konstruiert wurde dann wird es jetzt
konstruiert.
*
en:
*
Verify if the Client-Side-Object (BOC), containing the information
about the window -
*
among it the width of table-columns, too - is already 'constructed'.
*
If the object was not already constructed then it is constructed now.
*/
if
(
structJSBS_FramePosition_BOC
==
null
)
structJSBS_FramePosition_BOC
=
new
JSBS_FramePosition_BOC(
this
);
/*
*
de:
*
Methode, die in der Klasse JSBS_XML_DisplayStrings enthalten ist,
verwenden
*
um die JTable mit den Daten zu füllen.
* 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 zu Beginn dieser Klasse.
*
en:
* Use
the method implemented in class JSBS_XML_DisplayStrings
* to
fill the JTable with the data.
*
Before that, the 'flag' to inhibit the transfer of wrong
table-column-widths
*
to the database, is set. The gathering of wrong column-widths may be
cause by
*
the asynchronity of the 'TableColumnListener'.
*
A detailled description concerning
'bolInhibitColumnMarginChangeSTore' can be
*
found at the definition of this variable at the top of this class.
*/
bolInhibitColumnMarginChangeStore
=
true
;
structJSBS_XML_DisplayStrings
.processJTable(get_pnl_OpenTasksTable(),
this
.getClass().getName(),
vecRawDisplayData,
structJSBS_FramePosition_BOC
.
ColumnWidthArray01
);
/*
*
de:
* Übernehmen
der Spaltenbreiten der JTable auf die Datenbank wieder erlauben.
*
Der Wert der Variable 'bolInhibitColumnMarginChangeStore' wird in der
Methode
*
'columnMarginChanged' abgefragt.
*
en:
*
Permit the transfer of the column-widths of the JTable to the
database again.
*
The value of the variable 'bolInhibitColumnMarginChangeStore' is used
within
*
the method 'columnMarginChanged'.
*/
bolInhibitColumnMarginChangeStore
=
false
;
}
/*
* ********************
*
de:
*
METHODE um das JFrame, das diese Basisklasse 'erbt', in den
Vordergrund der Anzeige zu
*
setzen und den Focus für die Eingabe auf jenes JTextField zu
setzen, das die Auswahl einer
*
auswählbaren oder bereits aktiven Geschäftsanwendung
erlaubt.
*
en:
* METHOD
to bring the JFrame that inherits this base-class to the front and
get the focus
* to
the JTextField for the selectable code or the redisplay of an already
open Task. */
public
void
focusCommandCenter()
{
/*
*
de:
*
Vorsichtsmassnahme falls das JFrame nur als Icon (Symbol) aufscheint.
*
Auf jeden Fall das normale Fenster wieder herstellen.
*
en:
* Precaution
if the Frame is iconified: de-iconify it anyway. */
int
intFrameState
=
this
.getExtendedState();
/*
de: Deaktivieren des Bits das das Fenster auf Symbolgröße
setzt.
*
en: De-activate the bit for the 'iconify'. */
intFrameState
&= ~JFrame.
ICONIFIED
;
/*
de: Neuen Status (de-ivonified) für das JFrame setzen.
*
en: Set the state (de-iconified) to the Frame.
*/
this
.setExtendedState(intFrameState);
/*
de: Fenster in den Vordergrund bringen und den Focus verlangen.
*
en: Bring the JFrame to front and get the focus.
*/
this
.toFront();
this
.requestFocusInWindow();
/*
de:
*
Focus auf das Feld für die Eingabe der auszuwählenden
Geschäftsanwendung setzen
*
und eine eventuell vorhandene Eingabe im Feld markieren damit die
bestehende
*
Eingabe bei einer neuen Eingabe komplett überschrieben wird.
*
en:
*
Set the focus to the field for selection of code or already Open
Task
* and
select an existing entry to overwrite it when a new value is
entered.
*/
get_txt_Code().requestFocusInWindow();
get_txt_Code().selectAll();
}
/*
* ********************
*
de:
*
METHODE um die Remote-Interface des Standard-EJB zurück zu
liefern.
*
In den JavaScout-Basisklassen wird diese Remote-Interface benötigt
um die Position und Größe
*
eines Fensters zu speichern und wieder einzulesen.
*
Der Algorithmus in dieser Klasse ist so gestaltet, dass alle
notwendigen Vorbedingungen
*
(Objekt der Klasse mit dem Context für die Verbindung zum JAS,
JNDI-Name des EJB bekannt)
*
geprüft und wenn notwendig wieder hergestellt werden.
*
--------------------
*
en:
* METHOD
to return the Remote-interface of the Standard-EJB.
*
Within the JavaScout-Base-Classes this Remote-Interface is needed, to
store and retrieve
*
the size and position of a window.
*
The algorithm within this method is designed to check all
prerequisites (object with the class
*
administering the Context for the connection to the JAS, JNDI-name of
the EJB known)
*
and establish them if needed.
*/
public synchronized
JSBS_StandardEJBBeanRemote
get_JSBS_StandardEJBBeanRemote() {
/*
*
de:
*
Zuerst Prüfen ob das Objekt mit dem Context für die
Verbindung zum JAS bereits existiert.
* Objekt
'konstruieren' wenn es noch nicht existiert.
*
en:
*
Verify if the object with the Context for the connection to JAS
already exists.
*
'Construct' the object if not already done. */
if
(
structJSBS_StartFrame__JASConnections
==
null
)
structJSBS_StartFrame__JASConnections
=
new
JSBS_StartFrame__JASConnections(
this
);
/*
*
de: Noch einmal prüfen ob das Objekt konstruiert wurde.
*
en: Verify again if the object was constructed. */
if
(
structJSBS_StartFrame__JASConnections
==
null
)
return
null
;
/*
*
de:
*
Prüfen ob bereits der Context für die Verbindung zum JAS
existiert.
* Wenn
nicht dann die entsprechende Methode ausführen.
*
en:
*
Verify if the Context for the connection to JAS already exists.
*
If not, call the respective method. */
if
(
structJSBS_StartFrame__JASConnections
.
initialStandardContext
==
null
)
structJSBS_StartFrame__JASConnections
.establishStandardInitialContext();
/*
*
de: Noch einmal prüfen ob der Context und der EJB-JNDI-Name
jetzt 'existieren'.
*
en: Verify again if the Context and the EJB-JNDI-name 'exist' now.
*/
if
(
structJSBS_StartFrame__JASConnections
.
initialStandardContext
==
null
)
return
null
;
if
(
structJSBS_StartFrame__JASConnections
.
strStandardEJB_JNDI_Name
==
null
)
return
null
;
/*
*
de:
*
Herstellen der Verbindung zum EJB das auf dem JAS 'läuft'.
* Über
diese Verbindung können die Methoden des EJB (auf dem JAS)
aufgerufen werden.
*
en:
*
Establish the connection to the EJB 'running' on the JAS.
*
Over this connection, methods of the EJB (running on the JAS) can be
called. */
try
{
/*
*
de: Interface für das EJB definieren; dieser Wert wird aus
dieser Methode zurück geliefert.
*
en: Define the Interface for the EJB; this value is returned from
this method. */
JSBS_StandardEJBBeanRemote
remoteJSBS_StandardEJBBean;
/*
*
de: Interface über 'Context' und JNDI-Namen des EJB erstellen.
*
en: Establish the Interface using the 'Context' and the JNDI-name of
the EJB. */
remoteJSBS_StandardEJBBean
=
(JSBS_StandardEJBBeanRemote)
structJSBS_StartFrame__JASConnections
.
initialStandardContext
.lookup(
structJSBS_StartFrame__JASConnections
.
strStandardEJB_JNDI_Name
);
/*
*
de:
* Bis
hierher ohne Fehler bedeutet, dass die Verbindung zum EJB erstellt
wurde.
* Interface
mit der Verbindung zum EJB zurück liefern.
*
en:
* Program
run without an error till here; means that the connection to the EJB
was established
* Return
the Interface with the connection to the EJB. */
return
remoteJSBS_StandardEJBBean;
}
catch
(Exception
e){
/*
* de:
Nicht näher bestimmter Fehler aufgetreten; über 'null'-Wert
signalisieren.
*
en: An error occured without further detailed specification; signal
via 'null'-value. */
return
null
;
}
}
/*
*
-------------------------------
*
de:
*
METHODE zum Prüfen, ob eine Verbindung zum JAS (Java Application Server) aufgebaut werden kann.
*
Je nach Ergebnis der Prüfung wird die Schaltfläche, mit der der Anwender eine weitere Prüfung
* einleiten kann, ein- oder ausgeblendet.
*
Zweck dieser Methode ist, bei der Betriebsart 'MobileClient' auf die Unterbrechung der Verbindung
* zum JAS adäquat reagieren zu können.
*
en:
*
METHOD to verify, if a connection to the JAS (Java Application Server) can be established.
*
Depending on the result of the verification, the JButton that enables the user to initiate a further
*
verification, is shown or hided.
*
Intention of this method is to react suitable to an interrupted connection to the JAS when the
*
client uses operation-mode 'MobileClient'.
*/
public boolean
testJASConnection(
) {
/*
*
de:
* Die Prüfung erfolgt nur wenn das Anwendungsprogramm in der Version Heavyweight-Client oder als MobileClient
* läuft. Ansonsten ist eine Verbindung zum JAS nicht erforderlich.
*
en:
* The verification is performed only if the application runs with the version heavyweight-client or
* MobileClient. Otherwise a connection to the JAS is not needed
. */
if
( (
RunVersion
== JSBS_StartFrame.
CONST_MobileClient
)
|| (
RunVersion
== JSBS_StartFrame.
CONST_FatClient
))
{}
else return true
;
/*
*
de:
* Das Prüfen, ob eine Verbindung zum JAS aufgebaut werden kann, wird innerhalb eines 'synchronized'-
*
Block ausgeführt.
*
Grund dafür ist, dass bei einer unterbrochenen Verbindung die Versuche zum Wieder-Verbinden länger
*
dauern können als der Intervall innerhalb des Threads 'JSBS_StartFrame__JASMonitor_Thread'
.
*
Ohne 'synchronized' würde dann das Prüfen auf die Verbindung zum JAS mehrmals erfolgen weil die
*
Variable 'bolJASConnectionEstablished' noch nicht auf 'false' gesetzt ist wenn diese Methode aus dem
*
Thread 'JSBS_StartFrame__JASMonitor_Thread' erneut aufgerufen wird
.
*
Durch 'synchronize' kann der Code nicht parallel ausgeführt werden - ein zweiter Aufruf der Methode
*
muss 'warten' bis der Code innerhalb des 'synchronized'-Blocks abgearbeitet ist.
*
en:
* The verification, if a connection to the JAS can be established, is done within a 'synchronized'-block.
*
Reason for that is, that the time for the trials to re-connect to the JAS might be longer than the
*
interval used within the thread 'JSBS_StartFrame__JASMonitor_Thread'.
* Without the 'synchronized', the verifcation for the connection to the JAS would be done several times
*
when the variable 'bolJASConnectionEstablished' is not already set to 'false' and this method is called
*
again from 'JSBS_StartFrame__JASMonitor_Thread'.
*
By using 'synchronize', the code can not run parallel - a second call of the method has to 'wait'
*
until the code within the 'synchronize'-block is finished
. */
synchronized
(
this
)
{
/*
*
de:
*
Prüfen, ob die Verbindung zum JAS schon einmal als unterbrochen erkannt wurde.
*
Damit wird die Prüfung auf eine aufrechte Verbindung vermieden weil diese Prüfung durch Wiederhol-
*
Versuche des Betriebssystems und des Java-Runtime-Systems bis zu einer Minute dauern kann wenn
*
keine Verbindung zum JAS aufgebaut werden kann
.
*
en:
*
Verify if the connection to the JAS was detected as interrupted before.
*
That avoids a verification for an existing connection as this verification may take up to one minute
*
(caused by repeated trials of the operating-system and Java-Runtime-System) if a connection to the
*
JAS can not be established
. */
if
(!
bolJASConnectionEstablished
)
return false
;
/*
*
de:
* Aufrufen der Methode, die das Objekt für die Verbindung zum JAS konstruiert.
*
In der aufgerufenen Methode wird bereits generell geprüft, ob die Verbindung zum JAS
*
aufgebaut werden kann
.
*
en:
* Call the method that constructs the object used for the connection to the JAS.
*
The called method contains a general verification if the connection to the JAS can
be established
. */
JSBS_StandardEJBBeanRemote remoteJSBS_StandardEJBBean = get_JSBS_StandardEJBBeanRemote()
;
/*
*
de:
Prüfen, ob das Objekt für die Verbindung zum JAS konstruiert wurde
.
*
en:
Verify if the object for the connection to the JAS was constructed
. */
if
(
remoteJSBS_StandardEJBBean
==
null
) {
/*
*
de:
*
Objekt konnte nicht konstruiert werden weil keine Verbindung zum JAS möglich ist
.
*
Entsprechenden Merker setzen
.
*
en:
*
Object could not be constructes as a connection to the JAS is not possible.
*
Set the appropriate flag
. */
bolJASConnectionEstablished
=
false
;
}
else
{
/*
*
de:
*
Objekt für die Verbindung zum JAS konstruiert; jetzt abfragen ob die Verbindung
*
auch korrekt funktioniert
.
*
en:
*
Object for the connection to the JAS constructed; verify now if the connection is working.
* as expected
. */
bolJASConnectionEstablished
=
remoteJSBS_StandardEJBBean
.testJASConnection()
;
}
/*
*
de:
*
Prüfung auf eine aufrechte Verbindung zum JAS beendet; 'synchronized'-Block beenden
.
*
en:
* Verification for an existing connection to the JAS done; end the 'synchronized'-block
. */
}
/*
*
de:
* Abhängig, ob eine Verbindung zum JAS aufgebaut werden konnte oder nicht, wird im folgenden Code
*
die Schaltfläche (JButton), mit der der Anwender den neuerlichen Aufbau der Verbindung versuchen
*
kann, eingeblendet oder entfernt
.
*
en:
* Depending on the fact, if a connection to the JAS could have been established or not, the following
* shows or hides the JButton that allows the user to retry a connection to the JAS
. */
/*
*
de:
Zuerst wird ein Merker erstellt ob die Schaltfläche bereits sichtbar ist oder nicht
.
*
en: First, a flag if the JButton is already visible or not, is created
. */
boolean
bolConnectToJASShowing =
false
;
/*
*
de:
Alle 'Komponenten' des JPanel, das die Schaltfläche enthalten kann
in ein Array einlesen.
*
en: Read all 'componente' of the JPanel that may contain the JButton into an array
. */
Component comps[] = get_pnl_ConnectToJAS().getComponents()
;
/*
*
de:
*
In einer for-Schleife die 'Komponenten' prüfen ob ein JButton (Schaltfläche) dabei ist.
*
Bedingt durch das Design dieser Klasse kann das dann nur die Schaltfläche für den Versuch, die
*
Verbindung zum JAS wieder herzustellen, sein. In diesem Fall den entsprechenden Merker setzen
.
*
en:
*
Use a for-loop to inspect all 'components' if they contain a JButton.
Due to the design of this class
*
this can only be the JButton that enables an user to retry the connection to the JAS.
*
Set the appropriate flag in that case
. */
int
intNumberOfComponents = comps.
length
;
int
intComponentIndex
;
for
(intComponentIndex = 0; intComponentIndex < intNumberOfComponents; intComponentIndex++) {
Component comp = comps[
intComponentIndex
]
;
/*
*
de:
*
Prüfen ob die 'Komponente' der gesuchte JButton (Schaltfläche) ist.
*
In diesem Fall den Merker setzen und die for-Schleife beenden
.
*
en:
*
Check if the 'component' is the requested JButton. In that case set the flag and end the for-loop
. */
if
(comp
instanceof
JButton) {
bolConnectToJASShowing =
true
;
break
;
}
}
/*
*
de:
*
Abhängig davon, ob die Schaltfläche angezeigt werden soll (oder nicht) und bereits angezeigt wird
*
(oder nicht) wird die Schaltfläche angezeigt oder entfernt
.
*
Zusätzlich wird die Farbe der Ränder der (in der erbenden Klasse) definierten Panels geändert um
*
eine aufrechte oder unterbrochene Verbindung zum JAS visuell zu signalisieren
.
*
en:
*
Depending if the JButton should be shown (or not) and is already shown (or not), the JButton is shown
*
or removed
.
*
Additionally, the color of the border of the panels (that are defined in the inheriting class) are
*
changed to visually signal an existing or broken connection to the JAS
. */
if
((!
bolJASConnectionEstablished
) && (!
bolConnectToJASShowing
)
) {
get_pnl_ConnectToJAS().add(BorderLayout.
CENTER
, get_btn_ConnectToJAS());
JSBS_GUIServices.setPanelBordersAlternate(
this
,
structJSBS_UniversalParameters
,
arrayJPanelBordersToBeColored
);
}
if
(
bolJASConnectionEstablished
&&
bolConnectToJASShowing
) {
get_pnl_ConnectToJAS().removeAll
();
JSBS_GUIServices.setPanelBorders(
this
,
structJSBS_UniversalParameters
,
arrayJPanelBordersToBeColored
);
}
/*
*
de:
Warnung, dass die Verbindung zum JAS unterbrochen ist, anzeigen
.
*
en: Show the warning that the connection to the JAS is interrupted
. */
if
(!
bolJASConnectionEstablished) {
/*
*
de:
*
Unterscheiden in welcher Version das Anwendungs
programm läuft.
*
Damit können verschiedenen Texte bei einer eventuellen Warnung oder fFehlermeldung zugeordnet werden.
*
en:
*
Differentiate which version is used within the application program.
*
This allows to
assign different texts at a warning or error-message. */
String strRunVersionExtension =
""
;
if
(RunVersion ==
CONST_FatClient
)
strRunVersionExtension =
"_FatClient"
;
if
(RunVersion ==
CONST_MobileClient
)
strRunVersionExtension =
"_MobileClient"
;
handleErrorEvent(
this
.getClass().getName(),
"ConnectionToJASFailed"
+ strRunVersionExtension);
}
/*
*
de:
Werte des Merkers an die aufrufende Methode zurück liefern
.
*
en: Return the value of the flag
. */
return
bolJASConnectionEstablished
;
}
/*
* ==============================
*
de: BLOCK MIT DEN METHODEN FÜR WÄHRUNG, SPRACHE UND LAND.
*
en: BLOCK WITH THE METHODS FOR CURRENCY, LANGUAGE AND COUNTRY. */
/*
*
-------------------------------
*
de: BLOCK mit ALLGEMEINEN Methoden.
*
en: BLOCK with COMMON methods.
*
-------------------------------
*
de: METHODE zum Übertragen eines Arrays mit Werten der Klasse String in einen Vector.
*
en: METHOD transfer an array with values of class String into a Vector. */
private
Vector<String> convertStringArrayToVector(String[] parmStringArray)
{
/*
de: Definition der Variable des Vectors, der von dieser Methode zurück geliefert wird.
*
en: Definition of the variable for the vector that is returned by this method. */
Vector<String> vecReturn =
new
Vector<String>()
;
/*
*
de:
*
Prüfen, ob der übergebene Parameter einen null-Wert enthält.
*
In diesem Fall diese Methode sofort beenden und einen leeren Vector zurück liefern.
*
en:
* Verify, if the passed parameter contains a null-value.
*
In that case end the method immediately and return an empty vector
. */
if
(
parmStringArray ==
null
)
return
vecReturn
;
/*
*
de:
*
Variable für die Steuerung der for-Schleife definieren und for-Schleife beginnen
.
*
en:
* Define the variables to control the for-loop and start the for-loop
. */
int
intArraySize = parmStringArray.length;
int
intArrayIndex;
for
(
intArrayIndex = 0; intArrayIndex < intArraySize; intArrayIndex++
)
{
/*
*
de:
*
Ein Object der Klasse String definieren und den Wert aus dem indizierten Array-Element
*
übertragen. Anschließend den String in den Vector einfügen
.
*
en:
* Define an object of class String and transfer the value from the indexed array-element.
*
Insert the string to the vector thereafter
. */
String locString = parmStringArray[intArrayIndex];
vecReturn.addElement(
locString);
}
/*
*
de: '
Gefüllten' Vector an die aufrufende Methode zurück liefern
.
*
en: Return the 'filled' vector to the calling method
. */
return
vecReturn
;
}
/*
*
-------------------------------
*
de:
*
METHODE zum Prüfen, ob ein Element des als Parameter übergebenen Vectors mit der
*
Zeichenkette beginnt, die im Parameter 'parmValueToCompare' übergeben wird
.
*
*
en:
*
METHOD to verify if an element of the vector passes as parameter starts with the
*
string passed in parameter 'parmValueToCompare'
. */
public boolean
isValueInVector(Vector<String> parmVector, String parmValueToCompare)
{
/*
*
de:
*
Prüfen, ob die übergebenen Parameter einen null-Wert enthalten.
*
In diesem Fall diese Methode sofort beenden und 'false' zurück liefern.
*
en:
* Verify, if the passed parameters contains a null-values.
*
In that case end the method immediately and return 'false'
. */
if
(
parmVector ==
null
)
return false
;
if
(
parmValueToCompare ==
null
)
return false
;
/*
*
de:
Zeichenkette für das Bearbeiten eines Elements aus dem Vector
.
*
en: String to process one element of the vector
. */
String strVectorElement;
/*
*
de:
*
Variable für die Steuerung der for-Schleife definieren und for-Schleife beginnen
.
*
en:
* Define the variables to control the for-loop and start the for-loop
. */
int
intVectorSize =
parmVector
.size();
int
intVectorIndex;
for
(
intVectorIndex = 0; intVectorIndex < intVectorSize; intVectorIndex++
)
{
/*
*
de:
Indiziertes Element aus dem Vector auslesen
.
*
en: Read the indexed element out of the vector
. */
strVectorElement = (String) parmVector.elementAt(intVectorIndex);
/*
*
de:
* Die Prüf-Bedingung ist erfüllt w
enn die Zeichenkette des Vector-Elements mit
*
dem zu vergleichenden Wert beginnt
. Methode beenden; 'true' zurück liefern
.
*
en:
* The verification is fulfilled if the string of the vector-element starts with
*
the value of the string to be compared
. */
if
(strVectorElement.indexOf(parmValueToCompare) == 0
)
return true
;
}
/*
*
de:
* Beim Durchlauf der for-Schleife wurde kein Vector-Element gefunden, das mit der
* im Parameter 'parmValueToCompare' übergebenen Wert beginnt.
* Deswegen 'false' an die aufrufende Methode zurück liefern
.
*
en:
* Within the for-loop a vector-element beginning with the value passed in
* parameter 'parmValueToCompare' was not found
.
* Therefore return 'false' to the calling method
. */
return false
;
}
/*
*
-------------------------------
*
BLOCK mit den Methoden für das LAND.
*
-------------------------------
*
de:
*
METHODE zum Lesen aller BO mit den im Anwendungsprogramm definierten, aktuell
*
gültigen Ländern von der Datenbank
.
*
Dabei wird geprüft, ob das
letzte Lesen von der Datenbank länger zurück liegt
*
als durch den Wert im Parameter 'parmRefreshPeriodsInSeconds' festgelegt -
*
nur dann wird wieder von der Datenbank gelesen
.
*
*
en:
*
METHOD to read all BO with the actually valid countries, defined in the
*
application program, from the database.
* Within this method is checked if the last read from the database was longer ago
*
as defined by the parameter
'parmRefreshPeriodInSeconds'
- only then a read is
*
done from the database again
. */
private void
retrieveJSBS_Country_BOC_Set(
int
parmRefreshPeriodInSeconds)
{
/*
*
de:
*
Prüfen, ob das BOC bereits einmal 'konstruiert' wurde -
* ansonsten das BOC 'konstruieren'.
*
en:
* Verify, if the BOC was 'constructed' before; otherwise 'construct' it
. */
if
(
structJSBS_Country_BOC_Set
==
null
) {
/*
de: Konstruieren des BOC.
*
en: Construct the BOC. */
structJSBS_Country_BOC_Set
=
new
JSBS_Country_BOC_Set(
this
);
/*
de: Damit das Set auf jeden Fall neu gelesen wird ein 'uraltes' Datum gesetzt.
*
en: Set an 'ancient' date so that the Set is read in any case. */
dteJSBS_Country_BOC_Set_LastRead
=
new
Date(0
);
}
/*
*
de:
* Berechnen der Sekunden, die seit dem letzten Lesen von der Datenbank vergangen sind.
*
en:
* Calculate the seconds since the last read from the database. */
long
intTimeDiffInSeconds =
((
new
Date()).getTime() -
dteJSBS_Country_BOC_Set_LastRead
.getTime()) / 1000;
/*
*
de:
* Methode abbrechen wenn seit dem letzten Lesen von der Datenbank weniger Zeit vergangen
* ist als der Wert im Parameter
.
*
en:
* Terminate the method if the time-period since the last read from the database is less
* than the value passed in the parameter
. */
if
(intTimeDiffInSeconds
<=
parmRefreshPeriodInSeconds)
return
;
/*
*
de:
* Prüfen, ob eine Verbindung zum JAS (Java Application Server) aufgebaut werden kann.
* Der folgende Zugriff auf die Datenbank ist möglicherweise der erste nach dem Starten
* des Anwendungsprogramms und deswegen wird jetzt geprüft, ob überhaupt eine Verbindung
* zum JAS möglich ist
.
*
en:
* Verify if a
connection to the JAS (Java Application Server) can be established.
* The following access to the database might be the first one after the start of the
* application program and therefore, now a check is made if a connection to the JAS
* is possible
. */
testJASConnection(
)
;
/*
*
de: 'Holen' aller zum aktuellen Datum gültigen ISO-Land-Codes
von der Datenbank.
*
en: Retrieve all ISO-lcountry-codes that are valid at the actual date from
the database. */
structJSBS_Country_BOC_Set
.selectAllValid();
/*
*
de:
*
Je nach Status des Datenbank-Zugriffs entscheiden, wie die
Verarbeitung weiter gehen soll.
*
en:
*
Decide how to continue the processing depending on the status of the
databas-acces. */
switch
(
structJSBS_Country_BOC_Set
.
StatusCode
)
{
case
JSBS_BO.
CONST_OK
:
/*
de:
*
Datenbank-Zugriff wie erwartet.
*
Datum des letzten Zugriffs neu setzen und dann normal fortsetzen.
*
en:
*
Database-access as expected.
*
Set the date of the last access and continue normal thereafter
. */
dteJSBS_Country_BOC_Set_LastRead
=
new
Date()
;
break
;
case
JSBS_BO.
CONST_NOT_FOUND
:
/*
de:
* Auf der Datenbank wurde kein aktuell gültiges Land gefunden.
*
Ist kein Fehler; es werden dann keine Einträge in einer JTable oder JComboBox angezeigt
.
*
en:
*
Not a single country, that is actually valid, found on the database.
* Is not an error; leads to the effect that no entries are shown in a JTable or JComboBox
. */
break
;
default
:
/*
de:
*
Sonstiger Status aufgetreten.
*
Bedingt durch den Datenbank-Zugriff (select) kann es nur ein Fehler
der Datenbank sein
*
der nicht umgangen werden kann.
*
Methode zur Fehlerbehandlung aufrufen.
*
en:
*
Another status occured.
*
In consequence of the database-access (select) it can only be an
error of the database
*
which can not be bypassed.
*
Call the method to handle an Error. */
handleErrorEvent(
this
.getClass().getName(),
"retrieveJSBS_Country_BOC_Set_DBError"
,
Integer.toString(
structJSBS_Country_BOC_Set
.
StatusCode
),
structJSBS_Country_BOC_Set
.
StatusMsg
);
}
}
/*
*
-------------------------------
*
de:
*
Wrapper-
METHODE zum Ermitteln der Länder-Bezeichnung (CountryName).
*
Der Code für die 'richtige Arbeit' ist in der nachfolgenden Methode
.
* Als Sprach-Code für die Anzeige des Länder-Namens wird die vom Anwender gewählte
* Sprache als Parameter übergeben
.
*
*
en:
*
Wrapper-
METHOD to get the country-name.
* The code for the 'real work' is in the following method.
* As language-code for the display of the country-name the one assigned to the user
*
is passed
. */
private
String getCountryName(String parmISOCountryCode)
{
return
getCountryName(
parmISOCountryCode,
structJSBS_UniversalParameters
.
strLanguageCode
)
;
}
/*
*
de:
*
METHODE zum Ermitteln der Länder-Bezeichnung (CountryName) für den im Parameter
*
'parmISOCountryCode' übergebenen Land-Code in der im 'parmLanguageCodeForLabelling'
*
übergebenen Wert für die Sprache
.
*
*
en:
*
METHOD to get the country-name for the country-code passed in the parameter
*
'parmISOCountryCode'. The language for the country-name is passed in the parameter
*
'parmLanguageCodeForLabelling'
. */
private
String getCountryName(String parmISOCountryCode, String parmLanguageCodeForLabelling)
{
/*
*
de:
*
Prüfen, ob der übergebene Parameter 'parmISOCountryCode' einen null-Wert enthält.
*
In diesem Fall diese Methode sofort beenden und eine leere Zeichenkette zurück liefern.
*
en:
* Verify, if the passed parameter 'parmISOCountryCode' contains a null-value.
*
In that case terminate the method immediately and return an empty string
. */
if
(
parmISOCountryCode
==
null
)
return
""
;
/*
*
de:
* Wenn der Wert im 'parmLanguageCodeForLabelling' null ist, wird
der Parameter
* durch den Sprach-Code, der dem Anwender zugeordnet ist, ersetzt.
*
en:
* If the value in 'parmLanguageCodeForLabelling' is null, the the parameter is
* replaced by the language-code assigned to the user
. */
if
(
parmLanguageCodeForLabelling
==
null
)
parmLanguageCodeForLabelling =
structJSBS_UniversalParameters
.
strLanguageCode
;
/*
*
de: Einzelnes BO aus dem Vector für die Bearbeitung innerhalb der for-Schleife
.
*
en: Single BO out of the vector for processing within the for-loop
. */
JSBS_Country_BO loc
JSBS_Country_BO
;
/*
*
de:
Zeichenkette für den Wert der aus dieser Methode zurück geliefert wird
.
*
en: String for the value that is returned from this method
. */
String strReturnValue =
""
;
/*
*
de:
*
Variable für die Steuerung der for-Schleife definieren und for-Schleife beginnen
.
*
en:
* Define the variables to control the for-loop and start the for-loop
. */
int
intArraySize =
structJSBS_Country_BOC_Set
.
vecRecordSet
.size();
int
intArrayIndex;
for
(
intArrayIndex = 0; intArrayIndex < intArraySize; intArrayIndex++
)
{
/*
*
de:
Indiziertes Element aus dem Vector auslesen
.
*
en: Read the indexed element out of the vector
. */
loc
JSBS_Country_BO
= (
JSBS_Country_BO
)
structJSBS_Country_BOC_Set
.
vecRecordSet
.elementAt(intArrayIndex);
/*
*
de:
* Die folgenden 'if' könnten auch als eine Bedingung geschrieben werden.
* Damit die Teil-Bedingungen verständlicher kommentiert werden können wird die
*
Redundanz in Kauf genommen
.
*
en:
* The following 'if' could be written as a single condition.
*
It allows more understandable comments if the conditions are split into parts -
*
therefore the redundancy is accepted
. */
/*
*
de: Zuerst prüfen, ob der Land-Code überhaupt zutrifft
.
*
en: Verify first if the country-code fits
. */
if
(
loc
JSBS_Country_BO
.
ISOCountryCode
.compareTo(parmISOCountryCode) == 0
) {
/*
*
de:
*
Wenn beide Parameter übereinstimmen dann wurde die eindeutige Bezeichnung für
*
das Land
gefunden.
Den Namen des Landes zurück liefern und Methode beenden
.
*
en:
*
If both parameters fit then the unique name for the country was found.
*
Return the name of the country and end this method
. */
if
(
loc
JSBS_Country_BO
.
LanguageCodeForLabelling
.compareTo(parmLanguageCodeForLabelling) == 0
)
return
loc
JSBS_Country_BO
.
CountryName
;
/*
*
de:
*
Wenn der Datensatz aus dem Vector die Standard-Sprache abbildet, dann wird die
* Bezeichnung für das Land in der Zeichenkette für die Rückgabe aufgehoben.
*
Möglicherweise folgt noch ein Datensatz mit genauer Übereinstimmung der beiden
*
Parameter
-Werte.
*
en:
*
If the dataset from the vector is the one for the default-language, then the
* country
-name is stored in the string for return
.
* Potentially a dataset with the exact comparison to both parameter-values follows
. */
if
(
(loc
JSBS_Country_BO
.
LanguageCodeForLabelling
.trim().length() <= 0
)
&&
(
strReturnValue
.length() <= 0
))
strReturnValue
=
loc
JSBS_Country_BO
.
CountryName
;
}
else
{
/*
*
de:
*
Wenn der Länder-Code nicht mit dem Parameter-Wert übereinstimmt und die Zeichenkette
*
für den Namen des Landes einen Wert enthält dann bedeutet das, dass für den gesuchten
*
Wert in 'parmISOCountryCode' ein Standard-Wert gefunden wurde.
*
Diesen Standard-Wert jetzt zurück liefern.
*
en:
*
If the country-code is not equal to the value passed in the parameter
*
'parmISOCountryCode' and the string for the country-name contains a value, then
* the 'default'-country-name for the value passed in parameter 'parmISOCountryCode.
* Return this default-country-name now
. */
if
(
strReturnValue
.length() > 0
)
return
strReturnValue
;
}
}
/*
*
de:
*
Wenn keine Bezeichnung für das Land gefunden wurde dann
ist die Zeichenkette noch
* immer leer. Zeichenkette jetzt
zurück liefern
.
*
en:
*
If a country-name was not found for the parameters, then the string is
still empty.
*
Return the string
now. */
return
strReturnValue
;
}
/*
*
-------------------------------
*
de:
*
Wrapper-
METHODEN für das Füllen einer Combobox mit der Auswahlliste für die Länder
.
*
*
en:
*
Wrapper-
METHOD to fill a combo-box with the selection-list for the countries
. */
public void
fillCountryComboBox(
JComboBox parmJComboBox
)
{
fillCountryComboBoxWithExclusions
(
parmJComboBox, 0,
null
, 600
,
null
)
;
}
/*
***** */
public void
fillCountryComboBox(
JComboBox parmJComboBox
,
int
parmCountryMarkerNumber
)
{
fillCountryComboBoxWithExclusions
(
parmJComboBox,
parmCountryMarkerNumber
,
null
, 600
,
null
)
;
}
/*
***** */
public void
fillCountryComboBox(
JComboBox parmJComboBox
,
S
tring parmDisplayLanguageCode
)
{
fillCountryComboBoxWithExclusions
(
parmJComboBox, 0
,
parmDisplayLanguageCode
,
600
,
null
)
;
}
/*
***** */
public void
fillCountryComboBox(
JComboBox parmJComboBox
,
int
parmCountryMarkerNumber
,
S
tring parmDisplayLanguageCode
)
{
fillCountryComboBoxWithExclusions
(
parmJComboBox,
parmCountryMarkerNumber
,
parmDisplayLanguageCode
,
600
,
null
)
;
}
/*
***** */
public void
fillCountryComboBox(
JComboBox parmJComboBox
,
int
parmCountryMarkerNumber
,
S
tring parmDisplayLanguageCode
,
int
parmRefreshPeriodInSeconds
)
{
fillCountryComboBoxWithExclusions
(
parmJComboBox,
parmCountryMarkerNumber
,
parmDisplayLanguageCode
,
parmRefreshPeriodInSeconds
,
null
)
;
}
/*
***** */
public void
fillCountryComboBoxWithExclusions(
JComboBox parmJComboBox
,
Vector<S
tring> parmExclusionList
)
{
fillCountryComboBoxWithExclusions
(
parmJComboBox, 0
,
null
,
600
,
parmExclusionList
)
;
}
/*
***** */
public void
fillCountryComboBoxWithExclusions(
JComboBox parmJComboBox
,
int
parmCountryMarkerNumber
,
Vector<S
tring> parmExclusionList
)
{
fillCountryComboBoxWithExclusions
(
parmJComboBox,
parmCountryMarkerNumber
,
null
,
600
,
parmExclusionList
)
;
}
/*
***** */
public void
fillCountryComboBoxWithExclusions(
JComboBox parmJComboBox
,
S
tring parmDisplayLanguageCode
,
Vector<S
tring> parmExclusionList
)
{
fillCountryComboBoxWithExclusions
(
parmJComboBox, 0
,
parmDisplayLanguageCode
,
600
,
parmExclusionList
)
;
}
/*
***** */
public void
fillCountryComboBoxWithExclusions(
JComboBox parmJComboBox
,
int
parmCountryMarkerNumber
,
S
tring parmDisplayLanguageCode
,
Vector<S
tring> parmExclusionList
)
{
fillCountryComboBoxWithExclusions
(
parmJComboBox,
parmCountryMarkerNumber
,
parmDisplayLanguageCode
,
600
,
parmExclusionList
)
;
}
/*
*
de:
*
METHODE zum Füllen einer JComboBox (im Parameter 'parmJComboBox' übergeben)
* mit den Ländern, die für die Installation des Anwendungsprogramms erfasst sind.
* Diese Methode hat die maximale Anzahl an Parametern mit denen die Auswahl der
* Länder gesteuert werden kann.
*
'parmCountryMarkerNumber' ist die Einschränkung auf einen Marker für einen
*
Themenbereich für den das Land 'zugelassen' ist.
*
Ist der Wert in diesem Parameter '0' dann werden alle Länder zur Auswahl
*
in der Combobox angezeigt.
*
'parmDisplayLanguageCode' ist die Festlegung, in welcher Sprache die Bezeichnung
*
('CountryName') angezeigt werden soll.
*
Ist der übergebene Wert 'null' dann wird der vom Anwender gewählte Sprach-Code
*
(aus 'structJSBS_UniversalParameters.strLanguageCode') verwendet.
*
'parmRefreshPeriodInSeconds' legt fest, in welchem Intervall das Set mit den
*
Ländern von der Datenbank gelesen wird.
*
'parmExclusionList' enthält eine Liste mit jenen Land-Codes, die nicht in der
*
Auswahlliste der Combobox angezeigt werden sollen
.
*
*
en:
*
METHOD to fill a JComboBox (passed in the parameter 'parmJComboBox') with the
* countries that are recorded at an installation of the application-program.
*
This method has the maximum number of parameters to control the selection of
*
the countries.
*
'parmCountryMarkerNumber' ist the limitation to one Marker for an area the
*
country is 'permitted'.
*
If the value of this parameter is '0', then all countries are displayed
*
in the combo-box for selection.
*
'parmDisplayLanguageCode' ist the definition, in which language the
*
'CountryName' should be displayed.
*
If the passed parameter is 'null', the language-code for the user
*
(defined in 'structJSBS_UniversalParameters.strLanguageCode') is used.
*
'parmRefreshPeriodInSeconds' defines, in which time interval the set of
*
countries is read from the database.
*
'parmExclusionList' contains a list of all country-codes, that should not
*
be displayed in the list of the combo-box
. */
public void
fillCountryComboBoxWithExclusions
(JComboBox parmJComboBox
,
int
parmCountryMarkerNumber
,
S
tring parmDisplayLanguageCode
,
int
parmRefreshPeriodInSeconds
,
Vector<S
tring> parmExclusionList
)
{
/*
*
de:
* Jeden Parameter p
rüfen, ob eventuell ein 'null'-Wert übergeben wurde und
* in jedem Fall eine Korrektur ausführen.
*
en:
* Verify each parameter if a null-value was passed and do corrective processing
* in each case
. */
/*
*
de:
* Wenn keine Combobox übergeben wurde dann kann auch keine gefüllt werden.
* Methode sofort abbrechen.
*
en:
* If a combo-box was not passed - no one can be filled.
*
Terminate the method immediately
. */
if
(
parmJComboBox
==
null
)
return
;
/*
*
de:
* Wenn kein Sprach-Code für die Anzeige des Land-Namens übergeben wird dann wird
* die vom Anwender gewählte Sprache verwendet.
*
en:
* If no language-code
for the display of the country-name was passed, then the
* language chosen by the user is used
. */
if
(
parmDisplayLanguageCode
==
null
)
parmDisplayLanguageCode
=
structJSBS_UniversalParameters
.
strLanguageCode
;
/*
*
de:
* Wenn kein Vector mit den aus der Combobox-Liste auszunehmenden Land-Codes
*
übergeben wird,
wird ein leerer Vector 'konstruiert'.
*
en:
* If no Vecor with the country-codes, that should be excluded from the combo-box-list,
* was passed, then an empty Vector is 'constructed'
. */
if
(
parmExclusionList
==
null
)
parmExclusionList
=
new
Vector<String>();
/*
*
de:
* Methode aufrufen die prüft, ob der Zeit-Intervall seit dem letzten Lesen von der
*
Datenbank überschritten wurde und bei Bedarf das Set mit den Ländern von der
* Datenbank neu lesen
.
*
en:
* Call the method that checks, if the time-interval since the last retrieve from
* the database is expiered and
re-read the set with the countries from the database
* if needed
. */
retrieveJSBS_Country_BOC_Set(
parmRefreshPeriodInSeconds
);
/*
*
de:
* Ein BOC-Set konstruieren in dem später jene Länder aufgenommen werden, die
* für die Auswahlliste in der Combobox ausgewählt sind
.
*
en:
* Construct a BOC-Set that later will be filled with those countries that are
* selected later for the display of the selection list within the combo-box
. */
JSBS_Country_BOC_Set structJSBS_Country_BOC_Set_For_ComboBox =
new
JSBS_Country_BOC_Set(
this
)
;
/*
*
de:
*
Variable für die Steuerung der for-Schleife definieren und for-Schleife beginnen
.
*
en:
* Define the variables to control the for-loop and start the for-loop
. */
int
intVectorSize =
structJSBS_Country_BOC_Set
.
vecRecordSet
.size();
int
intVectorIndex;
for
(
intVectorIndex = 0; intVectorIndex < intVectorSize; intVectorIndex++
)
{
/*
*
de:
*
Neues BO für das spätere Einfügen in den Vector für die Anzeige konstruieren
* und i
ndiziertes Element aus dem Vector auslesen
.
*
en:
*
Construct a new BO for later insertion into the vector for display and read
*
the indexed element out of the vector
. */
JSBS_Country_BO
struct
JSBS_Country_BO_Indexed
=
new
JSBS_Country_BO(
);
struct
JSBS_Country_BO_Indexed
= (
JSBS_Country_BO
)
structJSBS_Country_BOC_Set
.
vecRecordSet
.elementAt(intVectorIndex);
/*
*
de:
* Für die Anzeige werden nur die Datensätze mit der Standard-Bezeichnung für
* den Länder-Namen herangezogen. Diese sind daran erkennbar, dass der Wert
*
im Attribut 'LanguageCodeForLabelling' eine leere Zeichenkette ist.
* Bei anderen Werten nächsten Durchlauf der for-Schleife beginnen
.
*
en:
* For the display only datasets with the default-country-name are considered.
*
Those can be identified by an empty string as value in the attribut
*
'LanguageCodeForLabelling'. If there is another value continue with the
* next pass of the for-loop
. */
if
(
struct
JSBS_Country_BO_Indexed
.
LanguageCodeForLabelling
.trim().length() > 0
)
continue
;
/*
*
de:
* Prüfen, ob der Land-Code in der Liste mit den auszunehmenden Codes enthalten ist.
* In diesem Fall ebenfalls mit dem nächsten Durchlauf der for-Schleife fortsetzen
.
*
en:
* Verify, if the country-code is in the list with the codes to be excluded.
* In that case, continue with the next pass of the for-loop, too
. */
if
(
isValueInVector(parmExclusionList, struct
JSBS_Country_BO
_Indexed
.
ISOCountryCode
))
continue
;
/*
*
de:
* Prüfen, ob für den Marker-Wert aus dem Parameter der entsprechende Marker
* im Datensatz enthalten ist.
* Bei einem Parameter-Wert '0' werden alle Datensätze in die Anzeigeliste aufgenommen
.
*
en:
* Verify if, for the Marker-value from the parameter, a fitting Marker is within the
* dataset.
* If the parameter-value is '0', all datasets are included in the list for display.
*/
if
( (parmCountryMarkerNumber
== 0
)
|| ((parmCountryMarkerNumber
== 1
) && (
struct
JSBS_Country_BO
_Indexed
.
Marker01
))
|| ((parmCountryMarkerNumber
== 2
) && (
struct
JSBS_Country_BO
_Indexed
.
Marker02
))
|| ((parmCountryMarkerNumber
== 3
) && (
struct
JSBS_Country_BO
_Indexed
.
Marker03
))
|| ((parmCountryMarkerNumber
== 4
) && (
struct
JSBS_Country_BO
_Indexed
.
Marker04
))
|| ((parmCountryMarkerNumber
== 5
) && (
struct
JSBS_Country_BO
_Indexed
.
Marker05
))
|| ((parmCountryMarkerNumber
== 6
) && (
struct
JSBS_Country_BO
_Indexed
.
Marker06
))
|| ((parmCountryMarkerNumber
== 7
) && (
struct
JSBS_Country_BO
_Indexed
.
Marker07
))
|| ((parmCountryMarkerNumber
== 8
) && (
struct
JSBS_Country_BO
_Indexed
.
Marker08
))
|| ((parmCountryMarkerNumber
== 9
) && (
struct
JSBS_Country_BO
_Indexed
.
Marker09
))
|| ((parmCountryMarkerNumber
== 10
) && (
struct
JSBS_Country_BO
_Indexed
.
Marker10
))
|| ((parmCountryMarkerNumber
== 11
) && (
struct
JSBS_Country_BO
_Indexed
.
Marker11
))
|| ((parmCountryMarkerNumber
== 12
) && (
struct
JSBS_Country_BO
_Indexed
.
Marker12
))
|| ((parmCountryMarkerNumber
== 13
) && (
struct
JSBS_Country_BO
_Indexed
.
Marker13
))
|| ((parmCountryMarkerNumber
== 14
) && (
struct
JSBS_Country_BO
_Indexed
.
Marker14
))
|| ((parmCountryMarkerNumber
== 15
) && (
struct
JSBS_Country_BO
_Indexed
.
Marker15
))
|| ((parmCountryMarkerNumber
== 16
) && (
struct
JSBS_Country_BO
_Indexed
.
Marker16
))
|| ((parmCountryMarkerNumber
== 17
) && (
struct
JSBS_Country_BO
_Indexed
.
Marker17
))
|| ((parmCountryMarkerNumber
== 18
) && (
struct
JSBS_Country_BO
_Indexed
.
Marker18
))
|| ((parmCountryMarkerNumber
== 19
) && (
struct
JSBS_Country_BO
_Indexed
.
Marker19
))
|| ((parmCountryMarkerNumber
== 20
) && (
struct
JSBS_Country_BO
_Indexed
.
Marker20
))
) {}
/*
*
de:
* Marker stimmt nicht überein; mit dem nächste Durchlauf der for-Schleife fortsetzen
.
*
en:
* Marker does not fit; continue with the next pass of the for-loop
.
*/
else continue
;
/*
*
de:
* Wenn der Code bis hierher ausgeführt wurde dann soll das Land in der Auswahlliste
* der Combobox angezeigt werden.
*
Noch die Bezeichnung des landes in der gewünschten Sprache ermitteln
.
*
en:
* If the code was executed till here then the country should be added to the
* selection-list of the combo-box.
*
Finally, get the country-name in the chosen language
. */
s
truct
JSBS_Country_BO_Indexed
.
CountryName
=
getCountryName(
s
truct
JSBS_Country_BO
_Indexed
.
ISOCountryCode
,
parmDisplayLanguageCode
);
/*
*
de:
* Das einzelne BO für einen Eintrag in der Auswahlliste der Combobox in den
* Vector für den Aufbau der Combobox einfügen
.
*
en:
* Add the single BO for one entry in the selection-list of the combo-box into
*
the vector for the build of the combo-box
*/
s
truct
JSBS_Country_BOC_Set_For_ComboBox
.
vecRecordSet
.addElement(
s
truct
JSBS_Country_BO_Indexed
);
}
/*
*
de:
* Vector mit den Rohdaten im BOC aufbauen und Combobox füllen
.
*
en:
* Build the vector with raw-date within the BOC and fill the combo-box
*/
s
truct
JSBS_Country_BOC_Set_For_ComboBox
.buildRawDataVector()
;
String[] arrayComboBoxArrangement = {
"ISOCountryCode"
,
" - "
,
"CountryName"
};
JSBS_GUIServices.setListToJComboBox(parmJComboBox,
structJSBS_Country_BOC_Set_For_ComboBox
.
vecRawDisplayData
,
arrayComboBoxArrangement
);
}
/*
*
-------------------------------
*
BLOCK mit den Methoden für die WÄHRUNG.
*
-------------------------------
*
de:
*
METHODE zum Lesen aller BO mit den im Anwendungsprogramm definierten, aktuell
*
gültigen Währungen von der Datenbank
.
*
Dabei wird geprüft, ob das
letzte Lesen von der Datenbank länger zurück liegt
*
als durch den Wert im Parameter 'parmRefreshPeriodsInSeconds' festgelegt -
*
nur dann wird wieder von der Datenbank gelesen
.
*
*
en:
*
METHOD to read all BO with the actually valid currencies, defined in the
*
application program, from the database.
* Within this method is checked if the last read from the database was longer ago
*
as defined by the parameter
'parmRefreshPeriodInSeconds'
- only then a read is
*
done from the database again
. */
private void
retrieveJSBS_Currency_BOC_Set(
int
parmRefreshPeriodInSeconds)
{
/*
*
de:
*
Prüfen, ob das BOC bereits einmal 'konstruiert' wurde -
* ansonsten das BOC 'konstruieren'.
*
en:
* Verify, if the BOC was 'constructed' before; otherwise 'construct' it
. */
if
(
structJSBS_Currency_BOC_Set
==
null
) {
/*
de: Konstruieren des BOC.
*
en: Construct the BOC. */
structJSBS_Currency_BOC_Set
=
new
JSBS_Currency_BOC_Set(
this
);
/*
de: Damit das Set auf jeden Fall neu gelesen wird ein 'uraltes' Datum gesetzt.
*
en: Set an 'ancient' date so that the Set is read in any case. */
dteJSBS_Currency_BOC_Set_LastRead
=
new
Date(0
);
}
/*
*
de:
* Berechnen der Sekunden, die seit dem letzten Lesen von der Datenbank vergangen sind.
*
en:
* Calculate the seconds since the last read from the database. */
long
intTimeDiffInSeconds =
((
new
Date()).getTime() -
dteJSBS_Currency_BOC_Set_LastRead
.getTime()) / 1000;
/*
*
de:
* Methode abbrechen wenn seit dem letzten Lesen von der Datenbank weniger Zeit vergangen
* ist als der Wert im Parameter
.
*
en:
* Terminate the method if the time-period since the last read from the database is less
* than the value passed in the parameter
. */
if
(intTimeDiffInSeconds
<=
parmRefreshPeriodInSeconds)
return
;
/*
*
de:
* Prüfen, ob eine Verbindung zum JAS (Java Application Server) aufgebaut werden kann.
* Der folgende Zugriff auf die Datenbank ist möglicherweise der erste nach dem Starten
* des Anwendungsprogramms und deswegen wird jetzt geprüft, ob überhaupt eine Verbindung
* zum JAS möglich ist
.
*
en:
* Verify if a
connection to the JAS (Java Application Server) can be established.
* The following access to the database might be the first one after the start of the
* application program and therefore, now a check is made if a connection to the JAS
* is possible
. */
testJASConnection(
)
;
/*
*
de: 'Holen' aller zum aktuellen Datum gültigen ISO-Währung-Codes
von der Datenbank.
*
en: Retrieve all ISO-currency-codes that are valid at the actual date from
the database. */
structJSBS_Currency_BOC_Set
.selectAllValid();
/*
*
de:
*
Je nach Status des Datenbank-Zugriffs entscheiden, wie die
Verarbeitung weiter gehen soll.
*
en:
*
Decide how to continue the processing depending on the status of the
databas-acces. */
switch
(
structJSBS_Currency_BOC_Set
.
StatusCode
)
{
case
JSBS_BO.
CONST_OK
:
/*
de:
*
Datenbank-Zugriff wie erwartet.
*
Datum des letzten Zugriffs neu setzen und dann normal fortsetzen.
*
en:
*
Database-access as expected.
*
Set the date of the last access and continue normal thereafter
. */
dteJSBS_Currency_BOC_Set_LastRead
=
new
Date()
;
break
;
case
JSBS_BO.
CONST_NOT_FOUND
:
/*
de:
* Auf der Datenbank wurde keine aktuell gültige Währung gefunden.
*
Ist kein Fehler; es werden dann keine Einträge in einer JTable oder JComboBox angezeigt
.
*
en:
*
Not a single currency, that is actually valid, found on the database.
* Is not an error; leads to the effect that no entries are shown in a JTable or JComboBox
. */
break
;
default
:
/*
de:
*
Sonstiger Status aufgetreten.
*
Bedingt durch den Datenbank-Zugriff (select) kann es nur ein Fehler
der Datenbank sein
*
der nicht umgangen werden kann.
*
Methode zur Fehlerbehandlung aufrufen.
*
en:
*
Another status occured.
*
In consequence of the database-access (select) it can only be an
error of the database
*
which can not be bypassed.
*
Call the method to handle an Error. */
handleErrorEvent(
this
.getClass().getName(),
"retrieveJSBS_Currency_BOC_Set_DBError"
,
Integer.toString(
structJSBS_Currency_BOC_Set
.
StatusCode
),
structJSBS_Currency_BOC_Set
.
StatusMsg
);
}
}
/*
*
-------------------------------
*
de:
*
Wrapper-
METHODE zum Ermitteln der Währungs-Bezeichnung (CurrencyName).
*
Der Code für die 'richtige Arbeit' ist in der nachfolgenden Methode
.
* Als Sprach-Code für die Anzeige des Währungs-Namens wird die vom Anwender gewählte
* Sprache als Parameter übergeben
.
*
*
en:
*
Wrapper-
METHOD to get the currency-name.
* The code for the 'real work' is in the following method.
* As language-code for the display of the currency-name the one assigned to the user
*
is passed
. */
private
String getCurrencyName(String parmISOCurrencyCode)
{
return
getCurrencyName(
parmISOCurrencyCode,
structJSBS_UniversalParameters
.
strLanguageCode
)
;
}
/*
*
de:
*
METHODE zum Ermitteln der Währungs-Bezeichnung (CurrencyName) für den im Parameter
*
'parmISOCurrencyCode' übergebenen Währungs-Code in der im 'parmLanguageCodeForLabelling'
*
übergebenen Wert für die Sprache
.
*
*
en:
*
METHOD to get the currency-name for the currency-code passed in the parameter
*
'parmISOCurrencyCode'. The language for the currency-name is passed in the parameter
*
'parmLanguageCodeForLabelling'
. */
private
String getCurrencyName(String parmISOCurrencyCode, String parmLanguageCodeForLabelling)
{
/*
*
de:
*
Prüfen, ob der übergebene Parameter 'parmISOCurrencyCode' einen null-Wert enthält.
*
In diesem Fall diese Methode sofort beenden und eine leere Zeichenkette zurück liefern.
*
en:
* Verify, if the passed parameter 'parmISOCurrencyCode' contains a null-value.
*
In that case terminate the method immediately and return an empty string
. */
if
(
parmISOCurrencyCode
==
null
)
return
""
;
/*
*
de:
* Wenn der Wert im 'parmLanguageCodeForLabelling' null ist, wird
der Parameter
* durch den Sprach-Code, der dem Anwender zugeordnet ist, ersetzt.
*
en:
* If the value in 'parmLanguageCodeForLabelling' is null, the the parameter is
* replaced by the language-code assigned to the user
. */
if
(
parmLanguageCodeForLabelling
==
null
)
parmLanguageCodeForLabelling =
structJSBS_UniversalParameters
.
strLanguageCode
;
/*
*
de: Einzelnes BO aus dem Vector für die Bearbeitung innerhalb der for-Schleife
.
*
en: Single BO out of the vector for processing within the for-loop
. */
JSBS_Currency_BO loc
JSBS_Currency_BO
;
/*
*
de:
Zeichenkette für den Wert der aus dieser Methode zurück geliefert wird
.
*
en: String for the value that is returned from this method
. */
String strReturnValue =
""
;
/*
*
de:
*
Variable für die Steuerung der for-Schleife definieren und for-Schleife beginnen
.
*
en:
* Define the variables to control the for-loop and start the for-loop
. */
int
intArraySize =
structJSBS_Currency_BOC_Set
.
vecRecordSet
.size();
int
intArrayIndex;
for
(
intArrayIndex = 0; intArrayIndex < intArraySize; intArrayIndex++
)
{
/*
*
de:
Indiziertes Element aus dem Vector auslesen
.
*
en: Read the indexed element out of the vector
. */
loc
JSBS_Currency_BO
= (
JSBS_Currency_BO
)
structJSBS_Currency_BOC_Set
.
vecRecordSet
.elementAt(intArrayIndex);
/*
*
de:
* Die folgenden 'if' könnten auch als eine Bedingung geschrieben werden.
* Damit die Teil-Bedingungen verständlicher kommentiert werden können wird die
*
Redundanz in Kauf genommen
.
*
en:
* The following 'if' could be written as a single condition.
*
It allows more understandable comments if the conditions are split into parts -
*
therefore the redundancy is accepted
. */
/*
*
de: Zuerst prüfen, ob der Währungs-Code überhaupt zutrifft
.
*
en: Verify first if the currency-code fits
. */
if
(
loc
JSBS_Currency_BO
.
ISOCurrencyCode
.compareTo(parmISOCurrencyCode) == 0
) {
/*
*
de:
*
Wenn beide Parameter übereinstimmen dann wurde die eindeutige Bezeichnung für
*
die Währung
gefunden.
Den Namen der Währung zurück liefern und Methode beenden
.
*
en:
*
If both parameters fit then the unique name for the currency was found.
*
Return the name of the currency and end this method
. */
if
(
loc
JSBS_Currency_BO
.
LanguageCodeForLabelling
.compareTo(parmLanguageCodeForLabelling) == 0
)
return
loc
JSBS_Currency_BO
.
CurrencyName
;
/*
*
de:
*
Wenn der Datensatz aus dem Vector die Standard-Sprache abbildet, dann wird die
* Bezeichnung für die Währung in der Zeichenkette für die Rückgabe aufgehoben.
*
Möglicherweise folgt noch ein Datensatz mit genauer Übereinstimmung der beiden
*
Parameter
-Werte.
*
en:
*
If the dataset from the vector is the one for the default-language, then the
* currency
-name is stored in the string for return
.
* Potentially a dataset with the exact comparison to both parameter-values follows
. */
if
(
(loc
JSBS_Currency_BO
.
LanguageCodeForLabelling
.trim().length() <= 0
)
&&
(
strReturnValue
.length() <= 0
))
strReturnValue
=
loc
JSBS_Currency_BO
.
CurrencyName
;
}
else
{
/*
*
de:
*
Wenn der Währungs-Code nicht mit dem Parameter-Wert übereinstimmt und die Zeichenkette
*
für den Namen der Währung einen Wert enthält dann bedeutet das, dass für den gesuchten
*
Wert in 'parmISOCurrencyCode' ein Standard-Wert gefunden wurde.
*
Diesen Standard-Wert jetzt zurück liefern.
*
en:
*
If the currency-code is not equal to the value passed in the parameter
*
'parmISOCurrencyCode' and the string for the currency-name contains a value, then
* the 'default'-currency-name for the value passed in parameter 'parmISOCurrencyCode.
* Return this default-currency-name now
. */
if
(
strReturnValue
.length() > 0
)
return
strReturnValue
;
}
}
/*
*
de:
*
Wenn keine Bezeichnung für die Währung gefunden wurde dann
ist die Zeichenkette noch
* immer leer. Zeichenkette jetzt
zurück liefern
.
*
en:
*
If a currency-name was not found for the parameters, then the string is
still empty.
*
Return the string
now. */
return
strReturnValue
;
}
/*
*
-------------------------------
*
de:
*
Wrapper-
METHODEN für das Füllen einer Combobox mit der Auswahlliste für die Währungen
.
*
*
en:
*
Wrapper-
METHOD to fill a combo-box with the selection-list for the currencies
. */
public void
fillCurrencyComboBox(
JComboBox parmJComboBox
)
{
fillCur
renc
yComboBoxWithExclusions
(
parmJComboBox, 0,
null
, 600
,
null
)
;
}
/*
***** */
public void
fillCur
renc
yComboBox(
JComboBox parmJComboBox
,
int
parmCur
renc
yMarkerNumber
)
{
fillCur
renc
yComboBoxWithExclusions
(
parmJComboBox,
parmCur
renc
yMarkerNumber
,
null
, 600
,
null
)
;
}
/*
***** */
public void
fillCur
renc
yComboBox(
JComboBox parmJComboBox
,
S
tring parmDisplayLanguageCode
)
{
fillCur
renc
yComboBoxWithExclusions
(
parmJComboBox, 0
,
parmDisplayLanguageCode
,
600
,
null
)
;
}
/*
***** */
public void
fillCur
renc
yComboBox(
JComboBox parmJComboBox
,
int
parmCur
renc
yMarkerNumber
,
S
tring parmDisplayLanguageCode
)
{
fillCur
renc
yComboBoxWithExclusions
(
parmJComboBox,
parmCur
renc
yMarkerNumber
,
parmDisplayLanguageCode
,
600
,
null
)
;
}
/*
***** */
public void
fillCur
renc
yComboBox(
JComboBox parmJComboBox
,
int
parmCur
renc
yMarkerNumber
,
S
tring parmDisplayLanguageCode
,
int
parmRefreshPeriodInSeconds
)
{
fillCur
renc
yComboBoxWithExclusions
(
parmJComboBox,
parmCur
renc
yMarkerNumber
,
parmDisplayLanguageCode
,
parmRefreshPeriodInSeconds
,
null
)
;
}
/*
***** */
public void
fillCur
renc
yComboBoxWithExclusions(
JComboBox parmJComboBox
,
Vector<S
tring> parmExclusionList
)
{
fillCur
renc
yComboBoxWithExclusions
(
parmJComboBox, 0
,
null
,
600
,
parmExclusionList
)
;
}
/*
***** */
public void
fillCur
renc
yComboBoxWithExclusions(
JComboBox parmJComboBox
,
int
parmCur
renc
yMarkerNumber
,
Vector<S
tring> parmExclusionList
)
{
fillCur
renc
yComboBoxWithExclusions
(
parmJComboBox,
parmCur
renc
yMarkerNumber
,
null
,
600
,
parmExclusionList
)
;
}
/*
***** */
public void
fillCur
renc
yComboBoxWithExclusions(
JComboBox parmJComboBox
,
S
tring parmDisplayLanguageCode
,
Vector<S
tring> parmExclusionList
)
{
fillCur
renc
yComboBoxWithExclusions
(
parmJComboBox, 0
,
parmDisplayLanguageCode
,
600
,
parmExclusionList
)
;
}
/*
***** */
public void
fillCur
renc
yComboBoxWithExclusions(
JComboBox parmJComboBox
,
int
parmCur
renc
yMarkerNumber
,
S
tring parmDisplayLanguageCode
,
Vector<S
tring> parmExclusionList
)
{
fillCur
renc
yComboBoxWithExclusions
(
parmJComboBox,
parmCur
renc
yMarkerNumber
,
parmDisplayLanguageCode
,
600
,
parmExclusionList
)
;
}
/*
*
de:
*
METHODE zum Füllen einer JComboBox (im Parameter 'parmJComboBox' übergeben)
* mit den Währungen, die für die Installation des Anwendungsprogramms erfasst sind.
* Diese Methode hat die maximale Anzahl an Parametern mit denen die Auswahl der
* Währungen gesteuert werden kann.
*
'parmCurrencyMarkerNumber' ist die Einschränkung auf einen Marker für einen
*
Themenbereich für den die Währung 'zugelassen' ist.
*
Ist der Wert in diesem Parameter '0' dann werden alle Währungen zur Auswahl
*
in der Combobox angezeigt.
*
'parmDisplayLanguageCode' ist die Festlegung, in welcher Sprache die Bezeichnung
*
('CurrencyName') angezeigt werden soll.
*
Ist der übergebene Wert 'null' dann wird der vom Anwender gewählte Sprach-Code
*
(aus 'structJSBS_UniversalParameters.strLanguageCode') verwendet.
*
'parmRefreshPeriodInSeconds' legt fest, in welchem Intervall das Set mit den
*
Währungen von der Datenbank gelesen wird.
*
'parmExclusionList' enthält eine Liste mit jenen Währungs-Codes, die nicht in der
*
Auswahlliste der Combobox angezeigt werden sollen
.
*
*
en:
*
METHOD to fill a JComboBox (passed in the parameter 'parmJComboBox') with the
* currencies that are recorded at an installation of the application-program.
*
This method has the maximum number of parameters to control the selection of
*
the countries.
*
'parmCurrencyMarkerNumber' ist the limitation to one Marker for an area the
*
currency is 'permitted'.
*
If the value of this parameter is '0', then all currencies are displayed
*
in the combo-box for selection.
*
'parmDisplayLanguageCode' ist the definition, in which language the
*
'CurrencyName' should be displayed.
*
If the passed parameter is 'null', the language-code for the user
*
(defined in 'structJSBS_UniversalParameters.strLanguageCode') is used.
*
'parmRefreshPeriodInSeconds' defines, in which time interval the set of
*
currencies is read from the database.
*
'parmExclusionList' contains a list of all currency-codes, that should not
*
be displayed in the list of the combo-box
. */
public void
fillCurrencyComboBoxWithExclusions
(JComboBox parmJComboBox
,
int
parmCur
renc
yMarkerNumber
,
S
tring parmDisplayLanguageCode
,
int
parmRefreshPeriodInSeconds
,
Vector<S
tring> parmExclusionList
)
{
/*
*
de:
* Jeden Parameter p
rüfen, ob eventuell ein 'null'-Wert übergeben wurde und
* in jedem Fall eine Korrektur ausführen.
*
en:
* Verify each parameter if a null-value was passed and do corrective processing
* in each case
. */
/*
*
de:
* Wenn keine Combobox übergeben wurde dann kann auch keine gefüllt werden.
* Methode sofort abbrechen.
*
en:
* If a combo-box was not passed - no one can be filled.
*
Terminate the method immediately
. */
if
(
parmJComboBox
==
null
)
return
;
/*
*
de:
* Wenn kein Sprach-Code für die Anzeige des Spreachnamens übergeben wird dann wird
* die vom Anwender gewählte Sprache verwendet.
*
en:
* If no language-code
for the display of the language-name was passed, then the
* language chosen by the user is used
. */
if
(
parmDisplayLanguageCode
==
null
)
parmDisplayLanguageCode
=
structJSBS_UniversalParameters
.
strLanguageCode
;
/*
*
de:
* Wenn kein Vector mit den aus der Combobox-Liste auszunehmenden Währungs-Codes
*
übergeben wird,
wird ein leerer Vector 'konstruiert'.
*
en:
* If no Vecor with the currency-codes, that should be excluded from the combo-box-list,
* was passed, then an empty Vector is 'constructed'
. */
if
(
parmExclusionList
==
null
)
parmExclusionList
=
new
Vector<String>();
/*
*
de:
* Methode aufrufen die prüft, ob der Zeit-Intervall seit dem letzten Lesen von der
*
Datenbank überschritten wurde und bei Bedarf das Set mit den Währungen von der
* Datenbank neu lesen
.
*
en:
* Call the method that checks, if the time-interval since the last retrieve from
* the database is expiered and
re-read the set with the currencies from the database
* if needed
. */
retrieveJSBS_Currency_BOC_Set(
parmRefreshPeriodInSeconds
);
/*
*
de:
* Ein BOC-Set konstruieren in dem später jene Währungen aufgenommen werden, die
* für die Auswahlliste in der Combobox ausgewählt sind
.
*
en:
* Construct a BOC-Set that later will be filled with those currencies that are
* selected later for the display of the selection list within the combo-box
. */
JSBS_Currency_BOC_Set structJSBS_Cur
renc
y_BOC_Set_For_ComboBox =
new
JSBS_Cur
renc
y_BOC_Set(
this
)
;
/*
*
de:
*
Variable für die Steuerung der for-Schleife definieren und for-Schleife beginnen
.
*
en:
* Define the variables to control the for-loop and start the for-loop
. */
int
intVectorSize =
structJSBS_Currency_BOC_Set
.
vecRecordSet
.size();
int
intVectorIndex;
for
(
intVectorIndex = 0; intVectorIndex < intVectorSize; intVectorIndex++
)
{
/*
*
de:
*
Neues BO für das spätere Einfügen in den Vector für die Anzeige konstruieren
* und i
ndiziertes Element aus dem Vector auslesen
.
*
en:
*
Construct a new BO for later insertion into the vector for display and read
*
the indexed element out of the vector
. */
JSBS_Cur
renc
y_BO
struct
JSBS_Cur
renc
y_BO_Indexed
=
new
JSBS_Cur
renc
y_BO(
);
struct
JSBS_Cur
renc
y_BO_Indexed
= (
JSBS_Cur
renc
y_BO
)
structJSBS_Cur
renc
y_BOC_Set
.
vecRecordSet
.elementAt(intVectorIndex);
/*
*
de:
* Für die Anzeige werden nur die Datensätze mit der Standard-Bezeichnung für
* den Währungs-Namen herangezogen. Diese sind daran erkennbar, dass der Wert
*
im Attribut 'LanguageCodeForLabelling' eine leere Zeichenkette ist.
* Bei anderen Werten nächsten Durchlauf der for-Schleife beginnen
.
*
en:
* For the display only datasets with the default-currency-name are considered.
*
Those can be identified by an empty string as value in the attribut
*
'LanguageCodeForLabelling'. If there is another value continue with the
* next pass of the for-loop
. */
if
(
struct
JSBS_Cur
renc
y_BO_Indexed
.
LanguageCodeForLabelling
.trim().length() > 0
)
continue
;
/*
*
de:
* Prüfen, ob der Währungs-Code in der Liste mit den auszunehmenden Codes enthalten ist.
* In diesem Fall ebenfalls mit dem nächsten Durchlauf der for-Schleife fortsetzen
.
*
en:
* Verify, if the currency-code is in the list with the codes to be excluded.
* In that case, continue with the next pass of the for-loop, too
. */
if
(
isValueInVector(parmExclusionList, struct
JSBS_Cur
renc
y_BO
_Indexed
.
ISOCur
renc
yCode
))
continue
;
/*
*
de:
* Prüfen, ob für den Marker-Wert aus dem Parameter der entsprechende Marker
* im Datensatz enthalten ist.
* Bei einem Parameter-Wert '0' werden alle Datensätze in die Anzeigeliste aufgenommen
.
*
en:
* Verify if, for the Marker-value from the parameter, a fitting Marker is within the
* dataset.
* If the parameter-value is '0', all datasets are included in the list for display.
*/
if
( (parmCur
renc
yMarkerNumber
== 0
)
|| ((
parmCur
renc
yMarkerNumber
== 1
) && (
struct
JSBS_Currency_BO
_Indexed
.
Marker01
))
|| ((
parmCur
renc
yMarkerNumber
== 2
) && (
struct
JSBS_
Currency
_BO
_Indexed
.
Marker02
))
|| ((
parmCur
renc
yMarkerNumber
== 3
) && (
struct
JSBS_
Currency
_BO
_Indexed
.
Marker03
))
|| ((
parmCur
renc
yMarkerNumber
== 4
) && (
struct
JSBS_
Currency
_BO
_Indexed
.
Marker04
))
|| ((
parmCur
renc
yMarkerNumber
== 5
) && (
struct
JSBS_
Currency
_BO
_Indexed
.
Marker05
))
|| ((
parmCur
renc
yMarkerNumber
== 6
) && (
struct
JSBS_
Currency
_BO
_Indexed
.
Marker06
))
|| ((
parmCur
renc
yMarkerNumber
== 7
) && (
struct
JSBS_
Currency
_BO
_Indexed
.
Marker07
))
|| ((
parmCur
renc
yMarkerNumber
== 8
) && (
struct
JSBS_
Currency
_BO
_Indexed
.
Marker08
))
|| ((
parmCur
renc
yMarkerNumber
== 9
) && (
struct
JSBS_
Currency
_BO
_Indexed
.
Marker09
))
|| ((
parmCur
renc
yMarkerNumber
== 10
) && (
struct
JSBS_
Currency
_BO
_Indexed
.
Marker10
))
|| ((
parmCur
renc
yMarkerNumber
== 11
) && (
struct
JSBS_
Currency
_BO
_Indexed
.
Marker11
))
|| ((
parmCur
renc
yMarkerNumber
== 12
) && (
struct
JSBS_
Currency
_BO
_Indexed
.
Marker12
))
|| ((
parmCur
renc
yMarkerNumber
== 13
) && (
struct
JSBS_
Currency
_BO
_Indexed
.
Marker13
))
|| ((
parmCur
renc
yMarkerNumber
== 14
) && (
struct
JSBS_
Currency
_BO
_Indexed
.
Marker14
))
|| ((
parmCur
renc
yMarkerNumber
== 15
) && (
struct
JSBS_
Currency
_BO
_Indexed
.
Marker15
))
|| ((
parmCur
renc
yMarkerNumber
== 16
) && (
struct
JSBS_
Currency
_BO
_Indexed
.
Marker16
))
|| ((
parmCur
renc
yMarkerNumber
== 17
) && (
struct
JSBS_
Currency
_BO
_Indexed
.
Marker17
))
|| ((
parmCur
renc
yMarkerNumber
== 18
) && (
struct
JSBS_
Currency
_BO
_Indexed
.
Marker18
))
|| ((
parmCur
renc
yMarkerNumber
== 19
) && (
struct
JSBS_
Currency
_BO
_Indexed
.
Marker19
))
|| ((
parmCur
renc
yMarkerNumber
== 20
) && (
struct
JSBS_
Currency
_BO
_Indexed
.
Marker20
))
) {}
/*
*
de:
* Marker stimmt nicht überein; mit dem nächste Durchlauf der for-Schleife fortsetzen
.
*
en:
* Marker does not fit; continue with the next pass of the for-loop
.
*/
else continue
;
/*
*
de:
* Wenn der Code bis hierher ausgeführt wurde dann soll die Währung in der Auswahlliste
* der Combobox angezeigt werden.
*
Noch die Bezeichnung der Währung in der gewünschten Sprache ermitteln
.
*
en:
* If the code was executed till here then the currency should be added to the
* selection-list of the combo-box.
*
Finally, get the currency-name in the chosen language
. */
s
truct
JSBS_Currency_BO_Indexed
.
CurrencyName
=
getCurrencyName(
s
truct
JSBS_Currency_BO
_Indexed
.
ISOCurrencyCode
,
parmDisplayLanguageCode
);
/*
*
de:
* Das einzelne BO für einen Eintrag in der Auswahlliste der Combobox in den
* Vector für den Aufbau der Combobox einfügen
.
*
en:
* Add the single BO for one entry in the selection-list of the combo-box into
*
the vector for the build of the combo-box
*/
s
truct
JSBS_Currency_BOC_Set_For_ComboBox
.
vecRecordSet
.addElement(
s
truct
JSBS_Currency_BO_Indexed
);
}
/*
*
de:
* Vector mit den Rohdaten im BOC aufbauen und Combobox füllen
.
*
en:
* Build the vector with raw-date within the BOC and fill the combo-box
*/
s
truct
JSBS_Currency_BOC_Set_For_ComboBox
.buildRawDataVector()
;
String[] arrayComboBoxArrangement = {
"ISOCurrencyCode"
,
" - "
,
"CurrencyName"
};
JSBS_GUIServices.setListToJComboBox(parmJComboBox,
structJSBS_Currency_BOC_Set_For_ComboBox
.
vecRawDisplayData
,
arrayComboBoxArrangement
);
}
/*
*
-------------------------------
*
BLOCK mit den Methoden für die SPRACHE.
*
-------------------------------
*
de:
*
METHODE zum Prüfen, ob der als Parameter übergebene Code für die Sprache im
Anwendungsprogramm
*
als 'möglich' definiert ist.
*
'Möglich' bedeutet, dass der geprüfte Code für die Sprache in der Variablen
*
'arrayApplicationImplementedLanguages' enthalten ist.
*
Dieses Array kann in der erbenden Klasse überschrieben werden und damit werden alle für das
* Anwendungsprogramm implementierten Sprachen festgelegt.
* Für eine Installation des entwickelten Anwendungsprogramm müssen dann jene Sprachen
* ausgewählt werden, die von Anwendern der jeweiligen Installation verwendet werden können
.
*
en:
*
METHOD to verify if the code for the language, that is passed as parameter, is defined as
*
'possible' in the application-program.
*
'Possible' means, that the code for the language to be verified is contained in the variable
* 'arrayApplicationImplementedLanguages'.
* This array can be overwritten in the inheriting class and this defines all languages that are
* implemented in the application program.
* For an installation of the developed application-program, all those languages have to be selected
* that can be used by users of the dedicated installation.
*/
public boolean
isLanguageForApplication(String
parmLanguageCode
) {
/*
*
de:
*
Prüfen, ob der übergebene Parameter nicht 'null' ist; damit werden spätere Fehler verhinder
t.
*
en:
*
Verify if the passed parameter is not 'null';
that prevents errors later in the code. */
if
(
parmLanguageCode
==
null
)
return false
;
/*
*
de:
* Variablen für die for-Schleife definieren und dann for-Schleife für das Vergleichen beginnen
.
*
en:
* Define the variables for the for-loop and start the for-loop for the comparison thereafter
. */
int
intArraySize =
arrayApplicationImplementedLanguages
.
length
;
int
intArrayIndex
;
for
(
intArrayIndex
= 0;
intArrayIndex
< intArraySize;
intArrayIndex
++) {
/*
*
de:
*
Vergleichen ob der Sprach-Code des untersuchten Array-Elements mit dem Wert im Parameter übereinstimmt.
*
Dann diese Methode abbrechen und 'true'
an die aufrufende Methode zurück liefern.
*
en:
*
Compare if the language-code of the inspected array-element is the same as the value passed as parameter.
*
If matching, quit this method and return 'true' to the calling method. */
if
(
arrayApplicationImplementedLanguages
[intArrayIndex]
.compareTo(parmLanguageCode) == 0)
return true
;
}
/*
*
de:
*
Sprach-Code aus dem Parameter nicht im Array der 'möglichen' Sprachen:
*
'false' an die aufrufende Methode zurück liefern.
*
en:
*
Language-code passed as parameter is not within the array with the 'possible' languages;
*
return false to the calling method
. */
return false
;
}
/*
*
-------------------------------
*
de:
*
METHODE zum Lesen aller BO mit den im Anwendungsprogramm definierten, aktuell
*
gültigen Sprachen von der Datenbank
.
*
Dabei wird geprüft, ob das
letzte Lesen von der Datenbank länger zurück liegt
*
als durch den Wert im Parameter 'parmRefreshPeriodsInSeconds' festgelegt -
*
nur dann wird wieder von der Datenbank gelesen
.
*
*
en:
*
METHOD to read all BO with the actually valid languages, defined in the
*
application program, from the database.
* Within this method is checked if the last read from the database was longer ago
*
as defined by the parameter
'parmRefreshPeriodInSeconds'
- only then a read is
*
done from the database again
. */
private void
retrieveJSBS_Language_BOC_Set(
int
parmRefreshPeriodInSeconds)
{
/*
*
de:
*
Prüfen, ob das BOC bereits einmal 'konstruiert' wurde -
* ansonsten das BOC 'konstruieren'.
*
en:
* Verify, if the BOC was 'constructed' before; otherwise 'construct' it
. */
if
(
structJSBS_Language_BOC_Set
==
null
) {
/*
de: Konstruieren des BOC.
*
en: Construct the BOC. */
structJSBS_Language_BOC_Set
=
new
JSBS_Language_BOC_Set(
this
);
/*
de: Damit das Set auf jeden Fall neu gelesen wird, wird ein 'uraltes' Datum gesetzt.
*
en: Set an 'ancient' date so that the Set is read in any case. */
dteJSBS_Language_BOC_Set_LastRead
=
new
Date(0
);
}
/*
*
de:
* Berechnen der Sekunden, die seit dem letzten Lesen von der Datenbank vergangen sind.
*
en:
* Calculate the seconds since the last read from the database. */
long
intTimeDiffInSeconds =
((
new
Date()).getTime() -
dteJSBS_Language_BOC_Set_LastRead
.getTime()) / 1000;
/*
*
de:
* Methode abbrechen wenn seit dem letzten Lesen von der Datenbank weniger Zeit vergangen
* ist als der Wert im Parameter
.
*
en:
* Terminate the method if the time-period since the last read from the database is less
* than the value passed in the parameter
. */
if
(intTimeDiffInSeconds
<=
parmRefreshPeriodInSeconds)
return
;
/*
*
de:
* Prüfen, ob eine Verbindung zum JAS (Java Application Server) aufgebaut werden kann.
* Der folgende Zugriff auf die Datenbank ist möglicherweise der erste nach dem Starten
* des Anwendungsprogramms und deswegen wird jetzt geprüft, ob überhaupt eine Verbindung
* zum JAS möglich ist
.
*
en:
* Verify if a
connection to the JAS (Java Application Server) can be established.
* The following access to the database might be the first one after the start of the
* application program and therefore, now a check is made if a connection to the JAS
* is possible
. */
testJASConnection(
)
;
/*
*
de: 'Holen' aller zum aktuellen Datum gültigen ISO-Sprach-Codes
von der Datenbank.
*
en: Retrieve all ISO-language-codes that are valid at the actual date from
the database. */
structJSBS_Language_BOC_Set
.selectAllValid();
/*
*
de:
*
Je nach Status des Datenbank-Zugriffs entscheiden, wie die
Verarbeitung weiter gehen soll.
*
en:
*
Decide how to continue the processing depending on the status of the
database-access. */
switch
(
structJSBS_Language_BOC_Set
.
StatusCode
)
{
case
JSBS_BO.
CONST_OK
:
/*
de:
*
Datenbank-Zugriff wie erwartet.
*
Datum des letzten Zugriffs neu setzen und dann normal fortsetzen.
*
en:
*
Database-access as expected.
*
Set the date of the last access and continue normal thereafter
. */
dteJSBS_Language_BOC_Set_LastRead
=
new
Date()
;
break
;
case
JSBS_BO.
CONST_NOT_FOUND
:
/*
de:
* Auf der Datenbank wurde keine aktuell gültige Sprache gefunden.
*
Jene Sprache verwenden, die beim Starten des Anwendungsprogramms als Parameter mitgegeben
*
wurde und die jetzt in der Struktur mit den Universal-Parametern zu finden ist
.
*
en:
*
Not a single language, that is actually valid, found on the database.
* Use that language that was passed as parameter when the application was started; that
* language can be found within the structure with the Universal-Parameters
. */
JSBS_Language_BO locBO =
new
JSBS_Language_BO()
;
locBO.
ISOLanguageCode
=
structJSBS_UniversalParameters
.
strLanguageCode
;
structJSBS_Language_BOC_Set
.
vecRecordSet
.addElement(locBO);
structJSBS_Language_BOC_Set
.buildRawDataVector();
break
;
default
:
/*
de:
*
Sonstiger Status aufgetreten.
*
Bedingt durch den Datenbank-Zugirff (select) kann es nur ein Fehler
der Datenbank sein
*
der nicht umgangen werden kann.
*
Methode zur Fehlerbehandlung aufrufen.
*
en:
*
Another status occured.
*
In consequence of the database-access (select) it can only be an
error of the database
*
which can not be bypassed.
*
Call the method to handle an Error. */
handleErrorEvent(
this
.getClass().getName(),
"retrieveJSBS_Language_BOC_Set_DBError"
,
Integer.toString(
structJSBS_Language_BOC_Set
.
StatusCode
),
structJSBS_Language_BOC_Set
.
StatusMsg
);
}
}
/*
*
-------------------------------
*
de:
*
Wrapper-
METHODE zum Ermitteln der Sprach-Bezeichnung (LanguageName).
*
Der Code für die 'richtige Arbeit' ist in der nachfolgenden Methode
.
* Als Sprach-Code für die Anzeige des Sprach-Namens wird die vom Anwender gewählte
* Sprache als Parameter übergeben
.
*
*
en:
*
Wrapper-
METHOD to get the language-name.
* The code for the 'real work' is in the following method.
* As language-code for the display of the language-name the one assigned to the user
*
is passed
. */
private
String getLanguageName(String parmISOLanguageCode)
{
return
getLanguageName(
parmISOLanguageCode,
structJSBS_UniversalParameters
.
strLanguageCode
)
;
}
/*
*
de:
*
METHODE zum Ermitteln der Sprach-Bezeichnung (LanguageName) für die im Parameter
*
'parmISOLanguageCode' Sprache in der im 'parmLanguageCodeForLabelling'
*
übergebenen Wert für die Sprache
.
*
*
en:
*
METHOD to get the language-name for the language passed in the parameter
*
'parmISOLanguageCode'. The language for the language-name is passed in the parameter
*
'parmLanguageCodeForLabelling'
. */
private
String getLanguageName(String parmISOLanguageCode, String parmLanguageCodeForLabelling)
{
/*
*
de:
*
Prüfen, ob der übergebene Parameter 'parmISOLanguageCode' einen null-Wert enthält.
*
In diesem Fall diese Methode sofort beenden und eine leere Zeichenkette zurück liefern.
*
en:
* Verify, if the passed parameter 'parmISOLanguageCode' contains a null-value.
*
In that case terminate the method immediately and return an empty string
. */
if
(
parmISOLanguageCode
==
null
)
return
""
;
/*
*
de:
* Wenn der Wert im 'parmLanguageCodeForLabelling' null ist, wird
der Parameter
* durch den Sprach-Code, der dem Anwender zugeordnet ist, ersetzt.
*
en:
* If the value in 'parmLanguageCodeForLabelling' is null, the the parameter is
* replaced by the language-code assigned to the user
. */
if
(
parmLanguageCodeForLabelling
==
null
)
parmLanguageCodeForLabelling =
structJSBS_UniversalParameters
.
strLanguageCode
;
/*
*
de: Einzelnes BO aus dem Vector für die Bearbeitung innerhalb der for-Schleife
.
*
en: Single BO out of the vector for processing within the for-loop
. */
JSBS_Language_BO loc
JSBS_Language_BO
;
/*
*
de:
Zeichenkette für den Wert der aus dieser Methode zurück geliefert wird
.
*
en: String for the value that is returned from this method
. */
String strReturnValue =
""
;
/*
*
de:
*
Variable für die Steuerung der for-Schleife definieren und for-Schleife beginnen
.
*
en:
* Define the variables to control the for-loop and start the for-loop
. */
int
intArraySize =
structJSBS_Language_BOC_Set
.
vecRecordSet
.size();
int
intArrayIndex;
for
(
intArrayIndex = 0; intArrayIndex < intArraySize; intArrayIndex++
)
{
/*
*
de:
Indiziertes Element aus dem Vector auslesen
.
*
en: Read the indexed element out of the vector
. */
loc
JSBS_Language_BO
= (
JSBS_Language_BO
)
structJSBS_Language_BOC_Set
.
vecRecordSet
.elementAt(intArrayIndex);
/*
*
de:
* Die folgenden 'if' könnten auch als eine Bedingung geschrieben werden.
* Damit die Teil-Bedingungen verständlicher kommentiert werden können wird die
*
Redundanz in Kauf genommen
.
*
en:
* The following 'if' could be written as a single condition.
*
It allows more understandable comments if the conditions are split into parts -
*
therefore the redundancy is accepted
. */
/*
*
de: Zuerst prüfen, ob der Sprach-Code überhaupt zutrifft
.
*
en: Verify first if the language-code fits
. */
if
(
loc
JSBS_Language_BO
.
ISOLanguageCode
.compareTo(parmISOLanguageCode) == 0
) {
/*
*
de:
*
Wenn beide Parameter übereinstimmen dann wurde die eindeutige Bezeichnung für
*
die Sprache
gefunden.
Den Namen der Sprache zurück liefern und Methode beenden
.
*
en:
*
If both parameters fit, then the unique name for the language was found.
*
Return the name of the language and end this method
. */
if
(
loc
JSBS_Language_BO
.
LanguageCodeForLabelling
.compareTo(parmLanguageCodeForLabelling) == 0
)
return
loc
JSBS_Language_BO
.
LanguageName
;
/*
*
de:
*
Wenn der Datensatz aus dem Vector die Standard-Sprache abbildet, dann wird die
* Bezeichnung für die Sprache in der Zeichenkette für die Rückgabe aufgehoben.
*
Möglicherweise folgt noch ein Datensatz mit genauer Übereinstimmung der beiden
*
Parameter
-Werte.
*
en:
*
If the dataset from the vector is the one for the default-language, then the
*
language-name is stored in the string for return
.
* Potentially a dataset with the exact comparison to both parameter-values follows
. */
if
(
(loc
JSBS_Language_BO
.
LanguageCodeForLabelling
.trim().length() <= 0
)
&&
(
strReturnValue
.length() <= 0
))
strReturnValue
=
loc
JSBS_Language_BO
.
LanguageName
;
}
else
{
/*
*
de:
*
Wenn der Sprach-Code nicht mit dem Parameter-Wert übereinstimmt und die Zeichenkette
*
für den Namen der Sprache einen Wert enthält dann bedeutet das, dass für den gesuchten
*
Wert in 'parmISOLanguageCode' ein Standard-Wert gefunden wurde.
*
Diesen Standard-Wert jetzt zurück liefern.
*
en:
*
If the language-code is not equal to the value passed in the parameter
*
'parmISOLanguageCode' and the string for the language-name contains a value, then
* the 'default'-language-name for the value passed in parameter 'parmISOLanguageCode.
* Return this default-language-name now
. */
if
(
strReturnValue
.length() > 0
)
return
strReturnValue
;
}
}
/*
*
de:
*
Wenn keine Bezeichnung für die Parameter gefunden wurde dann
ist die Zeichenkette noch
* immer leer. Zeichenkette jetzt
zurück liefern
.
*
en:
*
If a language-name was not found for the parameters, then the string is
still empty.
*
Return the string
now. */
return
strReturnValue
;
}
/*
*
-------------------------------
*
de:
*
Wrapper-
METHODEN für das Füllen einer Combobox mit der Auswahlliste für die Sprachen
.
*
*
en:
*
Wrapper-
METHOD to fill a combo-box with the selection-list for the languages
. */
public void
fillLanguageComboBox(
JComboBox parmJComboBox
)
{
fillLanguageComboBoxWithExclusions
(
parmJComboBox, 0,
null
, 600
,
null
)
;
}
/*
***** */
public void
fillLanguageComboBox(
JComboBox parmJComboBox
,
int
parmLanguageMarkerNumber
)
{
fillLanguageComboBoxWithExclusions
(
parmJComboBox,
parmLanguageMarkerNumber
,
null
, 600
,
null
)
;
}
/*
***** */
public void
fillLanguageComboBox(
JComboBox parmJComboBox
,
S
tring parmDisplayLanguageCode
)
{
fillLanguageComboBoxWithExclusions
(
parmJComboBox, 0
,
parmDisplayLanguageCode
,
600
,
null
)
;
}
/*
***** */
public void
fillLanguageComboBox(
JComboBox parmJComboBox
,
int
parmLanguageMarkerNumber
,
S
tring parmDisplayLanguageCode
)
{
fillLanguageComboBoxWithExclusions
(
parmJComboBox,
parmLanguageMarkerNumber
,
parmDisplayLanguageCode
,
600
,
null
)
;
}
/*
***** */
public void
fillLanguageComboBox(
JComboBox parmJComboBox
,
int
parmLanguageMarkerNumber
,
S
tring parmDisplayLanguageCode
,
int
parmRefreshPeriodInSeconds
)
{
fillLanguageComboBoxWithExclusions
(
parmJComboBox,
parmLanguageMarkerNumber
,
parmDisplayLanguageCode
,
parmRefreshPeriodInSeconds
,
null
)
;
}
/*
***** */
public void
fillLanguageComboBoxWithExclusions(
JComboBox parmJComboBox
,
Vector<S
tring> parmExclusionList
)
{
fillLanguageComboBoxWithExclusions
(
parmJComboBox, 0
,
null
,
600
,
parmExclusionList
)
;
}
/*
***** */
public void
fillLanguageComboBoxWithExclusions(
JComboBox parmJComboBox
,
int
parmLanguageMarkerNumber
,
Vector<S
tring> parmExclusionList
)
{
fillLanguageComboBoxWithExclusions
(
parmJComboBox,
parmLanguageMarkerNumber
,
null
,
600
,
parmExclusionList
)
;
}
/*
***** */
public void
fillLanguageComboBoxWithExclusions(
JComboBox parmJComboBox
,
S
tring parmDisplayLanguageCode
,
Vector<S
tring> parmExclusionList
)
{
fillLanguageComboBoxWithExclusions
(
parmJComboBox, 0
,
parmDisplayLanguageCode
,
600
,
parmExclusionList
)
;
}
/*
***** */
public void
fillLanguageComboBoxWithExclusions(
JComboBox parmJComboBox
,
int
parmLanguageMarkerNumber
,
S
tring parmDisplayLanguageCode
,
Vector<S
tring> parmExclusionList
)
{
fillLanguageComboBoxWithExclusions
(
parmJComboBox,
parmLanguageMarkerNumber
,
parmDisplayLanguageCode
,
600
,
parmExclusionList
)
;
}
/*
*
de:
*
METHODE zum Füllen einer JComboBox (im Parameter 'parmJComboBox' übergeben)
* mit den Sprachen, die für die Installation des Anwendungsprogramms erfasst sind.
* Diese Methode hat die maximale Anzahl an Parametern mit denen die Auswahl der
* Sprachen gesteuert werden kann.
*
'parmLanguageMarkerNumber' ist die Einschränkung auf einen Marker für einen
*
Themenbereich für den die Sprache 'zugelassen' ist.
*
Ist der Wert in diesem Parameter '0' dann werden alle Sprachen zur Auswahl
*
in der Combobox angezeigt.
*
'parmDisplayLanguageCode' ist die Festlegung, in welcher Sprache die Bezeichnung
*
('LanguageName') angezeigt werden soll.
*
Ist der übergebene Wert 'null' dann wird der vom Anwender gewählte Sprach-Code
*
(aus 'structJSBS_UniversalParameters.strLanguageCode') verwendet.
*
'parmRefreshPeriodInSeconds' legt fest, in welchem Intervall das Set mit den
*
Sprachen von der Datenbank gelesen wird.
*
'parmExclusionList' enthält eine Liste mit jenen Sprach-Codes, die nicht in der
*
Auswahlliste der Combobox angezeigt werden sollen
.
*
*
en:
*
METHOD to fill a JComboBox (passed in the parameter 'parmJComboBox') with the
*
languages that are recorded at an installation of the application-program.
*
This method has the maximum number of parameters to control the selection of
*
the languages.
*
'parmLanguageMarkerNumber' is the limitation to one Marker for an area the
*
language is 'permitted'.
*
If tha value of this parameter is '0', then all languages are displayed
*
in the combo-box for selection.
*
'parmDisplayLanguageCode' is the definition, in which language the
*
'LanguageName' should be displayed.
*
If the passed parameter is 'null', the language-code for the user
*
(defined in 'structJSBS_UniversalParameters.strLanguageCode') is used.
*
'parmRefreshPeriodInSeconds' defines, in which time interval the set of
*
languages is read from the database.
*
'parmExclusionList' contains a list of all language-codes, that should not
*
be displayed in the list of the combo-box
. */
public void
fillLanguageComboBoxWithExclusions
(JComboBox parmJComboBox
,
int
parmLanguageMarkerNumber
,
S
tring parmDisplayLanguageCode
,
int
parmRefreshPeriodInSeconds
,
Vector<S
tring> parmExclusionList
)
{
/*
*
de:
* Jeden Parameter p
rüfen, ob eventuell ein 'null'-Wert übergeben wurde und
* in jedem Fall eine Korrektur ausführen.
*
en:
* Verify each parameter if a null-value was passed and do corrective processing
* in each case
. */
/*
*
de:
* Wenn keine Combobox übergeben wurde dann kann auch keine gefüllt werden.
* Methode sofort abbrechen.
*
en:
* If a combo-box was not passed - no one can be filled.
*
Terminate the method immediately
. */
if
(
parmJComboBox
==
null
)
return
;
/*
*
de:
* Wenn kein Sprach-Code für die Anzeige des Währungs-Namens übergeben wird dann wird
* die vom Anwender gewählte Sprache verwendet.
*
en:
* If no language-code
for the display of the currency-name was passed, then the
* language chosen by the user is used
. */
if
(
parmDisplayLanguageCode
==
null
)
parmDisplayLanguageCode
=
structJSBS_UniversalParameters
.
strLanguageCode
;
/*
*
de:
* Wenn kein Vector mit den aus der Combobox-Liste auszunehmenden Sprach-Codes
*
übergeben wird,
wird ein leerer Vector 'konstruiert'.
*
en:
* If no Vecor with the language-codes, that should be excluded from the combo-box-list,
* was passed, then an empty Vector is 'constructed'
. */
if
(
parmExclusionList
==
null
)
parmExclusionList
=
new
Vector<String>();
/*
*
de:
* Methode aufrufen die prüft, ob der Zeit-Intervall seit dem letzten Lesen von der
*
Datenbank überschritten wurde und bei Bedarf das Set mit den Sprachen von der
* Datenbank neu lesen
.
*
en:
* Call the method that checks, if the time-interval since the last retrieve from
* the database is expired and to
re-read the set with the languages from the database
* if needed
. */
retrieveJSBS_Language_BOC_Set(
parmRefreshPeriodInSeconds
);
/*
*
de:
* Ein BOC-Set konstruieren in dem später jene Sprachen aufgenommen werden, die
* für die Auswahlliste in der Combobox ausgewählt sind
.
*
en:
* Construct a BOC-Set that later will be filled with those languages that are
* selected for the display of the selection list within the combo-box
. */
JSBS_Language_BOC_Set structJSBS_Language_BOC_Set_For_ComboBox =
new
JSBS_Language_BOC_Set(
this
)
;
/*
*
de:
*
Variable für die Steuerung der for-Schleife definieren und for-Schleife beginnen
.
*
en:
* Define the variables to control the for-loop and start the for-loop
. */
int
intVectorSize =
structJSBS_Language_BOC_Set
.
vecRecordSet
.size();
int
intVectorIndex;
for
(
intVectorIndex = 0; intVectorIndex < intVectorSize; intVectorIndex++
)
{
/*
*
de:
*
Neues BO für das spätere Einfügen in den Vector für die Anzeige konstruieren
* und i
ndiziertes Element aus dem Vector auslesen
.
*
en:
*
Construct a new BO for later insertion into the vector for display and read
*
the indexed element out of the vector
. */
JSBS_Language_BO
struct
JSBS_Language_BO_Indexed
=
new
JSBS_Language_BO(
);
struct
JSBS_Language_BO_Indexed
= (
JSBS_Language_BO
)
structJSBS_Language_BOC_Set
.
vecRecordSet
.elementAt(intVectorIndex);
/*
*
de:
* Für die Anzeige werden nur die Datensätze mit der Standard-Bezeichnung für
* den Sprachen-Namen herangezogen. Diese sind daran erkennbar, dass der Wert
*
im Attribut 'LanguageCodeForLabelling' eine leere Zeichenkette ist.
* Bei anderen Werten nächsten Durchlauf der for-Schleife beginnen
.
*
en:
* For the display only datasets with the default-language-name are considered.
*
Those can be identified by an empty string as value in the attribut
*
'LanguageCodeForLabelling'. If there is another value continue with the
* next pass of the for-loop
. */
if
(
struct
JSBS_Language_BO_Indexed
.
LanguageCodeForLabelling
.trim().length() > 0
)
continue
;
/*
*
de:
* Prüfen, ob der Sprach-Code in der Liste mit den auszunehmenden Codes enthalten ist.
* In diesem Fall ebenfalls mit dem nächsten Durchlauf der for-Schleife fortsetzen
.
*
en:
* Verify, if the language-code is in the list with the codes to be excluded.
* In that case, continue with the next pass of the for-loop, too
. */
if
(
isValueInVector(parmExclusionList, struct
JSBS_Language_BO
_Indexed
.
ISOLanguageCode
))
continue
;
/*
*
de:
* Prüfen, ob für den Marker-Wert aus dem Parameter der entsprechende Marker
* im Datensatz enthalten ist.
* Bei einem Parameter-Wert '0' werden alle Datensätze in die Anzeigeliste aufgenommen
.
*
en:
* Verify if, for the Marker-value from the parameter, a fitting Marker is within the
* dataset.
* If the parameter-value is '0', all datasets are included in the list for display.
*/
if
( (parmLanguageMarkerNumber
== 0
)
|| ((parmLanguageMarkerNumber
== 1
) && (
struct
JSBS_Language_BO
_Indexed
.
Marker01
))
|| ((parmLanguageMarkerNumber
== 2
) && (
struct
JSBS_Language_BO
_Indexed
.
Marker02
))
|| ((parmLanguageMarkerNumber
== 3
) && (
struct
JSBS_Language_BO
_Indexed
.
Marker03
))
|| ((parmLanguageMarkerNumber
== 4
) && (
struct
JSBS_Language_BO
_Indexed
.
Marker04
))
|| ((parmLanguageMarkerNumber
== 5
) && (
struct
JSBS_Language_BO
_Indexed
.
Marker05
))
|| ((parmLanguageMarkerNumber
== 6
) && (
struct
JSBS_Language_BO
_Indexed
.
Marker06
))
|| ((parmLanguageMarkerNumber
== 7
) && (
struct
JSBS_Language_BO
_Indexed
.
Marker07
))
|| ((parmLanguageMarkerNumber
== 8
) && (
struct
JSBS_Language_BO
_Indexed
.
Marker08
))
|| ((parmLanguageMarkerNumber
== 9
) && (
struct
JSBS_Language_BO
_Indexed
.
Marker09
))
|| ((parmLanguageMarkerNumber
== 10
) && (
struct
JSBS_Language_BO
_Indexed
.
Marker10
))
|| ((parmLanguageMarkerNumber
== 11
) && (
struct
JSBS_Language_BO
_Indexed
.
Marker11
))
|| ((parmLanguageMarkerNumber
== 12
) && (
struct
JSBS_Language_BO
_Indexed
.
Marker12
))
|| ((parmLanguageMarkerNumber
== 13
) && (
struct
JSBS_Language_BO
_Indexed
.
Marker13
))
|| ((parmLanguageMarkerNumber
== 14
) && (
struct
JSBS_Language_BO
_Indexed
.
Marker14
))
|| ((parmLanguageMarkerNumber
== 15
) && (
struct
JSBS_Language_BO
_Indexed
.
Marker15
))
|| ((parmLanguageMarkerNumber
== 16
) && (
struct
JSBS_Language_BO
_Indexed
.
Marker16
))
|| ((parmLanguageMarkerNumber
== 17
) && (
struct
JSBS_Language_BO
_Indexed
.
Marker17
))
|| ((parmLanguageMarkerNumber
== 18
) && (
struct
JSBS_Language_BO
_Indexed
.
Marker18
))
|| ((parmLanguageMarkerNumber
== 19
) && (
struct
JSBS_Language_BO
_Indexed
.
Marker19
))
|| ((parmLanguageMarkerNumber
== 20
) && (
struct
JSBS_Language_BO
_Indexed
.
Marker20
))
) {}
/*
*
de:
* Marker stimmt nicht überein; mit dem nächste Durchlauf der for-Schleife fortsetzen
.
*
en:
* Marker does not fit; continue with the next pass of the for-loop
.
*/
else continue
;
/*
*
de:
* Wenn der Code bis hierher ausgeführt wurde dann soll die Sprache in der Auswahlliste
* der Combobox angezeigt werden.
*
Noch die Bezeichnung der Sprache in der gewünschten Sprache ermitteln
.
*
en:
* If the code was executed till here then the language should be added to the
* selection-list of the combo-box.
*
Finally, get the language-name in the chosen language
. */
s
truct
JSBS_Language_BO_Indexed
.
LanguageName
=
getLanguageName(
s
truct
JSBS_Language_BO
_Indexed
.
ISOLanguageCode
,
parmDisplayLanguageCode
);
/*
*
de:
* Das einzelne BO für einen Eintrag in der Auswahlliste der Combobox in den
* Vector für den Aufbau der Combobox einfügen
.
*
en:
* Add the single BO for one entry in the selection-list of the combo-box into
*
the vector for the build of the combo-box
. */
s
truct
JSBS_Language_BOC_Set_For_ComboBox
.
vecRecordSet
.addElement(
s
truct
JSBS_Language_BO_Indexed
);
}
/*
*
de:
* Vector mit den Rohdaten im BOC aufbauen und Combobox füllen
.
*
en:
* Build the vector with raw-date within the BOC and fill the combo-box.
*/
s
truct
JSBS_Language_BOC_Set_For_ComboBox
.buildRawDataVector()
;
String[] arrayComboBoxArrangement = {
"ISOLanguageCode"
,
" - "
,
"LanguageName"
};
JSBS_GUIServices.setListToJComboBox(parmJComboBox,
structJSBS_Language_BOC_Set_For_ComboBox
.
vecRawDisplayData
,
arrayComboBoxArrangement
);
}
}
XXX
Dokument |
Inhalt |
Dieser Schritt des Tutorials beschreibt im Detail, wie eine Klasse für ein Start-Frame eines Anwendungsprogramms (Command-Center) eröffnet wird und wie dabei von der hier dokumentierten Basisklasse 'geerbt' wird. |
|
Dieser Leitfaden enthält die notwendigen Tätigkeiten für die Entwicklung eines StartFrame eines Anwendungsprogramms (auch als Command-Center bekannt). Dabei wird auch von dieser Basisklasse 'geerbt' und erläutert wann und wie einzelne Methoden dieser Basisklasse vom StartFrame des Anwendungsprogramms aufgerufen werden müssen. |