2012-07-12 15 views
6

Ho creato un menu a comparsa con una voce di menu, desidero attivarlo solo quando faccio clic con il pulsante destro del mouse su un elemento di un determinato tipo di classe, altrimenti disabilitarlo.Abilita/disabilita la voce di menu nel plug-in Eclipse

Come posso ottenere questo risultato?

risposta

6

È possibile aggiungere un gestore che utilizza attivoQuando e associarlo all'ID comando di quel menu.

Ecco un gestore che fa un comando attiva solo quando la selezione corrente non è vuota, e la selezione è un elemento che può essere adattato ad un oggetto di tipo Widget:

<extension point="org.eclipse.ui.handlers"> 
    <handler class="com.myproject.handlers.ExportWidgetHandler" 
      commandId="com.myproject.commands.exportWidget"> 
    <activeWhen> 
     <with variable="selection"> 
      <iterate ifEmpty="false" operator="and"> 
       <adapt type="com.myproject.objects.Widget"/> 
      </iterate> 
     </with> 
    </activeWhen> 
    </handler> 
</extension> 
+0

ciò fa widget di significa qui? è la classe che voglio attivare il menu sulla selezione del suo oggetto? – becks

+1

Questo è corretto. Potresti avere un ** TableViewer ** pieno di ** Widget **; quando uno di questi è selezionato, il tuo menu sarà attivo. Potresti anche avere un ** TableViewer ** pieno di oggetti ** WidgetAndDongle ** e una classe ** WidgetAndDongleToWidgetAdapter ** registrata per il tuo plug-in che adatta gli oggetti ** WidgetAndDongle ** estraendo e restituendo solo il ** Widget * * parte. In tal caso il menu sarebbe anche attivo, in quanto l'elemento selezionato (a ** WidgetAndDongle **) potrebbe essere adattato a un ** Widget **. – stracka