es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo manejar la selección de elementos de menú en la clase ExtensionContributionFactory.

Estoy tratando de agregar dinámicamente elementos de menú al menú contextual. Tengo una clase que extiende ExtensionContributionFactory. Estoy utilizando CompoundContributionItem para agregar elementos de menú. Pero mientras agrego estos elementos de menú, necesito verificar algunas condiciones del objeto para el cual se llamó este menú contextual.
Por ejemplo, si el usuario hace clic derecho en una fila de la tabla, necesito ese objeto para procesarlo más y decidir si mostrar o no los elementos del menú. ¿Cómo puedo lograr esto?
Editar: cambié CompoundContributionFactory a CompoundContributionItem

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr esto, necesitas usar el ISelectionService para obtener el objeto seleccionado antes de agregar elementos de menú.

    Los pasos a seguir son los siguientes:

    1. En tu clase que extiende la ExtensionContributionFactory, sobrescribe el método createContributionItems().
    2. Crea una instancia de CompoundContributionItem.

    3. Obtén la selección del ISelectionService usando el siguiente código:

      ISelectionService selectionService = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService();
      
      ISelection selection = selectionService.getSelection();
      

    4. A partir de la selección, obtén el objeto en el que se hizo clic derecho usando el siguiente código:
      if (selection instanceof StructuredSelection) {
         StructuredSelection sSelection = (StructuredSelection) selection;
         Object firstElement = sSelection.getFirstElement();
         //Hacer más procesamiento aquí
      }
      
    5. Basado en el objeto obtenido, puedes decidir si agregar o no los elementos de menú.
    6. Agrega los elementos de menú al CompoundContributionItem.

    7. Retorna el CompoundContributionItem.

    Con estos pasos, deberías ser capaz de agregar dinámicamente elementos de menú al menú contextual, mientras verificas las condiciones del objeto para el cual se llamó el menú contextual.

Comments are closed.