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