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

106

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

Dicho esto, sería bueno encontrar una forma programática e4 de apilar estas desagradables vistas 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í.

Ver en la carpeta del editor

(foto robada de esta pregunta )


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

Cree una extensión de perspectiva y agregue cada vista posible a esa extensión, con una pila de relaciones sobre org.eclipse.ui.editorss relativa . Esto es un poco inconveniente si tiene demasiadas vistas esperando para ser abiertas y si el proyecto escala rápidamente. También noté que los ID de vista comodín no funcionan aquí.

SS del plugin.xml con extensiones de perspectiva

Si tiene tiempo para agregar cada vista posible a la extensión de perspectiva, funcionará. Aunque, SI abre una vista que no se agrega aquí (es decir, se abre en una carpeta diferente), entonces cada vista abierta subsiguiente se abrirá en la carpeta anterior, y NO en el área del editor (solicite 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 perspectivas

En el IPerspectiveFactory, tenemos acceso al IPageLayout, que resulta ser org.eclipse.ui.internal.e4.compatibility.ModeledPageLayout(cosas de e4).

Ahora, esta ModeledPageLayoutimplementación es razonable, pero tampoco documentación y API públicas extrañas. Este 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 se abre una vista en otro lugar, el código anterior se vuelve inútil.

Curiosamente, la stackViewAPI no admite comodines (mientras que otros addViewsí lo hacen).


2.3) Posible solución n. ° 3: ¡Yaaay!

Tengo muchas perspectivas y muchas carpetas diferentes en cada una. Todo está colocado con precisión.

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 quedarían 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í.

GGrec
fuente
Creo que es muy poco probable que esto se pueda hacer cuando se incluye el código de compatibilidad 3.x. Es posible que pueda colocar una vista en el área del editor utilizando las API e4, pero espero que eso confunda el código de compatibilidad.
greg-449
1
Si no utiliza ningún editor, simplemente minimice el área compartida y diseñe el diseño como desee.
bebbo
avance a una versión más reciente en la que esto funcione de inmediato.
bebbo
@bebbo Yo uso editores y no puedo mover todo a e4 a la vez. Software empresarial. :-)
GGrec

Respuestas:

1

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


fuente
cualquier sugerencia con pripr answer podría escribirse como un comentario en lugar de una nueva respuesta.
Mahalakshmi