2009-09-12 16 views
6

Frecuentemente tuve este problema y no encontré una solución aún: cada vez que escribo una nueva aplicación basada en Eclipse RCP e incluyo plugins desde la plataforma Eclipse, 'heredo' las contribuciones de UI de algunos de esos complementosDeshabilitar las contribuciones de complementos en Eclipse RCP Application

La mayoría de estas contribuciones (entradas del menú, atajos de teclado, páginas de propiedades) son útiles, pero a veces prefiero deshabilitar algunas de estas contribuciones, simplemente porque realmente no las necesito y pueden confundir a los usuarios.

¿Alguien conoce la forma oficial o práctica de deshabilitar/prohibir las contribuciones seleccionadas en las aplicaciones Eclipse RCP?

+0

No creo que removeContributionFactory() sea para deshabilitar la contribución * all *, sino que es un mecanismo de '' deshacerse'' utilizado para anular el registro de una contribución de view/menu, y propongo usar eso para eliminar explícitamente contribuciones provenientes de * otros * complementos. – VonC

+0

Así es: a/no * exactamente * lo que está buscando, b/no es fácil, ya que tiene que detectar esas contribuciones y eliminarlas. Pero esto es lo que tengo hasta ahora. – VonC

+0

volver a leer su comentario: no, no está desactivando la contribución * all * (de * todos * otros complementos), pero podría terminar deshabilitando todas las contribuciones de un plugin externo determinado. – VonC

Respuesta

3

El único método que se acerca a lo que sería la siguiente:

IMenuService::removeContributionFactory()

Paul Webster ha estado llamando para una IMenuService::addOverride() para cambiar la visibilidad del menú, la prevención de cualquier contribución, pero esa idea no tiene sido integrado aún

Puede ver un ejemplo de eliminación de una contribución en esta clase org.eclipse.ui.tests.menus.MenuBuilder;

public static void removeMenuContribution() { 
    if (!PlatformUI.isWorkbenchRunning()) { 
     return; 
    } 
    IMenuService menuService = (IMenuService) PlatformUI.getWorkbench() 
      .getService(IMenuService.class); 
    if (menuService==null) { 
     return; 
    } 
    menuService.removeContributionFactory(viewMenuAddition); 
    viewMenuAddition = null; 
    menuService.removeContributionFactory(viewToolbarAddition); 
    viewMenuAddition = null; 
} 
+0

¡Gracias! ¿Pero lo entiendo bien? Deshabilito * todas las contribuciones de esta manera? ¿No hay forma de desactivar las contribuciones individuales, tal vez identificadas por sus identificaciones? –

0

transformaciones Equinox también se pueden utilizar para suministrar transformaciones XLST que eliminan las contribuciones de interfaz de usuario no deseados.

Cuestiones relacionadas