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