1
package org.herac.tuxguitar.gui.system.keybindings.xml;
4
import java.io.FileNotFoundException;
5
import java.io.FileOutputStream;
6
import java.util.Iterator;
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;
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;
29
public class KeyBindingWriter {
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";
36
public static void setBindings(Set keyBindings,String fileName) {
37
File file = new File(fileName);
39
Document doc = createDocument();
40
setBindings(keyBindings,doc);
41
saveDocument(doc,file);
45
public static Document createDocument() {
46
Document document = null;
47
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
49
DocumentBuilder builder = factory.newDocumentBuilder();
50
document = builder.newDocument();
51
}catch (ParserConfigurationException pce) {
52
pce.printStackTrace();
59
public static void saveDocument(Document document,File file) {
61
FileOutputStream fs = new FileOutputStream(file);
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);
71
} catch (FactoryConfigurationError e) {
73
} catch (TransformerConfigurationException e) {
75
} catch (TransformerException e) {
77
} catch (FileNotFoundException e) {
84
* Write shortcuts to xml file
86
* @param shortcutsNode
89
private static void setBindings(Set keyBindings,Document document){
90
Node shortcutsNode = document.createElement(SHORTCUTS_TAG);
92
Iterator it = keyBindings.iterator();
94
KeyBinding keyBinding = (KeyBinding) it.next();
95
String keyString = keyBinding.toString();
96
String actionString = TuxGuitar.instance().getkeyBindingManager().getActionForKeyBinding(keyBinding).getName();
98
Node node = document.createElement(SHORTCUT_TAG);
99
shortcutsNode.appendChild(node);
101
Attr keyAttr = document.createAttribute(KEYS_ATTRIBUTE);
102
Attr ActionAttr = document.createAttribute(ACTION_ATTRIBUTE);
104
keyAttr.setNodeValue(keyString);
105
ActionAttr.setNodeValue(actionString);
107
node.getAttributes().setNamedItem(keyAttr);
108
node.getAttributes().setNamedItem(ActionAttr);
110
document.appendChild(shortcutsNode);