de.willuhn.jameica.gui.dialogs
Class AbstractDialog

java.lang.Object
  extended by de.willuhn.jameica.gui.dialogs.AbstractDialog
Direct Known Subclasses:
About, AbstractCertificateDialog, BackupRestoreDialog, CalendarDialog, ChooseBoxesDialog, ListDialog, LogDetailDialog, LoginDialog, PasswordDialog, SearchOptionsDialog, ServiceBindingDialog, SimpleDialog, WaitDialog, YesNoDialog

public abstract class AbstractDialog
extends java.lang.Object

Das ist die Basisklasse fuer modalen Dialogfenster.

Modal heisst: Ist das Dialogfenster einmal geoeffnet, kann die restliche Anwendung solange nicht mehr bedient werden, bis dieses Fenster geschlossen wurde.

Diese abstrakte Implementierung schreibt keinen Inhalt in den Dialog sondern stellt lediglich das Fenster mit einem definierten Design zu Verfuegung, behandelt die Dispatch-Vorgaenge mit dem Benutzer und definiert einen Fenster-Titel.

Der Dialog kann mittels der beiden Konstanten POSITION_MOUSE und POSITION_CENTER im Konstruktor entweder mittig auf dem Bildschirm oder an der momentanen Position der Mouse dargestellt werden.

Ableitende Klassen muessen die Methode paint(Composite) implementieren und dort ihre darzustellenden Elemente reinmalen.

Der Dialog wird mittels open() geoeffnet. Beim Schliessen des Dialogs wird die Methode getData() aufgerufen. Das ist gleichzeitig der Rueckgabewert von open().

Eine ableitende Klasse muss also z.Bsp. in paint(Composite) einen OK-Button erzeugen, einen Listener anhaengen, der auf Druecken des Buttons reagiert, in der aufgerufenenen Methode des Listeners den zu uebergebenden Wert als Member speichern und danach close() aufrufen, um den Dialog zu schliessen.

Bsp.:

 protected void paint(Composite parent) throws Exception
 {
   // [...]
   final Text text = GUI.getStyleFactory().createText(parent);
   final Button button = GUI.getStyleFactory().createButton(parent);
   button.setText("OK");
   button.addMouseListener(new MouseAdapter() {
     public void mouseUp(MouseEvent e) {
       this.enteredText = text.getText();
       close();
     }
   }
 }
 protected Object getData() throws Exception
 {
   return this.enteredText;
 }
 

Author:
willuhn

Field Summary
protected  de.willuhn.util.I18N i18n
           
static int MONITOR_CURRENT
          Positioniert den Dialog auf dem Monitor, auf dem sich das Jameica-Fenster befindet.
static int MONITOR_PRIMARY
          Positioniert den Dialog auf dem Primaer-Monitor.
static int POSITION_CENTER
          Positioniert den Dialog mittig auf dem Bildschirm.
static int POSITION_MOUSE
          Positioniert den Dialog an der aktuellen Maus-Position.
 
Constructor Summary
AbstractDialog(int position)
          Erzeugt einen neuen Dialog.
AbstractDialog(int position, boolean resizable)
          Erzeugt einen neuen Dialog.
 
Method Summary
 void addCloseListener(org.eclipse.swt.widgets.Listener l)
          Fuegt einen Listener hinzu, der beim Schliessen des Fensters ausgeloest wird.
protected  void addShellListener(org.eclipse.swt.events.ShellListener l)
          Fuegt dem Dialog einen Shell-Listener hinzu.
 void close()
          Schliesst den Dialog.
protected abstract  java.lang.Object getData()
          Diese Funktion wird beim Schliessen des Dialogs in open() aufgerufen und liefert die ausgewaehlten Daten zurueck.
protected  org.eclipse.swt.widgets.Display getDisplay()
          Liefert das Display des Dialogs.
protected  org.eclipse.swt.widgets.Shell getShell()
          Liefert die Shell des Dialogs.
 java.lang.Object open()
          Oeffnet den Dialog.
protected abstract  void paint(org.eclipse.swt.widgets.Composite parent)
          Muss vom abgeleiteten Dialog ueberschrieben werden.
 void setMonitor(int monitor)
          Legt fest, auf welchem Monitor der Dialog angezeigt werden soll.
 void setSideImage(org.eclipse.swt.graphics.Image image)
          Fuegt dem Dialog links ein Bild hinzu.
 void setSize(int width, int height)
          Legt Breite und Hoehe des Dialogs fest.
 void setTitle(java.lang.String title)
          Setzt den anzuzeigenden Titel.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

POSITION_MOUSE

public static final int POSITION_MOUSE
Positioniert den Dialog an der aktuellen Maus-Position.

See Also:
Constant Field Values

POSITION_CENTER

public static final int POSITION_CENTER
Positioniert den Dialog mittig auf dem Bildschirm.

See Also:
Constant Field Values

MONITOR_PRIMARY

public static final int MONITOR_PRIMARY
Positioniert den Dialog auf dem Primaer-Monitor.

See Also:
Constant Field Values

MONITOR_CURRENT

public static final int MONITOR_CURRENT
Positioniert den Dialog auf dem Monitor, auf dem sich das Jameica-Fenster befindet. Das ist der Default-Wert.

See Also:
Constant Field Values

i18n

protected de.willuhn.util.I18N i18n
Constructor Detail

AbstractDialog

public AbstractDialog(int position)
Erzeugt einen neuen Dialog. Er ist nicht groessenaenderbar.

Parameters:
position - Position des Dialogs.
See Also:
POSITION_MOUSE, POSITION_CENTER

AbstractDialog

public AbstractDialog(int position,
                      boolean resizable)
Erzeugt einen neuen Dialog.

Parameters:
position - Position des Dialogs.
resizable - true, wenn der Dialog groessenaenderbar sein soll.
See Also:
POSITION_MOUSE, POSITION_CENTER
Method Detail

addShellListener

protected final void addShellListener(org.eclipse.swt.events.ShellListener l)
Fuegt dem Dialog einen Shell-Listener hinzu. Der wird u.a. aufgerufen, wenn der User versucht, den Dialog ueber den Schliessen-Knopf im Fenster-Rahmen zu beenden. Gerade bei Passwort-Eingaben ist es sinnvoll, dies zu verhindern, damit sichergestellt ist, dass auf jeden Fall ein Passwort eingegeben wurde.

Parameters:
l - der ShellListener.

getDisplay

protected final org.eclipse.swt.widgets.Display getDisplay()
Liefert das Display des Dialogs.

Returns:
Display.

getShell

protected final org.eclipse.swt.widgets.Shell getShell()
Liefert die Shell des Dialogs.

Returns:
Shell.

addCloseListener

public void addCloseListener(org.eclipse.swt.widgets.Listener l)
Fuegt einen Listener hinzu, der beim Schliessen des Fensters ausgeloest wird. Ob das Schliessen nun durch Klick auf den Schliessen-Button oder z.Bsp. durch Auswahl eines Elements im Dialog stattfindet, ist egal. Dabei wird die Methode handleEvent(Event) des Listeners aufgerufen. Das ausgewaehlte Objekt befindet sich dann im Member data des Events.

Parameters:
l - zu registrierender Listener.

setTitle

public void setTitle(java.lang.String title)
Setzt den anzuzeigenden Titel. Dies kann auch nachtraeglich noch ausgefuehrt werden, wenn das Panel schon angezeigt wird.

Parameters:
title -

setMonitor

public void setMonitor(int monitor)
Legt fest, auf welchem Monitor der Dialog angezeigt werden soll.

Parameters:
monitor - der Monitor.
See Also:
MONITOR_CURRENT, MONITOR_PRIMARY

setSize

public final void setSize(int width,
                          int height)
Legt Breite und Hoehe des Dialogs fest. Wird die Funktion nicht aufgerufen, dann wird der Dialog genauso gross gemalt, wie der Inhalt. Wenn eine der beiden Groessen nicht bekannt ist oder nicht gesetzt werden soll, kann man auch SWT.DEFAULT uebergeben.

Parameters:
width - gewuenschte Breite.
height - gewuenschte Hoehe.

setSideImage

public final void setSideImage(org.eclipse.swt.graphics.Image image)
Fuegt dem Dialog links ein Bild hinzu.

Parameters:
image - Side-Image.

paint

protected abstract void paint(org.eclipse.swt.widgets.Composite parent)
                       throws java.lang.Exception
Muss vom abgeleiteten Dialog ueberschrieben werden. In dieser Funktion soll er sich bitte malen. Sie wird anschliessend von open() ausgefuehrt.

Parameters:
parent - das Composite, in dem der Dialog gemalt werden soll. Hinweis: Das Composite enthaelt bereits ein einspaltiges GridLayout.
Throws:
java.lang.Exception - Kann von der abgeleiteten Klasse geworfen werden. Tut sie das, wird der Dialog nicht angezeigt.

getData

protected abstract java.lang.Object getData()
                                     throws java.lang.Exception
Diese Funktion wird beim Schliessen des Dialogs in open() aufgerufen und liefert die ausgewaehlten Daten zurueck. Die ableitende Klasse sollte hier also die Informationen rein tuen, die sie dem Aufrufer gern geben moechte.

Returns:
das ausgewaehlte Objekt.
Throws:
java.lang.Exception

open

public final java.lang.Object open()
                            throws java.lang.Exception
Oeffnet den Dialog.

Returns:
das ausgewaehlte Objekt.
Throws:
java.lang.Exception - wenn es beim Oeffnen zu einem Fehler gekommen ist.

close

public final void close()
Schliesst den Dialog.