Wie erhalte ich die Workbench-Fenster einen modalen Dialog in einem Eclipse-basierten Projekt zu öffnen?
-
22-07-2019 - |
Frage
Um einen modalen Dialog zu öffnen, müssen Sie ein übergeordnetes Fenster passieren, und übergeben die erforderlichen Flags für den Dialog modal natürlich sein.
Je nachdem, wo Sie in der Eclipse-Infrastruktur sind, finden dieses Fenster Eltern ist nicht immer einfach.
Wie kann das übergeordnete Fenster zugegriffen werden?
Lösung 2
Aus einer Sicht oder einen Editor (dieser Teil ist leicht):
this.getSite().getWorkbenchWindow().getShell()
Von anderswo, Zugriff auf eine Ansicht oder Editor und wie oben.
Wenn Sie sich in einer Klasse, wo Sie Zugriff auf eine Ansicht oder Editor nicht haben, möchten Sie wahrscheinlich keine UI-Code zu rufen, aber wenn Sie wirklich wollen, sich selbst in den Fuß schießen:
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()
Andere Tipps
Das Stück Code aus der vorherige Antwort funktioniert. Doch bedenken Sie nur Ihren Dialog aus dem UI-Thread öffnen. Wenn der Dialog von einem anderen Thread eröffnen, z.B. ein Hintergrundprozess, müssen Sie so etwas wie dies tun:
PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
public void run() {
Shell activeShell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
}
});
Sonst werden Sie eine Ausnahme erhalten, wenn Sie den Dialog zu schaffen.
Nicht ganz genau, was Sie wollen, aber Sie können verwenden müssen SWT.APPLICATION_MODAL , SWT.DIALOG_TRIM usw., wenn der Dialog, um die Schaffung es zu machen modaler Dialog (aber vielleicht ist das nicht, was Ihre Frage war etwa).
Sehen Sie diese Link für weitere Informationen.