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
- Eclipse RCP: vista abierta en la carpeta del Editor
- Eclipse RCP: ¿se apila una vista con el área del editor?
- Perspectiva personalizada de Eclipse, con vista inicialmente invisible apilada en el área del editor
- Pregunta de Google, respuesta de Lars
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í.