|
Letzte
Bearbeitung dieses Dokuments: |
Code
Erklärungen
und Anwendungsbeispiele
Verwandte
Dokumentation
package
js_base.structures;
import
java.awt.*;
import
java.util.*;
import
javax.swing.border.*;
/**
*
* @author kurt(at)javascout[dot]biz
* @date
2006-05-09
*
* @description
* de:
*
Parameter-Struktur mit Werten die vom CommandCenter und den
*
Fenstern für die Bearbeitung von Geschäftsfällen
gebraucht werden.
* Dieser Werte sind für
*
+ die Verbindung zur Datenbank (DB)
* + die
Verbindung zu einem Java-Application-Server (JAS)
* +
Anwender-spezifisch: Sprache für die Bediener-Oberfläche,
ID der Arbeitsstation, etc.
* + Unterverzeichnisse für
sprach-spezifischen Text, graphische Elemente (Icons) Formulare,
etc.
* en:
* Parameter-structure
holding values needed by the CommandCenter
* and
detail-frames for business-tasks.
* These values
are for
* + Connection to a database (DB)
* +
Connection to a Java-Application-Server (JAS)
* +
User-specific: Language of the User-Interface, id of the workstation,
etc.
* + subdirectories for language dependant
text, graphic-elements (mostly icons), forms-elements, etc.
*
* @change-log
*
when who why
*
--------------------------------------------------------
*
*/public
class
JSBS_UniversalParameters
implements
JSBS_UniversalParameters_Constants
{
/*
*
de:
* Status-Code um Ergebnisse von Methoden an die
aufrufende Methode zu signalisieren.
* Mögliche
Ergebnisse sind in der interface JSBS_UniversalParameters_Constants
festgelegt.
* en:
* Status code to signal results
(see interface JSBS_UniversalParameters_Constants)
* of
methods to the caller. */
public
int
StatusCode
=
0;
/*
*
de:
* Name des/der Anwender/in. Das ist der Wert, der in der
Anwender-Liste des Anwendungs-
* programms enthalten
ist.
* Als Anfangswert wird der Anmeldungs-Name aus dem
Betriebssystem verwendet.
* Dieser Anfangswert wird
auch angezeigt wenn das Anwendungsprogramm keine eigene
* Liste
mit Anwender-Namen verwaltet.
* en:
* Name of the
user; the one he or she is registered at the user-list of the
application.
* The initial value is taken from the
loggod-on user-name of the operating-system.
* This
value is displayed if the application does not maintain its own
user-name-list. */
public
String
strUserName
=
System.getProperty(
"user.name"
);
/*
*
de:
* Mandanten-ID zu dem der/die angemeldete Anwender/in
gehört.
* Damit kann eine Installation des
Anwendungsprogramms von verschiedenen unabhängigen
*
Gruppen (Mandanten) von Benutzern verwendet werden.
* Ein
Anwender der zu einem Mandanten gehört darf nicht auf
Datenbestände eines anderen
* Mandanten zugreifen; das
ist durch das Anwendungsprogramm sicher zu stellen.
* Dieser
Wert ist eine Vorbereitung für die Entwicklung von
Mandanten-fähigen
* Anwendungsprogrammen.
*
Wird kein spezieller Wert zugewiesen wird '0' als Standard-Wert
verwendet.
* en:
* Client-ID the registered user
belongs to.
* This allows the usage of the application
program by different, independent
* groups (clients) of
users.
* Users of one group (client) have no access to the
data of other groups;
* this has to be established by the
application-program.
* This value is a preparation for
the development of client-enabled application programs.
* If
no cpecial value is set, '0' is used as a default-value.
*/
public
int
intClientID
=
0;
/*
*
de:
* Arbeitsdatum des Client-Programms.
* Dieses
Datum kann unterschiedlich zum aktuellen Datum des Servers sein weil
es notwendig
* sein kann, Geschäftsfälle mit
vergangenem oder zukünftigem Datum auszuführen.
*
en:
* Work-Date of the client.
* This date can
be different from the actual date on the Server
* as it
might be necessary to perform business-operations for the future or
the past. */
public
GregorianCalendar
calWorkDate
=
new
GregorianCalendar();
/*
*
de: Gewählte Sprache für die Anzeige der Graphischen
Benutzeroberfläche (GUI).
* en: Chosen language
for the display of the GUI. */
public
String
strLanguageCode
=
""
;
/*
*
de:
* Bevorzugte Währung für die Anzeige;
nur notwendig wenn das Anwendungsprogramm
* Beträge
in mehreren Währungen anzeigen soll.
* en:
*
Preferred currency; this is the one chosen for display.
* (only
needed if the application should work with multi-currency)
*/
public
String
strPreferredCurrency
=
""
;
/*
*
de:
* Führende Währung innerhalb des
Anwendungsprogramms wenn darin Beträge mit
Währungen
* verwendet werden.
* Gegen
diese führende Währung werden Umrechnungskurse anderer
verwendeter Währungen festgelegt.
* en:
*
Leading currency within an application program if there are amounts
with currencies.
* are used.
* Exchange
rates of other used currencies are defined against that currency.
*/
public
String
strLeadCurrency
=
""
;
/*
*
de:
* Zeichen für die Trennung zwischen Vorkomma
und Nachkommastellen einer Dezimalzahl.
* Sprachabhängig
weil je nach Kulturkreis entweder ein Punkt oder ein Komma verwendet
wird.
* en:
* Character for the separation
between the integral and fractional part of a decimal
number.
* Language-dependant as either a full stop (.)
or a comma (,) is used – depending on the culture area.
*/
public
String
strLanguageDependantDecimalPoint
=
"."
;
/*
*
de: Variable mit Namen von Datei-Verzeichnissen bzw. Teilen davon.
* en: Variables with the directory-names and with parts to
build them. */
/*
* de: Zeichen das Unterverzeichnisse
trennt; z.B. "\" in Windows; "/" in Linux.
*
en: Character which separates directories; e.g. "\" in
Windows; "/" in Linux. */
public
String
strDirectorySeparator
=
""
;
/*
*
de: Verzeichnis mit den Dateien für das Anwendungsprogramm.
*
en: Directory where the files with the application reside
*/
public
String
strApplicationDirectoryName
=
""
;
/*
*
de:
* Verzeichnisse mit
* Sprach-spezifischen
Text-Elementen,
* Graphische Elemente (meistens Icons),
*
Hilfe und anderer Dokumentation (z.B. Daten-Modell),
*
Graphische Teile von zu druckenden Formularen und
* Dateien
mit Parametern für die Verbindung zur Datenbank oder
Java-Application-Server.
* Diese Verzeichnissse sind
Unterverzeichnisse des Verzeichnisses
* in
'strApplicationDirectoryName'.
* en:
* Directories
where
* language-specific text-elements,
* graphic
elements (mostly icons),
* help and other documentation
(e.g. data-model),
* graphic parts of forms to be printed
and
* files with parameters for the connection to a database
or Java-Application-Server
* are stored.
* These
directories are subdirectories of the directory in
'strApplicationDirectoryName' . */
public
String
strTextElementsDirectoryName
=
""
;
public
String
strGraphicElementsDirectoryName
=
""
;
public
String
strHelpElementsDirectoryName
=
""
;
public
String
strFormsElementsDirectoryName
=
""
;
public
String
strConnectionsDirectoryName
=
""
;
/*
*
de:
* Identifikation des Anwendungsprogramms.
*
Muss mit dem Namen des Anwendungsprogramms versorgt werden und wird
hauptsächlich
* verwendet wenn Fehler oder Warnungen
ausgegeben werden.
* en:
* Identification of the
application.
* Has to be filled by the application and is
mainly used
* when printing Error- or
Warning-Messages. */
public
String
strApplicationName
=
""
;
/*
*
de:
* Farben für die Hintergründe von Feldern.
*
Diese Farb-Definitionen können verwendet werden um gültige
oder ungültige Eingaben
* in einem Feld zu
signalisieren.
* Diese Werte können mit Werten, die in
der Datei mit der XML-Struktur für die
*
sprach-abhängigen Texten definiert sind, überschrieben
werden.
* en:
* Colors for the Background of
fields.
* This color-definitions can be used to signal
a valid or invalid entry in a field.
* These values can
be overwritten with values defined in the file with the
*
XML-structure with language dependant elements. */
/*
* de:
Übliche Hintergrundfarbe; auf weiß gesetzt.
* en:
Normal background-color; set to white */
public
Color
clrNormalBackground
=
new
Color(33554431);
/*
* de:
* Hintergrundfarbe zum signalisieren einer nicht
erlaubten Eingabe (Fehler);
* auf rot gesetzt.
* en:
* Background to signal a not allowed entry (error);
set to red */
public
Color
clrErrorBackground
=
new
Color(33449060);
/*
* Colors
for the Borders of fields, panels and buttons.
* This
color-definitions can be used to signal
* - a
mandatory field (requests an entry) or optional
field,
* - separation of panels (areas within the
GUI) or
* - the gutton that is triggered if the
'Enter' key is pressed on the keyboard.
* These values
can be overwritten with values defined in the file with the
*
XML-structure with language dependant elements. */
/*
* Border
for a field with mandatory entry. Default: grey/red */
public
EtchedBorder
bdrMandatoryBorder
=
new
EtchedBorder(EtchedBorder.
LOWERED
,
new
Color(6579300),
new
Color(33449060));
/*
* Border
for a field with optional entry. Default: grey/white */
public
EtchedBorder
bdrOptionalBorder
=
new
EtchedBorder(EtchedBorder.
LOWERED
,
new
Color(6579300),
new
Color(33554431));
/*
* Border
for a field that has the focus for entry. Default: magenta/magenta
*/
public
EtchedBorder
bdrSelectedBorder
=
new
EtchedBorder(EtchedBorder.
LOWERED
,
new
Color(167711935),
new
Color(167711935));
/*
* Border
for a panel to separate entry-areas. Default: blue/blue */
public
EtchedBorder
bdrPanelBorder1
=
new
EtchedBorder(EtchedBorder.
LOWERED
,
new
Color(255),
new
Color(255));
/*
* Alternative
Border for a panel to separate entry-areas.
* This
color can be used to signal an exemption state; e.g. no connection to
the server.
* Default: black/black */
public
EtchedBorder
bdrPanelBorder2
=
new
EtchedBorder(EtchedBorder.
LOWERED
,
new
Color(0),
new
Color(0));
/*
* Border
for the button that will be triggered when the 'Enter'-key is
pressed.
* Default: green/green */
public
EtchedBorder
bdrEnterTriggeredButtonBorder
=
new
EtchedBorder(EtchedBorder.
LOWERED
,
new
Color(65280),
new
Color(65280));
/*
*
-------------------------------
* KONSTRUKTOR der Klasse /
CONSTRUCTOR of the class */
public
JSBS_UniversalParameters(String
parmLanguageCode) {
/*
*
de:
* Aufrufen der Methode um den Namen des
Verzeichnisses, in dem die Dateien mit dem
Anwendungsprogramm
* gespeichert sind und bilden der
Namen der Unterverzeichnisse die nicht von der gewählten
Sprache
* abhängig sind.
* en:
* Call
the method to get the name of the directory where the files with the
application-program
* are stored and to build the names of
subdirectories which are not language dependant
*/
buildDirectoryNames();
/*
*
de:
* Aufrufen der Methode um den Namen der
Verzeichnisse, die von der gewählten Sprache abhängig
sind,
* zu ermitteln.
* Der Code dafür
ist in einer eigenen Methode um einen Wechsel ausführen zu
können wenn das
* Anwendungsprogramm bereits
ausgeführt wird aber die Sprache der Benutzeroberfläche
gewechselt
* werden soll.
* en:
*
Call the method to get the name of the language dependant
directory.
* The code is in an extra method as the language
of the user-interface might
* be changed while the
application is already up and running.
*/
buildLanguageDependantDirectoryNames(parmLanguageCode);
/*
*
de:
* Aufrufen der Methode um jenes Zeichen
festzulegen, das bei einer Dezimalzahl der Trenner
* zwischen
Vor- und Nachkommastellen ist.
* Der Code dafür
ist in einer eigenen Methode um einen Wechsel ausführen zu
können wenn das
* Anwendungsprogramm bereits
ausgeführt wird aber die Sprache der Benutzeroberfläche
gewechselt
* werden soll.
* en:
*
Call the method to define the character that is the seperator between
the integral and fractional
* part of a decimal
number.
* The code is in an extra method as the language of
the user-interface might
* be changed while the application
is already up and running.
*/
setLanguageDependantDecimalPoint(parmLanguageCode);
}/*
* de:
* Variation
des KONSTRUKTORS.
* Als Parameter wird ein
zwei-dimensionales String-Array übergeben in dem
Dezimaltrennzeichen für
* Sprachen, die nicht als
Standard im JSBS (konkret definiert in der Methode
'setLanguageDependantDecimalPoint(..)'
* dieser Klasse)
enthalten sind, festgelegt werden können.
* Zusätzlich
können auch als Standard im JSBS festgelegte Dezimaltrennzeichen
'überschrieben' werden.
* en:
* Variation
of the CONSTRUCTOR.
* A two-dimensional array of
Strings may be passed. This array contains characters for seperation
between the
* integral and fractional part of a decimal
number.
* This makes it possible to define
seperation-characters for languages that are not containes as
standard
* within the JSBS (in detail defined in
methode 'setLanguageDependantDecimalPoint(..)' of this
class).
* Additionally, decimal-characters that are
already defined in JSBS can be 'overwritten'. */
public
JSBS_UniversalParameters(String
parmLanguageCode, String[][] parmIndividualDefinitions) {
/*
*
de:
* Aufrufen der Methode um den Namen des
Verzeichnisses, in dem die Dateien mit dem
Anwendungsprogramm
* gespeichert sind und bilden der
Namen der Unterverzeichnisse die nicht von der gewählten
Sprache
* abhängig sind.
* en:
* Call
the method to get the name of the directory where the files with the
application-program
* are stored and to build the names of
subdirectories which are not language dependant
*/
buildDirectoryNames();
/*
*
de:
* Aufrufen der Methode um den Namen der
Verzeichnisse, die von der gewählten Sprache abhängig
sind,
* zu ermitteln.
* Der Code dafür
ist in einer eigenen Methode um einen Wechsel ausführen zu
können wenn das
* Anwendungsprogramm bereits
ausgeführt wird aber die Sprache der Benutzeroberfläche
gewechselt
* werden soll.
* en:
*
Call the method to get the name of the language dependant
directory.
* The code is in an extra method as the language
of the user-interface might
* be changed while the
application is already up and running.
*/
buildLanguageDependantDirectoryNames(parmLanguageCode);
/*
*
de:
* Aufrufen der Methode um jenes Zeichen
festzulegen, das bei einer Dezimalzahl der Trenner
* zwischen
Vor- und Nachkommastellen ist.
* Als weiterer Parameter
wird das Array mit der individuellen Festlegung von
Dezimaltrennzeichen übergeben.
* Der Code dafür
ist in einer eigenen Methode um einen Wechsel ausführen zu
können wenn das
* Anwendungsprogramm bereits
ausgeführt wird aber die Sprache der Benutzeroberfläche
gewechselt
* werden soll.
* en:
*
Call the method to define the character that is the seperator between
the integral and fractional
* part of a decimal
number.
* A further parameter is the array with the
individual definition of decimal separators.
* The code is
in an extra method as the language of the user-interface might
*
be changed while the application is already up and running.
*/
setLanguageDependantDecimalPoint(parmLanguageCode,
parmIndividualDefinitions);
}/*
*
*/
public
void
buildDirectoryNames()
{
/*
*
de:
* Ermitteln des Trennungs-Zeichen zwischen
Verzeichnissen bzw.
* zwischen Verzeichnis und
Datei-Name.
* Dieses Zeichen ist System-spezifisch !
*
en:
* Get the separator between directories respectively
directory and file-name.
* This character is system-specific
! */
strDirectorySeparator
=
System.getProperty(
"file.separator"
);
/*
*
de:
* Ermitteln des Namens des Verzeichnisses in dem die
Dateien mit dem Anwendungs-Programm
* gespeichert sind und
anhängen des 'directory-seperators'.
* en:
*
Get the name of the directory where the files with the application
are stored
* and append it already with the directory
separator. */
strApplicationDirectoryName
=
System.getProperty(
"user.dir"
)
+
strDirectorySeparator
;
/*
*
de:
* Namen der Unterverzeichnisse 'aufbauen' –
basierend auf der 'application-directory'.
* Beenden der
Zeichenkette schon jetzt mit dem 'directory separator' damit ein
*
späteres Anhängen von Datei-Namen leichter ist.
*
en:
* Build the names of the sub-directories based on the of
the application directory.
* End the String already with the
directory separator for easier appending of filenames
*/
strGraphicElementsDirectoryName
=
strApplicationDirectoryName
+
CONST_GRAPHICS_SUBDIRECTORY_NAME
+
strDirectorySeparator
;
strHelpElementsDirectoryName
=
strApplicationDirectoryName
+
CONST_HELP_SUBDIRECTORY_NAME
+
strDirectorySeparator
;
strFormsElementsDirectoryName
=
strApplicationDirectoryName
+
CONST_FORMS_SUBDIRECTORY_NAME
+
strDirectorySeparator
;
strConnectionsDirectoryName
=
strApplicationDirectoryName
+
CONST_CONNECTIONS_SUBDIRECTORY_NAME
+
strDirectorySeparator
;
}
/*
*
*/
public
void
buildLanguageDependantDirectoryNames(String
parmstrLanguageCode) {
/*
*
de: Speichern des übergebenen Sprach-Codes in der passenden
Variable dieser Struktur.
* en: Save the passed language
code in the fitting variable of this structure.
*/
strLanguageCode
=
parmstrLanguageCode.trim();
/*
de: 'Aufbauen' des ersten Teild des Verzeichnis-Namens.
*
en: Build the first part of the directory name.
*/
strTextElementsDirectoryName
=
strApplicationDirectoryName
+
CONST_TEXT_SUBDIRECTORY_NAME
;
/*
*
de:
* Wenn ein Sprach-Code vorhanden ist, dann wird das
Unterverzeichnis, in dem die
* Dateien mit den
sprach-spezifischen Text-Elementen vorhanden sind, gebildet.
*
en:
* Depending if a Language Code is available, build the
name of the directory
* where the files with the
language-specific text-elements are stored */
if
(
strLanguageCode
.length()
> 0) {
/*
de: Wenn ein Sprach-Code übergeben wurde, dann wird der Code ein
Teil des Verzeichnis-Namens.
* en: If a language code was
passed, the code will be part of the directory name.
*/
strTextElementsDirectoryName
=
strTextElementsDirectoryName
+
"."
+
strLanguageCode
;
}
/*
de:
* Beenden der Zeichenkette mit dem
'directory-seperator' damit später das Anhängen
*
von Datein-Namen einfacher wird.
* en:
* End the
string with the directory separator for easy appending a file-name.
*/
strTextElementsDirectoryName
+
=
strDirectorySeparator
;
}
/*
*
*/
public
void
setLanguageDependantDecimalPoint(String
parmstrLanguageCode,
String[][]
parmIndividualDefinitions) {/*
*
de:
* Definieren der Variablen für Anzahl der
Elemente und Index;
* Ermitteln der Anzahl der Elemente
im übergebenen Array.
* en:
* Define the
variables for number of elements and index;
* Determine
the number of elements within the passed array. */
int
intArraySize
= parmIndividualDefinitions.
length
;
int
intArrayIndex;
/*
*
de:
* Definieren der Variablen für
* -
ein (eindimensionales) Array, das die Kombination aus Sprach-Code und
Dezimal-Trennzeichen enthält
* und
* -
für eine Zeichenkette mit der Sprach-Code aus dem
eindimensionalen Array.
* en:
* Define the
variablen for
* - a (one-dimensional) array containing
the combination of language-code and decimal-seperator
* and
* -
for a String with the language-code out of the one-dimensional array.
*/
String[]
arrayCombination;
String
strLanguageCodeInArray;
/*
* de:
* Durchsuchen des Arrays mit individuellen
Festlegungen für das Dezimal-Trennzeichen.
* en:
* Search the array with individual definitions for the
decimal-seperator. */
for
(intArrayIndex
= 0; intArrayIndex < intArraySize; intArrayIndex++) {
/*
* de: Herausholen einer einzelnen Kombination.
*
en: Extract a single combination. */
arrayCombination
= parmIndividualDefinitions[intArrayIndex];
/*
* de:
* Zusätzliche Prüfung
ob die einzelne Kombination auch aus 2 Elementen besteht;
* das
verhindert einen eventuellen Absturz.
* en:
* Additional
check if the single combination consists of 2 elements;
* that
prevents a possible dump. */
if
(arrayCombination.
length
>
1) {
/*
* de: Herausholen des Sprach-Codes.
* en:
Extract the language-code. */
strLanguageCodeInArray
= arrayCombination[0];
/*
* de: Prüfen ob der Sprach-Code aus dem Array auf
den gewählten Sprach-Code zutrifft.
* en: Check if the
language-code of the array fits the selected language-code.
*/
if
(strLanguageCodeInArray.indexOf(parmstrLanguageCode)
== 0) {
/*
* de:
* Individuelle Definition des
Dezimaltrennzeichens für die gewählte Sprache
existiert;
* Dezimaltrennzeichen der Variablen zuweisen
und Methode beenden.
* en:
* Individual
definition for the decimal-seperator exists;
* store
the value for the decimal-seperator in the variable and end the
method. */
strLanguageDependantDecimalPoint
=
arrayCombination[1];
return
;
}
}
}
/*
de:
* Festlegen der Dezimaltrennzeichen für die
einzelnen Sprachen.
* Vorerst ein Anfang; bedarf noch
der Erweiterung ;-).
* en:
* Define the
decimal-seperator for the individual languages.
* A
small start; needs extension ;-). */
String[][]
arrayPredefinedDefinitions = {
{
"de",
","
},
{
"en",
"."
}
};
/*
*
de: Ermitteln der Anzahl der Elemente im vordefinierten Array.
*
en: Determine the number of elements within the predefined array.
*/
intArraySize
= arrayPredefinedDefinitions.
length
;
/*
* de:
* Durchsuchen des Arrays mit vordefinierten
Festlegungen für das Dezimal-Trennzeichen.
* en:
* Search the array with predefined definitions for the
decimal-seperator. */
for
(intArrayIndex
= 0; intArrayIndex < intArraySize; intArrayIndex++) {
/*
* de: Herausholen einer einzelnen Kombination.
*
en: Extract a single combination. */
arrayCombination
= arrayPredefinedDefinitions[intArrayIndex];
/*
* de:
* Zusätzliche Prüfung
ob die einzelne Kombination auch aus 2 Elementen besteht;
* das
verhindert einen eventuellen Absturz.
* en:
* Additional
check if the single combination consists of 2 elements;
* that
prevents a possible dump. */
if
(arrayCombination.
length
>
1) {
/*
* de: Herausholen des Sprach-Codes.
* en:
Extract the language-code. */
strLanguageCodeInArray
= arrayCombination[0];
/*
* de: Prüfen ob der Sprach-Code aus dem Array auf
den gewählten Sprach-Code zutrifft.
* en: Check if the
language-code of the array fits the selected language-code.
*/
if
(strLanguageCodeInArray.indexOf(parmstrLanguageCode)
== 0) {
/*
* de:
* Individuelle Definition des
Dezimaltrennzeichens für die gewählte Sprache
existiert;
* Dezimaltrennzeichen der Variablen zuweisen
und Methode beenden.
* en:
* Individual
definition for the decimal-seperator exists;
* store
the value for the decimal-seperator in the variable and end the
method. */
strLanguageDependantDecimalPoint
=
arrayCombination[1];
return
;
}
}
}
}
/*
*
de:
* 'Wrapper' für die Methode ohne Parameter
für die individuelle Festlegung
* von
Dezimaltrennzeichen.
* en:
* 'Wrapper' for
the method without a parameter for the individual definition
* of
a decimal-seperator. */
public
void
setLanguageDependantDecimalPoint(String
parmstrLanguageCode) {
/*
*
de:
* Definieren eines leeren Arrays und Aufrufen der
Methode in der 'die Arbeit gemacht wird'.
* en:
* Define
an empty array and call the method were 'the work is done'.
*/
String[][]
arrayIndividualDefinitions = {};
setLanguageDependantDecimalPoint(parmstrLanguageCode,
arrayIndividualDefinitions);
}
}
xxx
Dokument |
Inhalt |
In diesem Tutorial wird gezeigt, wie einfach diese Klasse 'konstruiert' wird. |
|
Interface, das für diese Klasse verwendet wird. |
|
|
|