~ubuntu-branches/ubuntu/karmic/tuxguitar/karmic

« back to all changes in this revision

Viewing changes to TuxGuitar/src/org/herac/tuxguitar/gui/system/keybindings/KeyBindingActionManager.java

  • Committer: Bazaar Package Importer
  • Author(s): Philippe Coval
  • Date: 2008-06-19 00:30:30 UTC
  • mfrom: (1.1.1 upstream) (2.1.3 hardy)
  • Revision ID: james.westby@ubuntu.com-20080619003030-agens2gvd5m4dacu
New upstream release (Closes: #481728) also (LP: #176979, #212207)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package org.herac.tuxguitar.gui.system.keybindings;
 
2
 
 
3
import java.io.File;
 
4
import java.util.ArrayList;
 
5
import java.util.Iterator;
 
6
import java.util.List;
 
7
 
 
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;
 
16
 
 
17
public class KeyBindingActionManager {
 
18
        
 
19
        private List keyBindingsActions;
 
20
        private KeyBindingListener listener;
 
21
        
 
22
        public KeyBindingActionManager(){
 
23
                this.keyBindingsActions = new ArrayList();
 
24
                this.init();
 
25
        }
 
26
        
 
27
        public void init(){
 
28
                List enabled = KeyBindingReader.getKeyBindings(getUserFileName());
 
29
                this.keyBindingsActions.addAll( (enabled != null ? enabled : KeyBindingActionDefaults.getDefaultKeyBindings()) );
 
30
                this.listener = new KeyBindingListener();
 
31
        }
 
32
        
 
33
        private String getUserFileName(){
 
34
                return TGFileUtils.PATH_USER_CONFIG + File.separator + "keybindings.xml";
 
35
        }
 
36
        
 
37
        public Action getActionForKeyBinding(KeyBinding kb){
 
38
                Action action = KeyBindingReserveds.getActionForKeyBinding(kb);
 
39
                if(action != null){
 
40
                        return action;
 
41
                }
 
42
                Iterator it = this.keyBindingsActions.iterator();
 
43
                while(it.hasNext()){
 
44
                        KeyBindingAction keyBindingAction = (KeyBindingAction)it.next();
 
45
                        if(keyBindingAction.getKeyBinding() != null && kb.isSameAs( keyBindingAction.getKeyBinding() )){
 
46
                                return TuxGuitar.instance().getAction(keyBindingAction.getAction());
 
47
                        }
 
48
                }
 
49
                return null;
 
50
        }
 
51
        
 
52
        public KeyBinding getKeyBindingForAction(String action){
 
53
                KeyBinding kb = KeyBindingReserveds.getKeyBindingForAction(action);
 
54
                if(kb != null){
 
55
                        return kb;
 
56
                }
 
57
                Iterator it = this.keyBindingsActions.iterator();
 
58
                while(it.hasNext()){
 
59
                        KeyBindingAction keyBindingAction = (KeyBindingAction)it.next();
 
60
                        if(action.equals( keyBindingAction.getAction() )){
 
61
                                return keyBindingAction.getKeyBinding();
 
62
                        }
 
63
                }
 
64
                return null;
 
65
        }
 
66
        
 
67
        public void reset(List keyBindings){
 
68
                this.keyBindingsActions.clear();
 
69
                this.keyBindingsActions.addAll(keyBindings);
 
70
        }
 
71
        
 
72
        public List getKeyBindingActions(){
 
73
                return this.keyBindingsActions;
 
74
        }
 
75
        
 
76
        public void saveKeyBindings(){
 
77
                KeyBindingWriter.setBindings(getKeyBindingActions(),getUserFileName());
 
78
        }
 
79
        
 
80
        public void appendListenersTo(Control control){
 
81
                control.addKeyListener(this.listener);
 
82
        }
 
83
        
 
84
        protected class KeyBindingListener implements KeyListener {
 
85
                
 
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);
 
91
                        if (action != null){
 
92
                                action.process(event);
 
93
                        }
 
94
                }
 
95
                
 
96
                public void keyReleased(KeyEvent evt) {
 
97
                        //not implemented
 
98
                }
 
99
        }
 
100
}