program - java project eclipse
Perspectiva personalizada de Eclipse, con vista inicialmente invisible apilada en el área del editor (2)
Obtuve una perspecitve personalizada con un área de editor declarada en plugin.xml solamente. Además, obtuve una vista personalizada, que se abre programáticamente. Quiero apilar esta vista con el área del editor. Si lo configuro en la extensión de perspectiva como inicialmente visible, todo funciona bien.
<view
id="my.viewID"
minimized="false"
relationship="stack"
relative="org.eclipse.ui.editorss"
visible="false">
</view>
Sin embargo, si configuro visible="false"
y uso el siguiente código para abrirlo programáticamente, siempre aparece en el área inferior apilada con ConsoleView.
IViewPart viewPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
.showView("my.viewID", "secondID", IWorkbenchPage.VIEW_ACTIVATE);
¿Alguien sabe cómo tener una vista inicialmente invisible apilada en el área del editor cuando se abre programáticamente?
Ya probé las recomendaciones dadas en este hilo, pero sin éxito: Eclipse RCP: la extensión de perspectiva relativa del campo de visión no funciona
Algunas veces no puedes imaginarte qué tan simples pueden ser las soluciones:
Simplemente agregando :*
al final de la vista id en el plugin.xml resolvió este problema:
<view
id="my.viewID:*"
minimized="false"
relationship="stack"
relative="org.eclipse.ui.editorss"
visible="false">
</view>
Increíble cuántas veces encuentras gente diciendo que esto no sería posible en absoluto ...
Bueno, he leído la mayoría de las cosas sobre la colocación de una vista sobre el área del editor, y ninguna funcionó. La respuesta 1 anterior hace que el plugin.xml tenga advertencias. En Eclipse Luna, esto funciona sin embargo cuando se inicializa su perspectiva:
public void createInitialLayout(IPageLayout layout) {
if ( layout instanceof org.eclipse.ui.internal.e4.compatibility.ModeledPageLayout ) {
org.eclipse.ui.internal.e4.compatibility.ModeledPageLayout layout4=(org.eclipse.ui.internal.e4.compatibility.ModeledPageLayout)layout;
layout4.stackView(ID+":*",layout.getEditorArea(),false);
}
...
El código anterior agrega una vista con "ID" que es una vista múltiple, agregada a la pila de editores ocultos (el último parámetro es falso = "no visible").
También puede funcionar con otras versiones de Eclipse, pero no lo he probado.
¡Buena suerte!