]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/MigrationTools/org/tianocore/migration/MsaTreeEditor.java
first step for MsaOwner in ModuleInfo
[mirror_edk2.git] / Tools / Source / MigrationTools / org / tianocore / migration / MsaTreeEditor.java
CommitLineData
90503bad 1package org.tianocore.migration;\r
2\r
3import java.awt.*;\r
4import java.awt.event.*;\r
5import javax.swing.*;\r
6import javax.swing.tree.*;\r
bb2db65a 7import javax.xml.parsers.*;\r
8import org.w3c.dom.*;\r
90503bad 9\r
10public class MsaTreeEditor extends JPanel {\r
27e0221a 11 /**\r
12 * Define class Serial Version UID\r
13 */\r
14 private static final long serialVersionUID = 3169905938472150649L;\r
15 \r
16 private \r
fed802b1 17/*\r
27e0221a 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
fed802b1 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
27e0221a 46 }\r
fed802b1 47*/\r
27e0221a 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
27e0221a 73 genDomTree(MigrationTool.ui.getFilepath("Select a msa file", JFileChooser.FILES_AND_DIRECTORIES));\r
74 }\r
75 \r
76 //private ModuleSurfaceAreaDocument msadoc;\r
77 \r
78 private JTree tree;\r
79 private DefaultMutableTreeNode rootNode;\r
80 private DefaultTreeModel treeModel;\r
81 private JMenuItem menuitemadd, menuitemdel, menuitemedit;\r
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
94 if (ae.getSource() == menuitemadd) {\r
95 addNode();\r
96 } else if (ae.getSource() == menuitemdel) {\r
97 delNode();\r
98 } else if (ae.getSource() == menuitemedit) {\r
99 editNode();\r
100 }\r
101 }\r
102 };\r
103 \r
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
110 private void delNode() {\r
111 treeModel.removeNodeFromParent((DefaultMutableTreeNode)(tree.getSelectionPath().getLastPathComponent()));\r
112 }\r
113 \r
114 private void addNode() {\r
115 addNode((DefaultMutableTreeNode)(tree.getSelectionPath().getLastPathComponent()), MigrationTool.ui.getInput("Input Node Name"));\r
116 }\r
117 \r
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
27e0221a 123 }\r
bb2db65a 124\r
27e0221a 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
bb2db65a 134\r
27e0221a 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
139 }\r
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
145 }\r
146 \r
147 public static final void init() throws Exception {\r
148 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());\r
90503bad 149\r
27e0221a 150 JFrame frame = new JFrame("MsaTreeEditor");\r
151 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\r
90503bad 152\r
27e0221a 153 MsaTreeEditor mte = new MsaTreeEditor();\r
154 mte.setLayout(new GridBagLayout());\r
155 mte.setOpaque(true);\r
90503bad 156 frame.setContentPane(mte);\r
157\r
27e0221a 158 frame.pack();\r
159 frame.setVisible(true);\r
160 }\r
90503bad 161}