Dialoge

Aus Eclipse
Wechseln zu: Navigation, Suche

Allgemeines

Dialoge sind erweiterte Popup-Fenster. Meistens sind sie modal, das heißt, dass die restlichen Ressourcen der Workbench während der Anzeige des Dialogs nicht verwendet werden können. Aus diesem Grund sollten modale Dialoge nur dann eingesetzt werden, wenn ohne diese Eingaben des Benutzers ein Fortschreiten nicht möglich wäre.

Einsatz von Dialogen

Ein Beispiel für einen sinnvollen Einsatz eines Dialogs ist das Erstellen eines neuen Projekts.

Erstellen eines neuen Projekts

Der Benutzer löst selbst die Operation aus. Während alle notwendigen Informationen sequentiell zusammengetragen werden, benötigt er keine anderen Bereiche des Programms. In diesem Fall ist der Einsatz eines Dialogs oder Wizards berechtigt.

Ein Negativbeispiel ist der Vergleich zweier verschiedener File-Versionen per Dialog. Der Benutzer kann nicht mehr zwischen dem Vergleich und anderen Programmressourcen wie Editoren oder Views hin- und herwechseln. In diesem Fall wäre ein Vergleichseditor (comparison editor) die bessere Wahl.

Möglichkeiten zur Darstellung von Dialogen

Es gibt zwei verschiedene Dialoghierarchien in Eclipse.

SWT-Dialoge (org.eclipse.swt.Dialog) sind Dialoge wie file dialogs oder font dialogs. Da es sich hierbei um plattformgebundene Java-Repräsentationen handelt, sind sie nicht portabel oder erweiterbar.

JFace-Dialoge (org.eclipse.jface.dialogs.Dialog) dagegen sind plattformunabhängige Dialoge. Auch Wizards bauen auf diesem Typ auf.

SWT Dialoge

Im folgenden werden einige bekannte Vertreter der SWT-Dialoge kurz vorgestellt.

ColorDialog
Dieser Dialog ermöglicht dem Benutzer eine Farbauswahl zu treffen. Die wählbaren Farben sind bereits vorgegeben.

Colordialog.png
Colordialogcode.png

DirectoryDialog
Dieser Dialog ermöglicht dem Benutzer die Auswahl von einem Verzeichnis (SWT.OPEN). Es besteht auch die Möglichkeit ein neues Verzeichnis anzulegen (SWT.SAVE).

Directorydialog.png
Directorydialogcode.png

FileDialog
Ähnlich wie beim DirectoryDialog kann der Benutzer eine bereits vorhandene Datei auswählen oder ein neues File erstellen.

Filedialog.png
Filedialogcode.png

FontDialog
Der Benutzer soll eine Schriftart auswählen.

Fontdialog.png
Fontdialogcode.png

MessageBox
Dieser Dialog zeigt dem Benutzer eine Nachricht an.

Messagebox mit Button-Style SWT.OK / SWT.CANCEL und Icon-Style SWT.ICON_INFORMATION

Mögliche Button-Styles sind:
SWT.OK, SWT.OK|SWT.CANCEL, SWT.YES|SWT.NO, SWT.YES|SWT.NO|SWT.CANCEL, SWT.RETRY|SWT.CANCEL und SWT.ABORT|SWT.RETRY|SWT.IGNORE
Mögliche Icon-Styles sind:
SWT.ICON_ERROR, SWT.ICON_INFORMATION, SWT.ICON_Question, SWT.ICON_WARNING und SWT.ICON_WORKING

Für alle genannten SWT-Dialoge sind folgende Modalitäts-Verhaltensweisen wählbar:
SWT.MODELESS --> Dialog ist nicht modal
SWT.PRIMARY_MODAL --> Modal in Bezug auf das parent shell
SWT.APPLICATION_MODAL --> Modal in Bezug auf die Anwendung
SWT.SYSTEM_MODAL --> Modal in Bezug auf das ganze System

PrintDialog
Der Benutzer soll einen Drucker auswählen und alle benötigten Parameter einstellen.

Printdialog.png
Printdialogcode.png

Jface Dialoge

Beispiel: Implementation eines einfachen Dialogs

Simple dialog pic.png
Simple dialog.png

Ein Dialog wird üblicherweise als Subklasse von org.eclipse.jface.dialogs.Dialog implementiert (Beispiel Zeile 21). Durch das Überschreiben der Methoden der Superklasse kann der Dialog angepasst werden. Im Beispiel werden die Methoden okPressed() und cancelPressed() überschrieben (Zeilen 27 und 31).

Es gibt aber auch eine sehr große Auswahl an spezifischen Jface-Dialogen. Dialoge dieses Typs können direkt verwendet oder mittels Subclassing wiederverwendet werden:

Abstrakte Dialoge

Die folgenden Dialoge sind alle abstrakt. Sie müssen also per Subclassing eingesetzt werden.

AbstractElementListSelectionDialog
Der Benutzer kann ein Element aus einer Liste auswählen.

IconAndMessageDialog
Abstrakte Superklasse von allen Dialogen, die ein Icon und eine Nachricht als erste Widgets beinhalten.

SelectionDialog
Zeigt eine Auswahl an und kann diese auch zurückgeben.

SelectionStatusDialog
Basisklasse für alle Dialoge, die eine Statusbar und OK/Cancel-Buttons beinhalten sollen. Die Statusnachricht muss mit einem StatusInfo-Objekt übergeben werden. Sie kann entweder als Error, Warnung oder Okay deklariert werden. Der OK-Button ist je nach Status aktiviert bzw. deaktiviert.

StatusDialog
Ebenfalls eine Basisklasse für Dialoge mit Statusbar und OK/Cancel-Buttons.

TitleAreaDialog
Dialog, der eine Überschrift in einer Title-Area, ein Bild und einen Bereich für Beschreibungen und Nachrichten darstellt.

TrayDialog
Spezieller Dialog, der einen Tray beinhaltet.

File Dialoge

SaveAsDialog
Standard-"Speichern Unter"-Dialog.

Dialoge zur Informationsdarstellung

ErrorDialog
Ein oder mehrere Errornachrichten können dem Benutzer angezeigt werden. Die Errornachricht befindet sich in einem IStatus-Objekt. Falls der Error zusätzliche Detailinformationen beinhaltet, wird ein Details-Button automatisch eingeblendet. Mit Hilfe dieses Buttons können die Zusatzinformationen angezeigt bzw. ausgeblendet werden.

MessageDialog
Dialog, der dem Benutzer einfache Nachrichten anzeigt.

Messagedialog.png
Messagedialogcode.png


MessageDialogWithToggle
Wie MessageDialog, zusätzlich erscheint aber noch ein Feld, das vom Benutzer aktiviert werden kann. Beispiel: Benutzer kann durch Setzen eines Häkchens verhindern, dass die Information nochmals angezeigt wird.

Ressourcen-Dialoge

ContainerSelectionDialog
Standard-Dialog zur Auswahl von einem Verzeichnis.

NewFolderDialog
Mit diesem Dialog kann der Benutzer ein neues Verzeichnis anlegen.

ProjectLocationMoveDialog
Ein Projekt soll an einen anderen Ort verschoben werden. Der Benutzer kann diesen Ort bestimmen.

ProjectLocationSelectionDialog
Ein Projekt soll kopiert werden. Der Benutzer gibt den Namen und das Verzeichnis an.

ResourceListSelectionDialog
Der Benutzer kann eine Verzeichnisstruktur mit Hilfe eines Suchkriteriums (Textfeld) filtern.

ResourceSelectionDialog
Standarddialog zur Auswahl von mehreren Verzeichnissen.

TypeFilteringDialog
Der Benutzer kann einen Datei-Editor auswählen.

Auswahl-Dialoge

CheckedTreeSelectionDialog
Der Benutzer kann Elemente aus einer Baumstruktur auswählen.

ContainerCheckedTreeViewer


ElementListSelectionDialog


ElementTreeSelectionDialog


ListDialog

Listdialog.png
Listdialogcode.png


ListSelectionDialog
Es können mehrere Elemente der Liste ausgewählt werden. Dies geschieht mit der Hilfe eines Häckchens. Weiters hat der Benutzer die Möglichkeit alle/keine Elemente der Liste per Button auszuwählen.


TwoPaneElementSelector
Wie ListSelectionDialog, jedoch mit zwei Anzeigen zur Darstellung der Listenelemente. Duplikate in der oberen Anzeige werden in der unteren Anzeige gruppiert.

Sonstige Dialoge

InputDialog

Inputdialog.png
Inputdialogcode.png

ProgressMonitorDialog
Zeigt den Fortschritt einer länger rechnenden Operation an. Dieser Dialog ist immer modal.

TaskPropertiesDialog
Zeigt die Eigenschaften bzw. ein Problem eines neuen oder bereits existierenden Tasks an.