~ubuntu-branches/ubuntu/oneiric/tuxguitar/oneiric

« back to all changes in this revision

Viewing changes to src/org/herac/tuxguitar/gui/system/keybindings/xml/KeyBindingReader.java

  • Committer: Bazaar Package Importer
  • Author(s): Philippe Coval
  • Date: 2008-06-19 00:30:30 UTC
  • mto: (5.1.2 sid)
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: james.westby@ubuntu.com-20080619003030-h719szrhsngou7c6
Tags: upstream-1.0
ImportĀ upstreamĀ versionĀ 1.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
package org.herac.tuxguitar.gui.system.keybindings.xml;
2
 
 
3
 
import java.io.File;
4
 
import java.io.IOException;
5
 
import java.util.HashMap;
6
 
import java.util.Map;
7
 
 
8
 
import javax.xml.parsers.DocumentBuilder;
9
 
import javax.xml.parsers.DocumentBuilderFactory;
10
 
import javax.xml.parsers.ParserConfigurationException;
11
 
 
12
 
import org.herac.tuxguitar.gui.TuxGuitar;
13
 
import org.herac.tuxguitar.gui.system.keybindings.KeyBinding;
14
 
import org.w3c.dom.Document;
15
 
import org.w3c.dom.NamedNodeMap;
16
 
import org.w3c.dom.Node;
17
 
import org.w3c.dom.NodeList;
18
 
import org.xml.sax.SAXException;
19
 
 
20
 
public class KeyBindingReader {
21
 
        private static final String SHORTCUT_TAG = "shortcut";
22
 
        private static final String ACTION_ATTRIBUTE = "action";
23
 
        private static final String KEYS_ATTRIBUTE = "keys";
24
 
        
25
 
    public static Map getKeyBindings(String fileName) {
26
 
        Map bindings = null;
27
 
        try{
28
 
                File file = new File(fileName);
29
 
        
30
 
                if (file.exists()){
31
 
                        Document doc = getDocument(file);
32
 
                        bindings = getBindings(doc.getFirstChild());
33
 
                }
34
 
        }catch(Exception e){
35
 
                e.printStackTrace();
36
 
        }
37
 
        return bindings;
38
 
    }
39
 
    
40
 
    private static Document getDocument(File file) {
41
 
        Document document = null;
42
 
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
43
 
        try {
44
 
            DocumentBuilder builder = factory.newDocumentBuilder();
45
 
            document = builder.parse(file);
46
 
        } catch (SAXException sxe) {
47
 
            sxe.printStackTrace();
48
 
        } catch (ParserConfigurationException pce) {
49
 
            pce.printStackTrace();
50
 
        } catch (IOException ioe) {
51
 
            ioe.printStackTrace();
52
 
        }
53
 
        return document;
54
 
    }
55
 
 
56
 
    /**
57
 
     * Read shortcuts from xml file
58
 
     * 
59
 
     * @param shortcutsNode
60
 
     * @return
61
 
     */
62
 
    private static Map getBindings(Node shortcutsNode){
63
 
        Map bindings = new HashMap();
64
 
 
65
 
        NodeList nodeList = shortcutsNode.getChildNodes();
66
 
        for (int i = 0; i < nodeList.getLength(); i++) {
67
 
            Node child = nodeList.item(i);
68
 
            String nodeName = child.getNodeName();
69
 
 
70
 
            if (nodeName.equals(SHORTCUT_TAG)) {
71
 
                NamedNodeMap params = child.getAttributes();
72
 
 
73
 
                String key = params.getNamedItem(KEYS_ATTRIBUTE).getNodeValue();
74
 
                String action = params.getNamedItem(ACTION_ATTRIBUTE).getNodeValue();
75
 
                
76
 
                if (key == null || action == null || key.trim().equals("") || action.trim().equals("")){
77
 
                        throw new RuntimeException("Invalid KeyBinding file format.");
78
 
                }
79
 
 
80
 
                bindings.put(KeyBinding.parse(key),TuxGuitar.instance().getAction(action));
81
 
            }
82
 
 
83
 
        }
84
 
 
85
 
        return bindings;
86
 
    }
87
 
}