2012-07-17 21 views
6

Nella mia applicazione RCP Io uso questo codice per passare prospettiva:Cambia prospettiva in un'applicazione RCP da Eclipse Juno?

IWorkbenchWindow window = getViewSite().getWorkbenchWindow(); 
window.getWorkbench().showPerspective(PRODUCT_PERSPECTIVE_ID, window); 

non ho cambiato il mio codice, ma ho cambiato il mio sviluppo environnement da

java 6 64bits + windows + Eclipse Indigo 

a

java 7 32bits + windows + Eclipse Juno 

E ora la prospettiva non cambia più, senza eccezioni e nulla di sospetto è visibile nel debug.

Non ho trovato alcuna segnalazione di errore.

C'è una spiegazione? Una soluzione?

risposta

6

Ho incontrato anche questo problema. Per quanto posso dire, si tratta di una regressione in Juno (4.2.0). Ho usato il debugger per passare la chiamata a showPerspective(). In nessun momento è stato fatto alcun tentativo esplicito di cambiare realmente la prospettiva. Forse manca un listener di eventi interno oppure la porta di showPerspective() nel nuovo framework non è completa.

come un work-around, il seguente codice modificato con successo prospettive per me:

IWorkbenchWindow window = getViewSite().getWorkbenchWindow(); 
IPerspectiveRegistry registry = workbench.getPerspectiveRegistry(); 
IWorkbenchPage page = window.getActivePage(); 
page.setPerspective(registry.findPerspectiveWithId(PRODUCT_PERSPECTIVE_ID)); 

A seconda del contesto in cui sono fatte queste chiamate, si potrebbe desiderare di null-guardia alcune di queste chiamate, o controlla Workbench.isClosing() per sicurezza.

+0

Grazie. Non è la soluzione che ho scelto per il mio programma, ho fatto ciò che è scritto nella mia risposta, visto che Juno è troppo buggato e brutto per entrare in produzione oggi. Ma la tua risposta sembra buona e potrebbe essere utile per gli altri quindi finalmente la accetto :) –

+2

@dystroy Grazie per l'accettazione. Sono giunto alla tua stessa conclusione: le versioni 4.x sono ancora troppo buggy. – WReach

1

Ecco una risposta che mira a chiarire e risolvere il mio problema:

Utilizzando l'IDE Eclipse 4, creare un'applicazione RCP sviluppato prima di Eclipse 4, integrando Java 7 caratteristiche e compatibile con Windows 32 bit. E naturalmente essere in grado di cambiare prospettiva.

Questa risposta non risolve il problema di chi vorrebbe cambiare prospettiva in un'applicazione RCP E utilizzare le funzionalità o l'aspetto della nuova piattaforma Eclipse 4 (da non confondere con l'IDE di Eclipse 4). Ma io non lo consiglio, almeno per una vecchia applicazione (che si sviluppa su Eclipse 3), dal momento che:

  • che è così lento che rende l'applicazione a malapena utilizzabile
  • ci sono numerosi problemi grafici
  • ci sono insetti, tra i quali quello relativo alla prospettiva passare

per questi 3 punti, non posso dire se è dovuto alla piattaforma Eclipse 4 o lo strato di compatibilità Eclipse 3. Spero che nuove applicazioni sviluppate appositamente per la nuova piattaforma Eclipse 4 funzioneranno correttamente.

Quindi la mia soluzione era definire un target Eclipse 3 e usarlo per la build.

Ecco la procedura completa:

  1. Avere il JDK 7 installato (versione 32bit)
  2. installare Eclipse 3.7 (versione 32bit)
  3. installare Eclipse 4 (versione 32bit)
  4. lancio di Eclipse 4 e importare i progetti necessari
  5. Vai a Finestra/Preferenze/Sviluppo plug-in/Piattaforma target
  6. Fare clic su "Aggiungi", quindi su "Niente"
  7. Fare clic su "Aggiungi", quindi su "Installazione" e selezionare Eclipse 3.7 directory
  8. Una volta che il vostro target creato, selezionarlo (ancora in Window/Preferences/plug-in per lo sviluppo/Piattaforma di destinazione)

Ora, nella vostra .product, il "Eclipse prodotto Esportazione guidata" costruirà un Eclipse 3 eseguibile.

note pratiche:

  • "pulire tutti" non era abbastanza e mi sono dovuto fermare/riavviare Eclipse per farlo funzionare dopo la selezione del target
  • il processo di installazione cancellati alcuni sui miei .product campi. Ho dovuto reimpostare l'ID e verificare "Il prodotto include gli artefatti nativi laucher"
2

Questo è il bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=395084 e risolto per Eclipse Luna, la cui uscita è prevista per giugno.

+0

+1 Grazie. Non cambierò l'accettazione ma è interessante. –

+0

Nessun problema. In realtà sto usando la soluzione qui fornita perché Luna non è ancora stata ufficialmente rilasciata e l'utilizzo di altri bug. –