# Eclipse Keybinding Context



## nilspils (10. Sep 2009)

Hi Java und Eclipse Freunde,

ich bin neu hier. Weil ich echt nicht weiter weiss, wende ich mich hoffnungsvoll an Euch. 
Für meine Plattform möchte ich Tastaturkürzel an diverse Actions binden. Das ist soweit auch alles recht easy. Nur mit den Context (also org.eclipse.ui.context) klappts irgendwie nicht so wie es soll.

Ich habe ein paar Eclipse UI basierte Commands, die ich an, die von mir gewünschten Keys binde. Als Context habe ich org.eclipse.ui.contexts.window gewählt. Das funktioniert so weit auch prima. Auch wenn keine Perspektiven geöffnet sind. Denn da liegt mein Problem:
Für meine eigene Actions, die mittels org.eclipse.ui.commands an ein org.eclipse.ui.binding Key binden kann (als contextId auch org.eclipse.ui.contexts.window gewählt) funktioniert die Tastaturkürzel nur wenn ich eine Perspektive geöffnet habe. Ich will aber, dass die Aktion mir ohne geöffnete Perspektive zur Verfügung steht!!!

Kennt sich da jemand mit aus, und kann mir "glücklicherweise" weiterhelfen?

Hier noch ein wenig Code wie das in meiner plugin.xml aussieht (soweit alles richtig meines Erachtens):

```
<plugin>
    <extension
         point="org.eclipse.ui.commands">
      	<!-- Hier org.eclipse.ui commands -->
      <category
            description="%category.tabs.description"
            id="com.abc.bindings.category.tabs"
            name="%category.tabs.name">
      </category>
      <command
            categoryId="com.abc.bindings.category.tabs"
            id="org.eclipse.ui.window.nextPerspective"
            name="%command.nextTab.name">
      </command>
      <command
            categoryId="com.abc.bindings.category.tabs"
            id="org.eclipse.ui.window.previousPerspective"
            name="%command.previousTab.name">
      </command>
      	<!-- Hier meine eigene commands -->
      <command
            categoryId="com.abc.bindings.category.tabs"
            id="com.abc.bindings.test"
            name="MEIN EIGENER KEY">
      </command>
   </extension>
   <extension
         point="org.eclipse.ui.bindings">
	<!-- Hier meine Scheme -->
      <scheme
            description="%keyConfiguration.abc.description"
            id="com.abc.bindings.scheme"
            name="%keyConfiguration.abc.name"
            parentId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </scheme>
	<!-- Hier meine Key Bindings -->
      <key
            commandId="org.eclipse.ui.window.nextPerspective"
            contextId="org.eclipse.ui.contexts.window"
            schemeId="com.abc.bindings.scheme"
            sequence="M1+TAB">
      </key>
      <key
            commandId="org.eclipse.ui.window.previousPerspective"
            contextId="org.eclipse.ui.contexts.window"
            schemeId="com.abc.bindings.scheme"
            sequence="M1+M2+TAB">
      </key>
      <key
            commandId="com.abc.bindings.test"
            contextId="org.eclipse.ui.contexts.dialogAndWindow"
            schemeId="com.abc.bindings.scheme"
            sequence="M1+Ä">
      </key>
   </extension>
   <extension
         point="org.eclipse.ui.actionSets">
      <actionSet
            id="com.abc.bindings.actionSet1"
            label="Meine Test Actions">
         <action
               class="com.abc.bindings.TestAction"
               definitionId="com.abc.bindings.test"
               id="com.abc.bindings.action1"
               label="TestAction">
         </action>
      </actionSet>
   </extension>
</plugin>
```


----------



## Wildcard (10. Sep 2009)

Ich verstehe die Frage insofern nicht, das es den Zustand 'keine Perspektive offen' doch gar nicht gibt. Es ist immer eine Perspektive aktiv.


----------



## nilspils (11. Sep 2009)

Hmmm... da hast Du natürlich Recht. Trotzdem funktioniert mein eigener KeyBinding nicht direkt nach den Eclipse-Anwendungsstart, sondern erst, wenn ich eine meiner Perspectiven (mit einer View) geöffnet habe. Ich weiss nicht wo da der Hund begraben ist? Liegts daran, dass eine View geöffnet sein muss?

Vielleicht nochmal die Definition abklappern, was man unter org.eclipse.ui.contexts.window versteht: Ist damit das Eclipse-Window gemeint? Eigentlich sollte mir der Key doch dann immer zur Verfügung stehen, oder?


----------



## Gonzo17 (11. Sep 2009)

Wie ist es denn, wenn du danach alle deine Views wieder schliesst und Eclipse verwendest, wie du es sonst auch tust? Ist es dann verfügbar oder nicht?


----------



## nilspils (11. Sep 2009)

Nein, wenn ich alle meine Views schliesse, geht die Key-Kombi nicht mehr. Allerdings ist das nur so bei Commands, die auf selbst geschriebene Actions verweisen (siehe com.abc.bindings.test). 
Eclipse Commands (wie z.B. org.eclipse.ui.window.nextPerspective) gehen mit meiner key-Kombi immer, selbst wenn alle Views geschlossen sind.

Schon komisch oder?


----------

