1 package org
.tianocore
.migration
;
4 import java
.awt
.event
.*;
6 import javax
.swing
.tree
.*;
7 import javax
.xml
.parsers
.*;
10 public class MsaTreeEditor
extends JPanel
{
12 * Define class Serial Version UID
14 private static final long serialVersionUID
= 3169905938472150649L;
18 MsaTreeEditor(ModuleInfo m, UI u, ModuleSurfaceAreaDocument md) {
23 //rootNode = msadoc.getDomNode();
24 rootNode = new DefaultMutableTreeNode("Root Node");
25 treeModel = new DefaultTreeModel(rootNode);
27 tree = new JTree(treeModel);
28 tree.setEditable(true);
29 tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
30 tree.setShowsRootHandles(false);
31 tree.addMouseListener(mouseadapter);
33 JScrollPane scrollPane = new JScrollPane(tree);
36 popupmenu = new JPopupMenu();
37 menuitemadd = new JMenuItem("addNode");
38 menuitemdel = new JMenuItem("deleteNode");
39 popupmenu.add(menuitemadd);
40 popupmenu.add(menuitemdel);
41 menuitemadd.addActionListener(actionListener);
42 menuitemdel.addActionListener(actionListener);
44 addNode(rootNode, "1st");
45 addNode(rootNode, "2nd");
48 MsaTreeEditor() throws Exception
{
49 rootNode
= new DefaultMutableTreeNode("Root Node");
50 treeModel
= new DefaultTreeModel(rootNode
);
52 tree
= new JTree(treeModel
);
53 tree
.setEditable(true);
54 tree
.getSelectionModel().setSelectionMode(TreeSelectionModel
.SINGLE_TREE_SELECTION
);
55 tree
.setShowsRootHandles(false);
56 tree
.addMouseListener(mouseadapter
);
58 JScrollPane scrollPane
= new JScrollPane(tree
);
59 //scrollPane.setSize(800, 600);
62 popupmenu
= new JPopupMenu();
63 menuitemadd
= new JMenuItem("Add Node");
64 menuitemdel
= new JMenuItem("Delete Node");
65 menuitemedit
= new JMenuItem("Edit Node");
66 popupmenu
.add(menuitemadd
);
67 popupmenu
.add(menuitemdel
);
68 popupmenu
.add(menuitemedit
);
69 menuitemadd
.addActionListener(actionListener
);
70 menuitemdel
.addActionListener(actionListener
);
71 menuitemedit
.addActionListener(actionListener
);
73 genDomTree(MigrationTool
.ui
.getFilepath("Select a msa file", JFileChooser
.FILES_AND_DIRECTORIES
));
76 //private ModuleSurfaceAreaDocument msadoc;
79 private DefaultMutableTreeNode rootNode
;
80 private DefaultTreeModel treeModel
;
81 private JMenuItem menuitemadd
, menuitemdel
, menuitemedit
;
83 private JPopupMenu popupmenu
;
84 private MouseAdapter mouseadapter
= new MouseAdapter() {
85 public void mouseReleased(MouseEvent me
) {
86 if (me
.getClickCount() == 1 && SwingUtilities
.isRightMouseButton(me
)) {
87 tree
.setSelectionPath(tree
.getPathForLocation(me
.getX(), me
.getY()));
88 popupmenu
.show(tree
, me
.getX(), me
.getY());
92 private ActionListener actionListener
= new ActionListener() {
93 public void actionPerformed(ActionEvent ae
) {
94 if (ae
.getSource() == menuitemadd
) {
96 } else if (ae
.getSource() == menuitemdel
) {
98 } else if (ae
.getSource() == menuitemedit
) {
104 private void editNode() {
105 DefaultMutableTreeNode node
= (DefaultMutableTreeNode
)(tree
.getSelectionPath().getLastPathComponent());
106 Element element
= (Element
)node
.getUserObject();
107 System
.out
.println(element
.getTextContent());
110 private void delNode() {
111 treeModel
.removeNodeFromParent((DefaultMutableTreeNode
)(tree
.getSelectionPath().getLastPathComponent()));
114 private void addNode() {
115 addNode((DefaultMutableTreeNode
)(tree
.getSelectionPath().getLastPathComponent()), MigrationTool
.ui
.getInput("Input Node Name"));
118 private DefaultMutableTreeNode
addNode(DefaultMutableTreeNode parentNode
, Object child
) {
119 DefaultMutableTreeNode childNode
= new DefaultMutableTreeNode(child
);
120 treeModel
.insertNodeInto(childNode
, parentNode
, parentNode
.getChildCount());
121 tree
.scrollPathToVisible(new TreePath(childNode
.getPath()));
125 private final void handleNode(Node node
, DefaultMutableTreeNode parentNode
) {
126 DefaultMutableTreeNode curNode
= null;
127 if (node
.getNodeType() == Node
.ELEMENT_NODE
) {
128 System
.out
.println("elem");
129 curNode
= addNode(parentNode
, node
);
130 } else if (node
.getNodeType() == Node
.DOCUMENT_NODE
){
131 System
.out
.println("doc");
132 curNode
= addNode(parentNode
, "MsaDocum"); // can Docum be with Root Node?
135 NodeList nodelist
= node
.getChildNodes();
136 for (int i
= 0; i
< nodelist
.getLength(); i
++) {
137 handleNode(nodelist
.item(i
), curNode
);
141 private final void genDomTree(String filename
) throws Exception
{
142 DocumentBuilder builder
= DocumentBuilderFactory
.newInstance().newDocumentBuilder();
143 Document document
= builder
.parse(filename
);
144 handleNode(document
, rootNode
);
147 public static final void init() throws Exception
{
148 UIManager
.setLookAndFeel(UIManager
.getSystemLookAndFeelClassName());
150 JFrame frame
= new JFrame("MsaTreeEditor");
151 frame
.setDefaultCloseOperation(JFrame
.EXIT_ON_CLOSE
);
153 MsaTreeEditor mte
= new MsaTreeEditor();
154 mte
.setLayout(new GridBagLayout());
156 frame
.setContentPane(mte
);
159 frame
.setVisible(true);