2009-01-14 9 views

Antwort

20

Aus 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 befinden, in der Sie keinen Zugriff auf eine Ansicht oder einen Editor haben, möchten Sie wahrscheinlich keinen UI-Code aufrufen, aber wenn Sie sich wirklich in den Fuß schießen wollen:

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell() 
0

nicht ganz genau, was Sie wollen, aber Sie können SWT.APPLICATION_MODAL, SWT.DIALOG_TRIM usw. verwenden müssen, wenn Ihr Dialog schaffen, um es einen modalen Dialog zu machen (aber vielleicht ist das nicht worum es bei deiner Frage ging.

Weitere Informationen finden Sie unter link.

+0

Ja, das auch. Aber meine Frage war genauer gesagt, die Shell des Workbench-Fensters zu finden. Ich tat es vor 6 Monaten und hatte in der Zwischenzeit vergessen, dass ich den Leckerbissen des Wissens zu Stackoverflow hinzufügen würde – Tirno

+0

@Tirno - Meine am meisten uploaded Antworten auf StackOverflow sind nur Notizen, die ich für mich selbst geschrieben habe, dass ich weiß, dass ich finden werde über Google Monate oder Jahre später, wenn ich genau die gleiche Frage erneut habe. – ArtOfWarfare

27

Der Code aus der vorherigen Antwort funktioniert. Beachten Sie jedoch, dass Sie Ihren Dialog nur über den UI-Thread öffnen können. Wenn Sie den Dialog von einem anderen Thread aus öffnen, z. ein Hintergrundprozess, müssen Sie etwas wie folgt tun:

PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { 
    public void run() { 
     Shell activeShell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); 
    } 
}); 

Andernfalls erhalten Sie eine Ausnahme beim Erstellen des Dialogfelds.

+0

Natürlich hätte ich das hinzufügen sollen. Welches ist mehr von dem gleichen Problem - Sie müssen wissen, wo diese "getWorkbench()" -Funktion zu finden. – Tirno