# Command in Toolbar aktiv wenn View nicht aktiv



## Miriam84 (11. Okt 2009)

hallo,

ich habe eine Perspective mit 3 Views.
In einer davon befindet sich eine Tabelle mit Personenobjekten
Wenn die view und ein element in der tabelle selektiert ist, soll ein bestimmtes command, welches in der toolbar angezeigt wir, enabled werden.

Dies wollte ich mit einem handler machen. Ich habe eine activewhen Bedingung eingefügt, welche den activen Workbenchpart prüft und dann eine enabledWhen bedingung, welche prüft ob genau ein element selektiert ist.

Das problem ist das. das command immer dann aktiviert ist, wenn eine andere view aktiv ist.

Sieht einer von euch einen fehler. Oder macht man das anders.

[XML]<extension
         point="org.eclipse.ui.handlers">
      <handler
            class="de.rcp.command.AddPerson"
            commandId="de.rcp.addPerson">
         <activeWhen>
            <with
                  variable="activePartId">
               <equals
                     value="de.rcp.PersonTreeView">
               </equals>
            </with>
         </activeWhen>
         <enabledWhen>
            <with
                  variable="selection">
               <instanceof
                     value="de.rcp.model.Person">
               </instanceof>
            </with>
         </enabledWhen>
      </handler>[/XML]


----------



## tobiash (11. Okt 2009)

Hallo,

Kann es sein dass es einen anderen Handler gibt der aktiviert wird, ist evtl versehentlich etwas als Default-Handler beim Command eingetragen?

Außerdem sieht deine enabledWhen-Bedingung falsch aus, es sollte
[XML]
         <enabledWhen>
            <with
                  variable="selection">
               <iterate>

               <instanceof
                     value="de.rcp.model.Person">
               </instanceof>

               </iterate>
            </with>
         </enabledWhen>
[/XML]
heißen da die Selection an sich kein Person sein wird sondern 0-* Persons enthält. Das wird dazu führen dass dein Handler momentan den Command immer deaktiviert sobald seine activeWhen-Bedingung erfüllt wird, also das Fenster aktiv ist.
Wenn ein anderes Fenster aktiv ist wird vermutlich ein anderer Handler im Spiel sein.

Viele Grüße,
Tobias


----------



## Miriam84 (12. Okt 2009)

Danke genau das waren meine Fehler. Aber jetzt gehts. Klasse :applaus:


----------

