# Keybinding conflicts occurred



## @x.l (5. Mai 2010)

Hallo zusammen,

ich möchte in meiner RCP-Anwendung eine individuelle Behandlung für das org.eclipse.ui.file.refresh-Command.

Doch nun erhalte ich beim Start folgende Meldung:

```
!ENTRY org.eclipse.jface 2 0 2010-05-05 10:47:16.267
!MESSAGE Keybinding conflicts occurred.  They may interfere with normal accelerator operation.
!SUBENTRY 1 org.eclipse.jface 2 0 2010-05-05 10:47:16.267
!MESSAGE A conflict occurred for F5:
Binding(F5,
	ParameterizedCommand(Command(org.eclipse.ui.file.refresh,Aktualisieren,
		Ausgewählte Elemente aktualisieren,
		Category(org.eclipse.ui.category.file,Datei,null,true),
		,
		,,true),null),
	de.myapp.keybindings,
	org.eclipse.ui.contexts.window,,,system)
Binding(F5,
	ParameterizedCommand(Command(org.eclipse.ui.file.refresh,Aktualisieren,
		Ausgewählte Elemente aktualisieren,
		Category(org.eclipse.ui.category.file,Datei,null,true),
		,
		,,true),null),
	de.myapp.keybindings,
	org.eclipse.ui.contexts.window,,,system)
```

Wenn ich jetzt noch F5 drücke erscheint zuerst eine Liste, aus der ich eine Aktion auswählen muss: 


Habt ihr vielleicht eine Idee, wie ich das Problem lösen könnte? Möchte auch nicht diese "Aktion-Auswahl-Liste" haben.

Gruß
   @x.l

--> Wenn noch weitere Infos benötigt werden, sagt Bescheid!


----------



## Wildcard (5. Mai 2010)

Du hast zwei Bindings definiert die sich überschneiden. Du musst also dafür sorgen das nur eines gleichzeitig aktiv sein kann. Kannst du den Auszug aus der plugin.xml posten damit ich sehen kann wie du die Commands/Handler/Bindings zur Zeit definiert hast?


----------



## @x.l (6. Mai 2010)

Wildcard hat gesagt.:


> Du hast zwei Bindings definiert die sich überschneiden.



Das hat es auch gelöst. Hatte explizit nochmal F5 als Refresh-Button definiert:


```
<key
            commandId="org.eclipse.ui.file.refresh"
            schemeId="de.myapp.keybindings"
            sequence="F5">
      </key>
```

Ich hatte gedacht, dass ich für mein Schema alle Shortcuts festlegen muss.

Doch das war völlig überflüssig. Es reicht aus, einfach einen Handler für das "org.eclipse.ui.file.refresh"-Command bereit zu stellen:


```
<handler
            class="de.myapp.handler.RefreshHandler"
            commandId="org.eclipse.ui.file.refresh">
      </handler>
```

Danke!

BTW: Wo findet denn dann das Binding zwischen dem Refresh-Command und F5 statt? So ganz klar ist mir das nicht...


----------



## Wildcard (6. Mai 2010)

> BTW: Wo findet denn dann das Binding zwischen dem Refresh-Command und F5 statt? So ganz klar ist mir das nicht...


Das macht die Platform. Je nach Kontext ist eine Anzahl n Bindings definiert. Diese Bindings beziehen sich auf eine Command ID. Wird ein Binding aktiviert (Key gedrückt) schaut die Platform ob für den aktuellen Context (aktive part, selection, ...) einer der Handler für dieses Command aktiv ist. Wenn ja, wird der Handler ausgeführt.


----------

