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í.
(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í.
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 ModeledPageLayout
implementació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 stackView
API no admite comodines (mientras que otros addView
sí 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
- Eclipse RCP - Vista abierta en la carpeta Editor
- Eclipse RCP - ¿Apilando una vista con el área del editor?
- Perspectiva de Eclipse personalizada, con vista inicialmente invisible apilada en el área del editor
- Pregunta de Google, respuesta de Lars
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í.