eclipse eclipse-plugin eclipse-rcp

Eclipse RCP: cómo obtener el menú Mostrar vista en lugar de un diálogo



eclipse-plugin eclipse-rcp (2)

He añadido a mi perspectiva org.eclipse.ui.menus

<command commandId="org.eclipse.ui.views.showView" style="pulldown"> </command>

Esto agrega el elemento Show View al menú principal, pero este elemento no es un menú (como en el menú Ventana de Eclipse). En lugar de presionarlo, muestra un cuadro de diálogo donde puedo seleccionar una vista. ¿Cómo obtengo un menú?


Tienes que crear la clase ContributionItem como a continuación:

public class MyShowViewContributionItem extends org.eclipse.ui.internal.ShowViewMenu { public MyShowViewContributionItem() { this("om.myplugin.myShowViewId"); } public MyShowViewContributionItem(String id) { super(org.eclipse.ui.PlatformUI.getWorkbench().getActiveWorkbenchWindow(), id); } }

luego en su extensión plugin.xml org.eclipse.ui.menus :

<menu label="My Show View"> <dynamic class="com.myplugin.MyShowViewContributionItem" id="com.myplugin.myShowViewId"> </dynamic> </menu>

Saludos, Max


Solo para compartir en mi experimento reciente al tratar de hacer lo mismo, lo que Max sugirió en su respuesta funcionará, pero te deja usando un código interno (lo que da como resultado una advertencia de '' Acceso desalentado '').

Otro enfoque es construir el menú a través de su asesor de barra de acciones de aplicaciones. Sin embargo, este enfoque le dejará tener que escribir código (se opone a utilizar las contribuciones del menú en la definición del complemento XML). Considere el siguiente ejemplo:

public class ApplicationActionBarAdvisor extends ActionBarAdvisor { private IContributionItem contributionOpenPerspective; private IContributionItem contributionShowView; ... protected void makeActions(IWorkbenchWindow window) { ... contributionOpenPerspective = ContributionItemFactory. PERSPECTIVES_SHORTLIST.create(window); contributionShowView = ContributionItemFactory. VIEWS_SHORTLIST.create(window); ... } protected void fillMenuBar(IMenuManager menuBar) { ... MenuManager windowMenu = new MenuManager("&Window", IWorkbenchActionConstants.M_WINDOW); menuBar.add(windowMenu); MenuManager openPerspectiveMenu = new MenuManager("&Open Perspective"); openPerspectiveMenu.add(perspectivesContribution); windowMenu.add(openPerspectiveMenu); MenuManager showViewMenu = new MenuManager("Show &View"); showViewMenu.add(viewsContribution); windowMenu.add(showViewMenu); ... } }

Una posible desventaja de este enfoque es la interacción entre los menús creados en el asesor y los menús creados por las contribuciones del menú. Como los elementos del menú del asesor se crean antes de las contribuciones del menú , se le deja ocuparse de agregar más lógica de clasificación en las contribuciones de su menú. Esto podría estar bien para la mayoría de las personas, sin embargo, se pierde la "sensación" de una estructura de menú centralizada de org.eclipse.ui.menus (incluso si la sensación es una ilusión cuando otros complementos entran en juego con sus propias contribuciones de menú).

También incluí la construcción de un menú de perspectiva; completamente, pero lo agregué si alguien intentaba realizar la misma construcción de menú con perspectivas.