2010-11-29 39 views
0

J'ai ce problème que je n'arrive pas à résoudre. Nous avons deux perspectives qui contiennent la même vue. Cette vue a un menu qui est activé basé sur instanceof. Si je sélectionne l'élément dans l'arborescence et que je clique avec le bouton droit de la souris, le menu est activé car l'instanceof est qualifiée. Si je change ensuite à l'autre perspective qui a la même vue, la sélection dans l'arbre ne change pas, mais si je clique droit sur le même élément qui est sélectionné, le menu n'est plus activé. Je dois cliquer sur la vue et la retourner pour activer à nouveau le menu. Voici comment j'ai défini le fichier plugin.xml. Je pense que le plugin.xml est bien, car il fonctionne très bien quand il ne change pas la perspective. J'ai juste besoin de comprendre pourquoi changer de perspective actualise le menu, mais ne revérifie pas. De plus, si je passe à une perspective qui ne contient pas cette vue, le menu est activé lorsque je reviens.App RCP: Désactivation du menu lors de la modification de la perspective avec la même vue

<extension 

    point="org.eclipse.ui.commands"> 

    <command 

     id="com.cerner.automation.touchstone.workflow.Modify" 

     name="%com.cerner.automation.touchstone.workflow.Modify.label"> 

    </command> 

<extension 

     point="org.eclipse.ui.handlers"> 

    <handler 



     commandId="com.cerner.automation.touchstone.workflow.Modify"> 

     <enabledWhen> 

     <with 

       variable="selection"> 

      <iterate 

        ifEmpty="false" 

        operator="and"> 

       <instanceof 

        value="com.cerner.automation.touchstone.model.ModuleItem"> 

       </instanceof> 

      </iterate> 

     </with> 

     </enabledWhen> 

    </handler> 

</extension> 

<extension 

    point="org.eclipse.ui.menus"> 

    <menuContribution 

     locationURI="popup:com.cerner.automation.touchstone.views.ModuleView"> 

    <command 

      commandId="com.cerner.automation.touchstone.workflow.Modify" 

      icon="icons/modify.png" 

      label="%com.cerner.automation.touchstone.workflow.Modify.label" 

      style="push"> 

    </command> 

    </menuContribution> 

</extension> 

Répondre

1

Il semble que le problème est dans l'élément parce que la sélection est le traitement pour tous les fournisseurs de sélection en perspective. Lorsque vous changez de sélection de perspective, l'élément de menu devient désactivé. J'ai utilisé activePartID valide pour limiter le nombre de fournisseurs de sélection à une vue. Exemple fourni:

<handler 
      class="ru.griffo.core.handlers.EditBOHandler" 
      commandId="ru.scops.applications.edit"> 
     <activeWhen> 
      <and> 
       <with 
        variable="activePartId"> 
        <equals 
         value="ru.scops.applications.applications"> 
        </equals> 
       </with> 
       <count 
        value="+"> 
       </count> 
      <with 
       variable="selection"> 
       <iterate 
        ifEmpty="false" 
        operator="and"> 
       <not> 
        <test 
          property="ru.griffo.core.ui.bo.super" 
          value="griffo.state.State"> 
        </test> 
       </not> 
       </iterate> 
      </with> 
     </and> 
    </activeWhen> 
    </handler> 
+0

Merci, mais cela n'a rien changé. Toujours avoir le même problème. Est-ce important que ce soit la même instance de la vue dans les deux perspectives? – mdamman