# IAction und KeyBinding



## dzim (14. Sep 2009)

Hi @all

Bereits seit längerem arbeite ich mit KeyBindings - ohe die würde eine Applikation ja mitunter auch recht sinnfrei sein.
Ich habe Auch in Bezug auf meine Arbeit mit Eclipse Forms versucht der IAction ein KeyBinding zu geben. 

Bei mir soll dieses Keybinding nicht in irgendwelche Menüs, sondern nur innerhalb des Editor gültig sein, der die entsprechende Action unter anderem seiner Toolbar hinzufügt.

setAccelerator(int) wird nicht mehr empfohlen, aber die in der JavaDoc genannten Klassen sind teilweise schon deprecated und die finalre Referenz, die Site aus dem Editor hat die genannten Methoden nicht...

Wie also kann ich ein nur innerhalb des Editor gültiges KeyBinding erstellen?
Nur noch über die Extensions?

Danke wieder einmal für eure Hilfe!

Daniel


----------



## vogella (27. Sep 2009)

Hallo Daniel,

ich glaube das funktioniert bei Commands "automatisch". Probier es doch mal aus. Commands und Keybindings sind hier beschrieben.

Eclipse Commands with Eclipse 3.5 (Galileo) - Tutorial


----------



## dzim (27. Sep 2009)

Hi Lars,

also ich finde das Thema mittlerweile recht komplex, weil man ja mitllerweise - wieviel? vier? - massig Extensions verwalten muss - actions, commands, bindings, menus, ...

Ich wollte das ja gar nicht so extem... ich will meine IActions ja an eine Form anbinden - nicht an den ganzen EditorPart.
Aber dennoch wird mir dein Tutorial sicher weiterhelfen, da ich derzeit noch im ApplicationActionBar-dingens die erweiterbare Toolbar Programmatisch eingebaut habe und nicht komfortabler per Extensions...

In einem anderen Thread hast du geschrieben, das Actions nicht mehr verwendet werden - meinst du damit die programatische Anbindung von Actions an Toolbars/... sondern das alles nur noch über extensions läuft?

Vielen Dank jedenfalls soweit - ich hatte schon nicht mehr geglaubt, das noch jemand auf meinen Post reagiert 

Daniel


----------



## vogella (27. Sep 2009)

Hallo,

ich meine, daß Actions gar nicht mehr verwendet werden sollten, sondern nur noch Commands. Schau mal in mein Tutorial...


----------



## dzim (30. Sep 2009)

Ach so... ich glaub ich hab dich da etwas missverstanden:

Ich dachte du meinst IAction-Klassen, die man programatisch an Toolbars in einer UI anhängt, aber ich glaube du meinst die Actions aus den Extensions.
Aber wie macht man dann so was wie ActionSets, wenn man sie nicht verwendet?


----------



## Gast2 (30. Sep 2009)

hatte das gleiche problem... ist eigentlich nicht schwer, wenn man es einmal verstanden hat...
du machst command mit einer eindeutigen id... dann machst du einen handler und den kannst du aktvieren und enablen nach bestimmten conditions... danach machst einfach binding auf das command...
du machst commands und dazu handler
http://www.java-forum.org/plattformprogrammierung/88782-action-und-keybinding.html


----------



## vogella (30. Sep 2009)

Hallo dzim,

nein ich meine Commands. Actions und Commands sind zwei unterschiedliche Ansätze für das gleiche Problem. Actions sind schon älter und nicht so flexible und Commands sind besser. 

Siehe z.B. Eclipse PDE templates – Your action is my command


----------



## dzim (6. Okt 2009)

Hi Lars,

ich hab ein bisschen damit gespielt und stimme dir jetzt in Punkto verwendbarkeit zu, aber ich sehe noch ein zwei kleine Problem, die es mir bislang nicht lösen konnte und ich sehe auch dazu bisher noch keinen weg das zu umgehen.
Perspective-Customizing: Die so hinzugefügten Toolbars sind unbenannt - bei ActionSets holen sie sich den Namen aus der Extension. Im Reiter "Command Groups Availability" taucht natürlich auch kein zu (de-)aktivierendes ActionSet auf (ok, das ist logisch, aber so ist man voll und ganz auf die unbenannten "Toolbar Visibilities" und "Menu Visibilities" angewiesen, wenn man etwas aktivieren oder deaktivieren will).
Darüber hinaus ist mir noch nicht klar, wie man in "System"-Menüs, wie etwa File etwas einfügen kann, da ein eigenes "File" separat zu dem original stehen würde und ich nicht alle Menüs selbst nachbauen will (zumal einige Plugins per Default Items in bestimmte Menüs hinein schreiben...
Gibt es da auch einen Weg?

Viele Grüße,
Daniel


----------



## vogella (6. Okt 2009)

Deine erste Teilfrage verstehe ich nicht. Zum zweiten Punkt: Du kannst Einträge zum existierenden Menu hinzufügen, wenn Du die gleiche ID verwendest.


----------



## dzim (13. Okt 2009)

Hallo Lars,

vielen Dank für die Antwort! Das mit den ID's hätt ich mir auch selbst denken können - es klappt natürlich!

Mit der anderen Frage meinte ich vor allem, das im "Perspective Customizing" die Toolbars nicht benannt sind, nachdem ich sie über org.eclipse.ui.menus hinzugefügt habe. Gibt es da eine Möglichkeit, diese mit einem Namen zu versehen?

Der rest ist vermultich nicht so wichtig...

Vielen dank noch mal und Grüße,
Daniel


----------



## vogella (13. Okt 2009)

Geht bestimmt, aktuell fehlt mir aber leider die Zeit das nachzuschauen...


----------

