2009-01-14 4 views

risposta

20

Dal punto di vista o di un editor (questa parte è facile):

this.getSite().getWorkbenchWindow().getShell() 

da altrove, accedere a una vista o un editor e come sopra.

Se ti trovi in ​​una classe in cui non hai accesso a una vista o a un editor, probabilmente non vuoi chiamare alcun codice UI, ma se vuoi davvero spararti ai piedi:

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

abbastanza esattamente ciò che si vuole fare, ma potrebbe essere necessario utilizzare SWT.APPLICATION_MODAL, SWT.DIALOG_TRIM ecc durante la creazione del dialogo, al fine di renderlo un finestra di dialogo modale (ma forse questo non è di che cosa si trattava la tua domanda).

Vedere questo link per ulteriori informazioni.

+0

Sì, anche questo. Ma la mia domanda riguardava più specificamente la ricerca della shell della finestra del workbench. L'ho fatto 6 mesi fa e nel frattempo ho dimenticato che avrei aggiunto il titolo di conoscenza allo stackoverflow – Tirno

+0

@Tirno - Le mie risposte più votate su StackOverflow sono solo note che ho scritto per me stesso che so che troverò via Google mesi o anni dopo, quando avrò di nuovo la stessa identica domanda. – ArtOfWarfare

27

Il pezzo di codice della risposta precedente funzionerà. Tuttavia, tieni presente che puoi aprire la finestra di dialogo solo dal thread dell'interfaccia utente. Se stai aprendo la finestra di dialogo da un thread diverso, ad es. un processo in background, devi fare qualcosa del genere:

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

Altrimenti si otterrà un'eccezione durante la creazione della finestra di dialogo.

+0

Certo, avrei dovuto aggiungerlo. Il che è più dello stesso problema: devi sapere dove trovare la funzione "getWorkbench()". – Tirno

Problemi correlati