java eclipse-plugin eclipse-rcp eclipse-luna e4

java - Eclipse RCP: abra una vista en el área del editor(híbrido 3.8/e4)



eclipse-plugin eclipse-rcp (1)

Sugiero que vaya con la solución posible n. ° 3, ya que creo que no hay un método más rápido para hacer esto.

Estoy trabajando en un híbrido 3.8-e4 (es decir, tenemos las dependencias de Luna, pero aún no usamos Application.e4xmi ). Así que básicamente estamos ejecutando la capa compacta.

Dicho esto, sería bueno encontrar una forma programática e4 para acumular estas vistas desagradables en la carpeta del editor.

1.) Problema

Quiero colocar una carpeta de vista genérica en el área del editor, de modo que cada vista que se abra en tiempo de ejecución se abra allí.

(foto robada de esta pregunta )

2.1) Posible solución n. ° 1: uso de plugin.xml

Cree una extensión de perspectiva y agregue cada vista posible a esa extensión, con la pila de relaciones sobre org.eclipse.ui.editorss relativo . Esto es un poco incómodo si tiene demasiadas vistas esperando que se abra, y si el proyecto se escala rápidamente. También noté que las ID de vista de comodín no funcionan aquí.

Si encuentra que es el momento de agregar cada vista posible a la extensión de perspectiva, eso funcionaría. Aunque, si abre una vista que no se agrega aquí (es decir, se abre en una carpeta diferente), cada vista abierta posterior se abrirá en la carpeta anterior, y NO en el área del editor (pregunte más explicaciones si no lo hace). Consíguelo).

2.2) Posible solución n. ° 2: uso de código en la fábrica de perspectiva

En IPerspectiveFactory , tenemos acceso a IPageLayout , que pasa a ser org.eclipse.ui.internal.e4.compatibility.ModeledPageLayout (e4 cosas).

Ahora, esta implementación de ModeledPageLayout es razonable, pero también no incluye documentación y API públicas extrañas. Esto le da la posibilidad de apilar una vista sobre cualquier otro pariente

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

Esta sería la versión programática de 2.1 . Además, el mismo problema aparece aquí. Si una vista se abre en otro lugar, el código anterior se vuelve inútil.

Bastante interesante, la API de stackView no admite comodines (mientras que otros como addView do).

2.3) Posible solución n. ° 3: ¡Soluciones temporales yaaay!

Tengo muchas perspectivas y muchas carpetas diferentes en cada una. Todo está precisamente ubicado.

Dado que Eclipse ofrece las API para obtener todas las ID de vista de todas partes del sistema, quiero hacer lo siguiente, por perspectiva: cada ID de vista que no se agregó a una carpeta específica se agregará al área del editor (es decir, la carpeta del editor) , pila de editor) .

Este sería mi último recurso, a menos que alguien ofrezca una solución más conveniente y que ahorre tiempo.

Recuerde, ¡una alternativa programática e4 es más flexible!

3.) Preguntas relacionadas

Estos se considerarán obsoletos para la versión e4.

4.) Error relacionado en Bugzilla de Eclipse:

Este error reciente abierto por mí mismo tiene un archivo adjunto con un pequeño SSCCE. Los pasos para reproducir esto se describen en este comentario , así que no voy a copiarlos y pegarlos aquí.