1 package org
.tianocore
.migration
;
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
;
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
;
25 import org
.w3c
.dom
.Document
;
26 import org
.w3c
.dom
.Element
;
27 import org
.w3c
.dom
.Node
;
28 import org
.w3c
.dom
.NodeList
;
30 public class MsaTreeEditor
extends JPanel
{
32 * Define class Serial Version UID
34 private static final long serialVersionUID
= 3169905938472150649L;
36 MsaTreeEditor() throws Exception
{
37 rootNode
= new DefaultMutableTreeNode("Root Node");
38 treeModel
= new DefaultTreeModel(rootNode
);
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
);
47 JScrollPane scrollPane
= new JScrollPane(tree
);
48 // scrollPane.setSize(800, 600);
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
);
62 genDomTree(MigrationTool
.ui
.getFilepath("Select a msa file",
63 JFileChooser
.FILES_AND_DIRECTORIES
));
66 // private ModuleSurfaceAreaDocument msadoc;
70 private DefaultMutableTreeNode rootNode
;
72 private DefaultTreeModel treeModel
;
74 private JMenuItem menuitemadd
, menuitemdel
, menuitemedit
;
76 private JPopupMenu popupmenu
;
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
84 popupmenu
.show(tree
, me
.getX(), me
.getY());
89 private ActionListener actionListener
= new ActionListener() {
90 public void actionPerformed(ActionEvent ae
) {
91 if (ae
.getSource() == menuitemadd
) {
93 } else if (ae
.getSource() == menuitemdel
) {
95 } else if (ae
.getSource() == menuitemedit
) {
101 private void editNode() {
102 DefaultMutableTreeNode node
= (DefaultMutableTreeNode
) (tree
103 .getSelectionPath().getLastPathComponent());
104 Element element
= (Element
) node
.getUserObject();
105 System
.out
.println(element
.getTextContent());
108 private void delNode() {
109 treeModel
.removeNodeFromParent((DefaultMutableTreeNode
) (tree
110 .getSelectionPath().getLastPathComponent()));
113 private void addNode() {
114 addNode((DefaultMutableTreeNode
) (tree
.getSelectionPath()
115 .getLastPathComponent()), MigrationTool
.ui
116 .getInput("Input Node Name"));
119 private DefaultMutableTreeNode
addNode(DefaultMutableTreeNode parentNode
,
121 DefaultMutableTreeNode childNode
= new DefaultMutableTreeNode(child
);
122 treeModel
.insertNodeInto(childNode
, parentNode
, parentNode
124 tree
.scrollPathToVisible(new TreePath(childNode
.getPath()));
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
139 NodeList nodelist
= node
.getChildNodes();
140 for (int i
= 0; i
< nodelist
.getLength(); i
++) {
141 handleNode(nodelist
.item(i
), curNode
);
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
);
152 public static final void init() throws Exception
{
153 UIManager
.setLookAndFeel(UIManager
.getSystemLookAndFeelClassName());
155 JFrame frame
= new JFrame("MsaTreeEditor");
156 frame
.setDefaultCloseOperation(JFrame
.EXIT_ON_CLOSE
);
158 MsaTreeEditor mte
= new MsaTreeEditor();
159 mte
.setLayout(new GridBagLayout());
161 frame
.setContentPane(mte
);
164 frame
.setVisible(true);