1
package org.herac.tuxguitar.gui.system.keybindings;
4
import java.util.ArrayList;
5
import java.util.Iterator;
8
import org.eclipse.swt.events.KeyEvent;
9
import org.eclipse.swt.events.KeyListener;
10
import org.eclipse.swt.widgets.Control;
11
import org.herac.tuxguitar.gui.TuxGuitar;
12
import org.herac.tuxguitar.gui.actions.Action;
13
import org.herac.tuxguitar.gui.system.keybindings.xml.KeyBindingReader;
14
import org.herac.tuxguitar.gui.system.keybindings.xml.KeyBindingWriter;
15
import org.herac.tuxguitar.gui.util.TGFileUtils;
17
public class KeyBindingActionManager {
19
private List keyBindingsActions;
20
private KeyBindingListener listener;
22
public KeyBindingActionManager(){
23
this.keyBindingsActions = new ArrayList();
28
List enabled = KeyBindingReader.getKeyBindings(getUserFileName());
29
this.keyBindingsActions.addAll( (enabled != null ? enabled : KeyBindingActionDefaults.getDefaultKeyBindings()) );
30
this.listener = new KeyBindingListener();
33
private String getUserFileName(){
34
return TGFileUtils.PATH_USER_CONFIG + File.separator + "keybindings.xml";
37
public Action getActionForKeyBinding(KeyBinding kb){
38
Action action = KeyBindingReserveds.getActionForKeyBinding(kb);
42
Iterator it = this.keyBindingsActions.iterator();
44
KeyBindingAction keyBindingAction = (KeyBindingAction)it.next();
45
if(keyBindingAction.getKeyBinding() != null && kb.isSameAs( keyBindingAction.getKeyBinding() )){
46
return TuxGuitar.instance().getAction(keyBindingAction.getAction());
52
public KeyBinding getKeyBindingForAction(String action){
53
KeyBinding kb = KeyBindingReserveds.getKeyBindingForAction(action);
57
Iterator it = this.keyBindingsActions.iterator();
59
KeyBindingAction keyBindingAction = (KeyBindingAction)it.next();
60
if(action.equals( keyBindingAction.getAction() )){
61
return keyBindingAction.getKeyBinding();
67
public void reset(List keyBindings){
68
this.keyBindingsActions.clear();
69
this.keyBindingsActions.addAll(keyBindings);
72
public List getKeyBindingActions(){
73
return this.keyBindingsActions;
76
public void saveKeyBindings(){
77
KeyBindingWriter.setBindings(getKeyBindingActions(),getUserFileName());
80
public void appendListenersTo(Control control){
81
control.addKeyListener(this.listener);
84
protected class KeyBindingListener implements KeyListener {
86
public void keyPressed(KeyEvent event) {
87
KeyBinding kb = new KeyBinding();
88
kb.setKey(event.keyCode);
89
kb.setMask(event.stateMask);
90
Action action = getActionForKeyBinding(kb);
92
action.process(event);
96
public void keyReleased(KeyEvent evt) {