5 votes

Gestionnaires conflictuels d'Eclipse

En développant un plugin eclipse, j'ai créé une commande dans les extensions Manifest avec l'id crtc_v4.session avec un handler par défaut crtc_v4.handlers.StartSession, j'ai ajouté un handler dans le manifest pour cette commande, ce handler active la commande selon la variable crtc_v4.sessionvar.

Le problème qui apparaît sur la console est :

!MESSAGE Conflicting handlers for crtc_v4.session:  {crtc_v4.handlers.StartSession@98bc5c} vs {crtc_v4.handlers.StartSession@1265d09}

Mais cela ne bloque pas l'exécution du plugin. Je me demande quelle est la solution à ce problème, et s'il affecte les performances de mon plugin en général ?

Edit :

Le snippet qui définit la commande :

 <extension
     point="org.eclipse.ui.menus">
  <menuContribution
        allPopups="false"
        locationURI="toolbar:org.eclipse.ui.main.toolbar">
     <toolbar
           id="crtc_v5.crtctoolbar">
        <command
              commandId="crtc_v5.session"
              icon="icons/neutral.png"
              label="Start Session"
              style="push">
        </command>
     </toolbar>
  </menuContribution>

Le snippet qui définit le handler :

 </extension>
      <command
        defaultHandler="crtc_v5.handlers.StartSession"
        id="crtc_v5.session"
        name="session">
  </command>
 </extension>

Et voici l'habilitation contre sessionvar :

  <extension
     point="org.eclipse.ui.handlers">
  <handler
        class="crtc_v5.handlers.StartSession"
        commandId="crtc_v5.session">
     <enabledWhen>
        <with
              variable="crtc_v5.sessionvar">
           <equals
                 value="LOGGEDIN">
           </equals>
        </with>
     </enabledWhen>
  </handler>

9voto

Paul Webster Points 8500

Vous avez défini un gestionnaire par défaut dans la commande et un autre dans la section org.eclipse.ui.handlers extension. Si vous voulez utiliser enabledWhen il suffit de retirer le defaultHandler (puisque les deux instances fournissent le même gestionnaire, crtc_v5.handlers.StartSession ).

Si vous souhaitez que différents gestionnaires se chargent du comportement de votre commande en fonction de l'état de l'application, vous pouvez utiliser les éléments suivants activeWhen dans le org.eclipse.ui.handlers définition, mais cela ne semble pas être le cas ici.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X