1
package org.herac.tuxguitar.gui.system.keybindings;
4
import java.util.HashMap;
8
import org.eclipse.swt.events.KeyEvent;
9
import org.eclipse.swt.events.KeyListener;
10
import org.eclipse.swt.widgets.Composite;
11
import org.herac.tuxguitar.gui.actions.Action;
12
import org.herac.tuxguitar.gui.system.keybindings.xml.KeyBindingReader;
13
import org.herac.tuxguitar.gui.system.keybindings.xml.KeyBindingWriter;
14
import org.herac.tuxguitar.gui.util.TuxGuitarFileUtils;
16
public class KeyBindingManager {
17
private static KeyBindingManager instance;
18
private Map keyBindings;
19
private KeyBindingListener kbl;
21
public KeyBindingManager(){
22
this.keyBindings = new HashMap();
26
Map userKeyBindings = KeyBindingReader.getKeyBindings(getUserFileName());
27
if(userKeyBindings != null){
28
this.keyBindings.putAll(userKeyBindings);
30
userKeyBindings = KeyBindingDefaults.getDefaultKeyBindings();
31
this.keyBindings.putAll(userKeyBindings);
32
this.saveKeyBindings();
34
this.kbl = new KeyBindingListener();
37
private String getUserFileName(){
38
return TuxGuitarFileUtils.USER_CONFIG_PREFIX + File.separator + "keybindings.xml";
41
public Action getActionForKeyBinding(KeyBinding kb){
42
return (Action)keyBindings.get(kb);
45
public void removeAction(KeyBinding kb){
46
keyBindings.remove(kb);
49
public void reset(Map keyBindings){
50
this.keyBindings.clear();
51
this.keyBindings.putAll(keyBindings);
54
public Set getKeyBindings(){
55
return keyBindings.keySet();
58
public void saveKeyBindings(){
59
KeyBindingWriter.setBindings(getKeyBindings(),getUserFileName());
62
public void appendListenersTo(Composite c){
63
c.addKeyListener(kbl);
66
class KeyBindingListener implements KeyListener {
68
public void keyPressed(KeyEvent evt) {
69
KeyBinding kb = new KeyBinding();
70
kb.setKey(evt.keyCode);
71
kb.setMask(evt.stateMask);
73
Action a = (Action)keyBindings.get(kb);
79
public void keyReleased(KeyEvent evt) {