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

« back to all changes in this revision

Viewing changes to src/org/herac/tuxguitar/gui/system/keybindings/xml/KeyBindingWriter.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.xml;
2
 
 
3
 
import java.io.File;
4
 
import java.io.FileNotFoundException;
5
 
import java.io.FileOutputStream;
6
 
import java.util.Iterator;
7
 
import java.util.Set;
8
 
 
9
 
import javax.xml.parsers.DocumentBuilder;
10
 
import javax.xml.parsers.DocumentBuilderFactory;
11
 
import javax.xml.parsers.FactoryConfigurationError;
12
 
import javax.xml.parsers.ParserConfigurationException;
13
 
import javax.xml.transform.OutputKeys;
14
 
import javax.xml.transform.Result;
15
 
import javax.xml.transform.Source;
16
 
import javax.xml.transform.Transformer;
17
 
import javax.xml.transform.TransformerConfigurationException;
18
 
import javax.xml.transform.TransformerException;
19
 
import javax.xml.transform.TransformerFactory;
20
 
import javax.xml.transform.dom.DOMSource;
21
 
import javax.xml.transform.stream.StreamResult;
22
 
 
23
 
import org.herac.tuxguitar.gui.TuxGuitar;
24
 
import org.herac.tuxguitar.gui.system.keybindings.KeyBinding;
25
 
import org.w3c.dom.Attr;
26
 
import org.w3c.dom.Document;
27
 
import org.w3c.dom.Node;
28
 
 
29
 
public class KeyBindingWriter {
30
 
        
31
 
        private static final String SHORTCUTS_TAG = "shortcuts";
32
 
        private static final String SHORTCUT_TAG = "shortcut";
33
 
        private static final String ACTION_ATTRIBUTE = "action";
34
 
        private static final String KEYS_ATTRIBUTE = "keys";
35
 
        
36
 
    public static void setBindings(Set keyBindings,String fileName) {           
37
 
        File file = new File(fileName);
38
 
        
39
 
        Document doc = createDocument();
40
 
        setBindings(keyBindings,doc);
41
 
        saveDocument(doc,file);        
42
 
    }
43
 
    
44
 
    
45
 
    public static Document createDocument() {
46
 
        Document document = null;
47
 
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
48
 
        try {
49
 
            DocumentBuilder builder = factory.newDocumentBuilder();
50
 
            document = builder.newDocument();
51
 
        }catch (ParserConfigurationException pce) {
52
 
            pce.printStackTrace();
53
 
        } 
54
 
        return document;
55
 
    }        
56
 
    
57
 
 
58
 
    
59
 
    public static void saveDocument(Document document,File file) {
60
 
        try {
61
 
            FileOutputStream fs = new FileOutputStream(file);
62
 
 
63
 
            // Write it out again
64
 
            TransformerFactory xformFactory = TransformerFactory.newInstance();
65
 
            Transformer idTransform = xformFactory.newTransformer();
66
 
            Source input = new DOMSource(document);            
67
 
            Result output = new StreamResult(fs);
68
 
            idTransform.setOutputProperty(OutputKeys.INDENT, "yes");
69
 
            idTransform.transform(input, output);
70
 
 
71
 
        } catch (FactoryConfigurationError e) {
72
 
            e.printStackTrace();
73
 
        } catch (TransformerConfigurationException e) {
74
 
            e.printStackTrace();
75
 
        } catch (TransformerException e) {
76
 
            e.printStackTrace();
77
 
        } catch (FileNotFoundException e) {
78
 
            e.printStackTrace();
79
 
        }
80
 
 
81
 
    }
82
 
 
83
 
    /**
84
 
     * Write shortcuts to xml file
85
 
     * 
86
 
     * @param shortcutsNode
87
 
     * @return
88
 
     */
89
 
    private static void setBindings(Set keyBindings,Document document){         
90
 
        Node shortcutsNode = document.createElement(SHORTCUTS_TAG);
91
 
 
92
 
        Iterator it = keyBindings.iterator();
93
 
        while(it.hasNext()){
94
 
                KeyBinding keyBinding = (KeyBinding) it.next();
95
 
                String keyString = keyBinding.toString();
96
 
                String actionString = TuxGuitar.instance().getkeyBindingManager().getActionForKeyBinding(keyBinding).getName();                 
97
 
                        
98
 
                Node node = document.createElement(SHORTCUT_TAG);
99
 
                shortcutsNode.appendChild(node);    
100
 
        
101
 
                Attr keyAttr = document.createAttribute(KEYS_ATTRIBUTE);
102
 
                Attr ActionAttr = document.createAttribute(ACTION_ATTRIBUTE);           
103
 
 
104
 
                keyAttr.setNodeValue(keyString);
105
 
                ActionAttr.setNodeValue(actionString);
106
 
        
107
 
                node.getAttributes().setNamedItem(keyAttr);
108
 
                node.getAttributes().setNamedItem(ActionAttr);
109
 
        }
110
 
        document.appendChild(shortcutsNode);    
111
 
    }
112
 
    
113
 
}