]>
Commit | Line | Data |
---|---|---|
90503bad | 1 | package org.tianocore.migration;\r |
2 | \r | |
71f30e51 | 3 | import java.awt.GridBagLayout;\r |
4 | import java.awt.event.ActionEvent;\r | |
5 | import java.awt.event.ActionListener;\r | |
6 | import java.awt.event.MouseAdapter;\r | |
7 | import java.awt.event.MouseEvent;\r | |
8 | \r | |
9 | import javax.swing.JFileChooser;\r | |
10 | import javax.swing.JFrame;\r | |
11 | import javax.swing.JMenuItem;\r | |
12 | import javax.swing.JPanel;\r | |
13 | import javax.swing.JPopupMenu;\r | |
14 | import javax.swing.JScrollPane;\r | |
15 | import javax.swing.JTree;\r | |
16 | import javax.swing.SwingUtilities;\r | |
17 | import javax.swing.UIManager;\r | |
18 | import javax.swing.tree.DefaultMutableTreeNode;\r | |
19 | import javax.swing.tree.DefaultTreeModel;\r | |
20 | import javax.swing.tree.TreePath;\r | |
21 | import javax.swing.tree.TreeSelectionModel;\r | |
22 | import javax.xml.parsers.DocumentBuilder;\r | |
23 | import javax.xml.parsers.DocumentBuilderFactory;\r | |
24 | \r | |
25 | import org.w3c.dom.Document;\r | |
26 | import org.w3c.dom.Element;\r | |
27 | import org.w3c.dom.Node;\r | |
28 | import org.w3c.dom.NodeList;\r | |
90503bad | 29 | \r |
30 | public class MsaTreeEditor extends JPanel {\r | |
71f30e51 | 31 | /**\r |
32 | * Define class Serial Version UID\r | |
33 | */\r | |
34 | private static final long serialVersionUID = 3169905938472150649L;\r | |
35 | \r | |
36 | MsaTreeEditor() throws Exception {\r | |
37 | rootNode = new DefaultMutableTreeNode("Root Node");\r | |
38 | treeModel = new DefaultTreeModel(rootNode);\r | |
39 | \r | |
40 | tree = new JTree(treeModel);\r | |
41 | tree.setEditable(true);\r | |
42 | tree.getSelectionModel().setSelectionMode(\r | |
43 | TreeSelectionModel.SINGLE_TREE_SELECTION);\r | |
44 | tree.setShowsRootHandles(false);\r | |
45 | tree.addMouseListener(mouseadapter);\r | |
46 | \r | |
47 | JScrollPane scrollPane = new JScrollPane(tree);\r | |
48 | // scrollPane.setSize(800, 600);\r | |
49 | add(scrollPane);\r | |
50 | \r | |
51 | popupmenu = new JPopupMenu();\r | |
52 | menuitemadd = new JMenuItem("Add Node");\r | |
53 | menuitemdel = new JMenuItem("Delete Node");\r | |
54 | menuitemedit = new JMenuItem("Edit Node");\r | |
55 | popupmenu.add(menuitemadd);\r | |
56 | popupmenu.add(menuitemdel);\r | |
57 | popupmenu.add(menuitemedit);\r | |
58 | menuitemadd.addActionListener(actionListener);\r | |
59 | menuitemdel.addActionListener(actionListener);\r | |
60 | menuitemedit.addActionListener(actionListener);\r | |
61 | \r | |
62 | genDomTree(MigrationTool.ui.getFilepath("Select a msa file",\r | |
63 | JFileChooser.FILES_AND_DIRECTORIES));\r | |
64 | }\r | |
65 | \r | |
66 | // private ModuleSurfaceAreaDocument msadoc;\r | |
67 | \r | |
68 | private JTree tree;\r | |
69 | \r | |
70 | private DefaultMutableTreeNode rootNode;\r | |
71 | \r | |
72 | private DefaultTreeModel treeModel;\r | |
73 | \r | |
74 | private JMenuItem menuitemadd, menuitemdel, menuitemedit;\r | |
75 | \r | |
76 | private JPopupMenu popupmenu;\r | |
77 | \r | |
78 | private MouseAdapter mouseadapter = new MouseAdapter() {\r | |
79 | public void mouseReleased(MouseEvent me) {\r | |
80 | if (me.getClickCount() == 1\r | |
81 | && SwingUtilities.isRightMouseButton(me)) {\r | |
82 | tree.setSelectionPath(tree.getPathForLocation(me.getX(), me\r | |
83 | .getY()));\r | |
84 | popupmenu.show(tree, me.getX(), me.getY());\r | |
85 | }\r | |
86 | }\r | |
87 | };\r | |
88 | \r | |
89 | private ActionListener actionListener = new ActionListener() {\r | |
90 | public void actionPerformed(ActionEvent ae) {\r | |
91 | if (ae.getSource() == menuitemadd) {\r | |
92 | addNode();\r | |
93 | } else if (ae.getSource() == menuitemdel) {\r | |
94 | delNode();\r | |
95 | } else if (ae.getSource() == menuitemedit) {\r | |
96 | editNode();\r | |
97 | }\r | |
98 | }\r | |
99 | };\r | |
100 | \r | |
101 | private void editNode() {\r | |
102 | DefaultMutableTreeNode node = (DefaultMutableTreeNode) (tree\r | |
103 | .getSelectionPath().getLastPathComponent());\r | |
104 | Element element = (Element) node.getUserObject();\r | |
105 | System.out.println(element.getTextContent());\r | |
106 | }\r | |
107 | \r | |
108 | private void delNode() {\r | |
109 | treeModel.removeNodeFromParent((DefaultMutableTreeNode) (tree\r | |
110 | .getSelectionPath().getLastPathComponent()));\r | |
111 | }\r | |
112 | \r | |
113 | private void addNode() {\r | |
114 | addNode((DefaultMutableTreeNode) (tree.getSelectionPath()\r | |
115 | .getLastPathComponent()), MigrationTool.ui\r | |
116 | .getInput("Input Node Name"));\r | |
117 | }\r | |
118 | \r | |
119 | private DefaultMutableTreeNode addNode(DefaultMutableTreeNode parentNode,\r | |
120 | Object child) {\r | |
121 | DefaultMutableTreeNode childNode = new DefaultMutableTreeNode(child);\r | |
122 | treeModel.insertNodeInto(childNode, parentNode, parentNode\r | |
123 | .getChildCount());\r | |
124 | tree.scrollPathToVisible(new TreePath(childNode.getPath()));\r | |
125 | return childNode;\r | |
126 | }\r | |
127 | \r | |
128 | private final void handleNode(Node node, DefaultMutableTreeNode parentNode) {\r | |
129 | DefaultMutableTreeNode curNode = null;\r | |
130 | if (node.getNodeType() == Node.ELEMENT_NODE) {\r | |
131 | System.out.println("elem");\r | |
132 | curNode = addNode(parentNode, node);\r | |
133 | } else if (node.getNodeType() == Node.DOCUMENT_NODE) {\r | |
134 | System.out.println("doc");\r | |
135 | curNode = addNode(parentNode, "MsaDocum"); // can Docum be with\r | |
136 | // Root Node?\r | |
137 | }\r | |
138 | \r | |
139 | NodeList nodelist = node.getChildNodes();\r | |
140 | for (int i = 0; i < nodelist.getLength(); i++) {\r | |
141 | handleNode(nodelist.item(i), curNode);\r | |
142 | }\r | |
143 | }\r | |
144 | \r | |
145 | private final void genDomTree(String filename) throws Exception {\r | |
146 | DocumentBuilder builder = DocumentBuilderFactory.newInstance()\r | |
147 | .newDocumentBuilder();\r | |
148 | Document document = builder.parse(filename);\r | |
149 | handleNode(document, rootNode);\r | |
150 | }\r | |
151 | \r | |
152 | public static final void init() throws Exception {\r | |
153 | UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());\r | |
154 | \r | |
155 | JFrame frame = new JFrame("MsaTreeEditor");\r | |
156 | frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\r | |
157 | \r | |
158 | MsaTreeEditor mte = new MsaTreeEditor();\r | |
159 | mte.setLayout(new GridBagLayout());\r | |
160 | mte.setOpaque(true);\r | |
161 | frame.setContentPane(mte);\r | |
162 | \r | |
163 | frame.pack();\r | |
164 | frame.setVisible(true);\r | |
165 | }\r | |
90503bad | 166 | } |