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;
16 MsaTreeEditor() throws Exception
{
17 rootNode
= new DefaultMutableTreeNode("Root Node");
18 treeModel
= new DefaultTreeModel(rootNode
);
20 tree
= new JTree(treeModel
);
21 tree
.setEditable(true);
22 tree
.getSelectionModel().setSelectionMode(TreeSelectionModel
.SINGLE_TREE_SELECTION
);
23 tree
.setShowsRootHandles(false);
24 tree
.addMouseListener(mouseadapter
);
26 JScrollPane scrollPane
= new JScrollPane(tree
);
27 //scrollPane.setSize(800, 600);
30 popupmenu
= new JPopupMenu();
31 menuitemadd
= new JMenuItem("Add Node");
32 menuitemdel
= new JMenuItem("Delete Node");
33 menuitemedit
= new JMenuItem("Edit Node");
34 popupmenu
.add(menuitemadd
);
35 popupmenu
.add(menuitemdel
);
36 popupmenu
.add(menuitemedit
);
37 menuitemadd
.addActionListener(actionListener
);
38 menuitemdel
.addActionListener(actionListener
);
39 menuitemedit
.addActionListener(actionListener
);
41 genDomTree(MigrationTool
.ui
.getFilepath("Select a msa file", JFileChooser
.FILES_AND_DIRECTORIES
));
44 //private ModuleSurfaceAreaDocument msadoc;
47 private DefaultMutableTreeNode rootNode
;
48 private DefaultTreeModel treeModel
;
49 private JMenuItem menuitemadd
, menuitemdel
, menuitemedit
;
51 private JPopupMenu popupmenu
;
52 private MouseAdapter mouseadapter
= new MouseAdapter() {
53 public void mouseReleased(MouseEvent me
) {
54 if (me
.getClickCount() == 1 && SwingUtilities
.isRightMouseButton(me
)) {
55 tree
.setSelectionPath(tree
.getPathForLocation(me
.getX(), me
.getY()));
56 popupmenu
.show(tree
, me
.getX(), me
.getY());
60 private ActionListener actionListener
= new ActionListener() {
61 public void actionPerformed(ActionEvent ae
) {
62 if (ae
.getSource() == menuitemadd
) {
64 } else if (ae
.getSource() == menuitemdel
) {
66 } else if (ae
.getSource() == menuitemedit
) {
72 private void editNode() {
73 DefaultMutableTreeNode node
= (DefaultMutableTreeNode
)(tree
.getSelectionPath().getLastPathComponent());
74 Element element
= (Element
)node
.getUserObject();
75 System
.out
.println(element
.getTextContent());
78 private void delNode() {
79 treeModel
.removeNodeFromParent((DefaultMutableTreeNode
)(tree
.getSelectionPath().getLastPathComponent()));
82 private void addNode() {
83 addNode((DefaultMutableTreeNode
)(tree
.getSelectionPath().getLastPathComponent()), MigrationTool
.ui
.getInput("Input Node Name"));
86 private DefaultMutableTreeNode
addNode(DefaultMutableTreeNode parentNode
, Object child
) {
87 DefaultMutableTreeNode childNode
= new DefaultMutableTreeNode(child
);
88 treeModel
.insertNodeInto(childNode
, parentNode
, parentNode
.getChildCount());
89 tree
.scrollPathToVisible(new TreePath(childNode
.getPath()));
93 private final void handleNode(Node node
, DefaultMutableTreeNode parentNode
) {
94 DefaultMutableTreeNode curNode
= null;
95 if (node
.getNodeType() == Node
.ELEMENT_NODE
) {
96 System
.out
.println("elem");
97 curNode
= addNode(parentNode
, node
);
98 } else if (node
.getNodeType() == Node
.DOCUMENT_NODE
){
99 System
.out
.println("doc");
100 curNode
= addNode(parentNode
, "MsaDocum"); // can Docum be with Root Node?
103 NodeList nodelist
= node
.getChildNodes();
104 for (int i
= 0; i
< nodelist
.getLength(); i
++) {
105 handleNode(nodelist
.item(i
), curNode
);
109 private final void genDomTree(String filename
) throws Exception
{
110 DocumentBuilder builder
= DocumentBuilderFactory
.newInstance().newDocumentBuilder();
111 Document document
= builder
.parse(filename
);
112 handleNode(document
, rootNode
);
115 public static final void init() throws Exception
{
116 UIManager
.setLookAndFeel(UIManager
.getSystemLookAndFeelClassName());
118 JFrame frame
= new JFrame("MsaTreeEditor");
119 frame
.setDefaultCloseOperation(JFrame
.EXIT_ON_CLOSE
);
121 MsaTreeEditor mte
= new MsaTreeEditor();
122 mte
.setLayout(new GridBagLayout());
124 frame
.setContentPane(mte
);
127 frame
.setVisible(true);