Eclipse RCP - Apri una vista nell'area dell'editor (ibrido 3.8 / e4)


106

Sto lavorando su un ibrido 3.8-e4 (cioè abbiamo le dipendenze Luna, ma non usiamo ancora Application.e4xmi ). Quindi fondamentalmente stiamo eseguendo il livello compatto.

Detto questo, sarebbe bello trovare un modo programmatico e4 per impilare queste brutte visualizzazioni nella cartella dell'editor.


1.) Problema

Voglio posizionare una cartella della vista generica nell'area dell'editor, in modo che ogni vista aperta in fase di esecuzione venga aperta lì.

Visualizza nella cartella dell'editor

(foto rubata da questa domanda )


2.1) Possibile correzione n. 1: utilizzo di plugin.xml

Crea un'estensione in prospettiva e aggiungi ogni possibile vista a tale estensione, con lo stack delle relazioni sui relativi org.eclipse.ui.editorss . Questo è un po 'scomodo se hai troppe viste che aspettano di essere aperte e se il progetto si ridimensiona rapidamente. Ho anche notato che gli ID di visualizzazione con caratteri jolly non funzionano qui.

SS del plugin.xml con estensioni prospettiche

Se trovi il tempo di aggiungere ogni possibile vista all'estensione della prospettiva, funzionerebbe. Sebbene, SE apri una vista che non è stata aggiunta qui (cioè: si apre in una cartella diversa), allora ogni vista aperta successiva verrà aperta nella cartella precedente e NON nell'area dell'editor (chiedi ulteriori spiegazioni se non lo fai prendilo).


2.2) Possibile correzione n. 2: utilizzo del codice nella fabbrica delle prospettive

In IPerspectiveFactory, abbiamo accesso a IPageLayout, che sembra essere org.eclipse.ui.internal.e4.compatibility.ModeledPageLayout(e4 stuff).

Ora, questa ModeledPageLayoutimplementazione è ragionevole, ma anche senza documentazione e strane API pubbliche. Questo dà la possibilità di impilare una vista su qualsiasi altro parente

modeledPageLayout.stackView("newView0", IPageLayout.ID_EDITOR_AREA);

Questa sarebbe la versione programmatica di 2.1 . Inoltre, lo stesso problema appare qui. Se una vista viene aperta da qualche altra parte, il codice sopra diventa inutile.

Abbastanza interessante, l' stackViewAPI non supporta i caratteri jolly (mentre altri come lo addViewfanno).


2.3) Possibile correzione n. 3: soluzioni alternative yaaay!

Ho molte prospettive e molte cartelle diverse in ognuna. Tutto è posizionato con precisione.

Poiché Eclipse offre le API per ottenere tutti gli ID di visualizzazione da qualsiasi punto del sistema, voglio fare quanto segue, in base alla prospettiva: ogni ID di visualizzazione che non è stato aggiunto a una cartella specifica verrà aggiunto all'area dell'editor (cioè la cartella dell'editor , stack dell'editor) .

Questa sarebbe la mia ultima risorsa, a meno che qualcuno non offra una soluzione più conveniente e che fa risparmiare tempo.

Ricorda, un'alternativa programmatica a e4 è più flessibile!


3.) Domande correlate

Questi sarebbero stati resi deprecati per la versione e4.


4.) Bug correlato su Bugzilla di Eclipse:

Questo bug recente aperto da me ha un allegato con un piccolo SSCCE. I passaggi per riprodurlo sono descritti in questo commento , quindi non li copierò e incollerò qui.


Penso che sia molto improbabile che ciò possa essere fatto quando è incluso il codice di compatibilità 3.x. Potresti essere in grado di posizionare una vista nell'area dell'editor utilizzando le API e4, ma mi aspetto che questo confonda il codice di compatibilità.
greg-449

1
Se non utilizzi alcun editor, riduci semplicemente l'area condivisa e progetta il layout come desideri.
bebbo

passare a una versione più recente in cui funziona immediatamente.
bebbo

@bebbo Uso gli editor e non riesco a spostare l'intera cosa su e4 in una volta. Software aziendale. :-)
GGrec

Risposte:


1

Ti suggerisco di andare con Possible fix n.3, poiché penso che non ci sia un metodo più veloce per farlo.


qualsiasi suggerimento con risposta pripr potrebbe essere scritto come un commento invece di una nuova risposta.
Mahalakshmi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.