-/** @file\r
- \r
- The file is used to create tree view sections\r
- \r
- Copyright (c) 2006, Intel Corporation\r
- All rights reserved. This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
- \r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
- \r
- **/\r
-package org.tianocore.frameworkwizard.platform.ui;\r
-import java.awt.GridLayout;\r
-import java.awt.Toolkit;\r
-\r
-import javax.swing.ImageIcon;\r
-import javax.swing.JPanel;\r
-import javax.swing.JScrollPane;\r
-import javax.swing.JTree;\r
-import javax.swing.tree.DefaultMutableTreeNode;\r
-import javax.swing.tree.DefaultTreeCellRenderer;\r
-import javax.swing.tree.DefaultTreeModel;\r
-import javax.swing.tree.MutableTreeNode;\r
-import javax.swing.tree.TreePath;\r
-import javax.swing.tree.TreeSelectionModel;\r
-import javax.swing.event.TreeModelEvent;\r
-import javax.swing.event.TreeModelListener;\r
-\r
-\r
-public class DynamicTree extends JPanel {\r
- protected DefaultMutableTreeNode rootNode;\r
- protected DefaultTreeModel treeModel;\r
- protected JTree tree;\r
- private Toolkit toolkit = Toolkit.getDefaultToolkit();\r
-\r
- public DynamicTree() {\r
- super(new GridLayout(1,0));\r
- \r
- rootNode = new DefaultMutableTreeNode("Sections");\r
- treeModel = new DefaultTreeModel(rootNode);\r
- treeModel.addTreeModelListener(new MyTreeModelListener());\r
-\r
- tree = new JTree(treeModel);\r
- DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer) tree.getCellRenderer();\r
- renderer.setOpenIcon(new ImageIcon("junk.gif"));\r
- renderer.setClosedIcon(new ImageIcon("junk.gif"));\r
- renderer.setLeafIcon(new ImageIcon("junk.gif"));\r
- tree.setEditable(true);\r
- tree.getSelectionModel().setSelectionMode\r
- (TreeSelectionModel.SINGLE_TREE_SELECTION);\r
- tree.setShowsRootHandles(true);\r
-\r
- JScrollPane scrollPane = new JScrollPane(tree);\r
- add(scrollPane);\r
- }\r
-\r
- /** Remove all nodes except the root node. */\r
- public void clear() {\r
- rootNode.removeAllChildren();\r
- treeModel.reload();\r
- }\r
-\r
- public String getCurrentNodeText() {\r
- DefaultMutableTreeNode currentNode = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();\r
- if (currentNode != null){\r
- return (String)currentNode.getUserObject();\r
- }\r
- return null;\r
- }\r
- /** Remove the currently selected node. */\r
- public void removeCurrentNode() {\r
- TreePath currentSelection = tree.getSelectionPath();\r
- if (currentSelection != null) {\r
- DefaultMutableTreeNode currentNode = (DefaultMutableTreeNode)\r
- (currentSelection.getLastPathComponent());\r
- MutableTreeNode parent = (MutableTreeNode)(currentNode.getParent());\r
- if (parent != null) {\r
- treeModel.removeNodeFromParent(currentNode);\r
- return;\r
- }\r
- } \r
-\r
- // Either there was no selection, or the root was selected.\r
- toolkit.beep();\r
- }\r
-\r
- /** Add child to the currently selected node. */\r
- public DefaultMutableTreeNode addObject(Object child) {\r
- DefaultMutableTreeNode parentNode = null;\r
- TreePath parentPath = tree.getSelectionPath();\r
-\r
- if (parentPath == null) {\r
- parentNode = rootNode;\r
- } else {\r
- parentNode = (DefaultMutableTreeNode)\r
- (parentPath.getLastPathComponent());\r
- }\r
-\r
- return addObject(parentNode, child, true);\r
- }\r
-\r
- public DefaultMutableTreeNode addObject(DefaultMutableTreeNode parent,\r
- Object child) {\r
- return addObject(parent, child, false);\r
- }\r
-\r
- public DefaultMutableTreeNode addObject(DefaultMutableTreeNode parent,\r
- Object child, \r
- boolean shouldBeVisible) {\r
- DefaultMutableTreeNode childNode = \r
- new DefaultMutableTreeNode(child);\r
-\r
- if (parent == null) {\r
- parent = rootNode;\r
- }\r
-\r
- treeModel.insertNodeInto(childNode, parent, \r
- parent.getChildCount());\r
-\r
- //Make sure the user can see the lovely new node.\r
- if (shouldBeVisible) {\r
- tree.scrollPathToVisible(new TreePath(childNode.getPath()));\r
- }\r
- return childNode;\r
- }\r
-\r
- class MyTreeModelListener implements TreeModelListener {\r
- public void treeNodesChanged(TreeModelEvent e) {\r
- DefaultMutableTreeNode node;\r
- node = (DefaultMutableTreeNode)\r
- (e.getTreePath().getLastPathComponent());\r
-\r
- /*\r
- * If the event lists children, then the changed\r
- * node is the child of the node we've already\r
- * gotten. Otherwise, the changed node and the\r
- * specified node are the same.\r
- */\r
- try {\r
- int index = e.getChildIndices()[0];\r
- node = (DefaultMutableTreeNode)\r
- (node.getChildAt(index));\r
- } catch (NullPointerException exc) {}\r
-\r
- System.out.println("The user has finished editing the node.");\r
- System.out.println("New value: " + node.getUserObject());\r
- }\r
- public void treeNodesInserted(TreeModelEvent e) {\r
- }\r
- public void treeNodesRemoved(TreeModelEvent e) {\r
- }\r
- public void treeStructureChanged(TreeModelEvent e) {\r
- }\r
- }\r
-}\r
-\r
-\r
+/** @file
+
+ The file is used to create tree view sections
+
+ Copyright (c) 2006, Intel Corporation
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ **/
+package org.tianocore.frameworkwizard.platform.ui;
+import java.awt.GridLayout;
+import java.awt.Toolkit;
+
+import javax.swing.ImageIcon;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTree;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeCellRenderer;
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.MutableTreeNode;
+import javax.swing.tree.TreePath;
+import javax.swing.tree.TreeSelectionModel;
+import javax.swing.event.TreeModelEvent;
+import javax.swing.event.TreeModelListener;
+
+
+public class DynamicTree extends JPanel {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ protected DefaultMutableTreeNode rootNode;
+ protected DefaultTreeModel treeModel;
+ protected JTree tree;
+ private Toolkit toolkit = Toolkit.getDefaultToolkit();
+
+ public DynamicTree() {
+ super(new GridLayout(1,0));
+
+ rootNode = new DefaultMutableTreeNode("Sections");
+ treeModel = new DefaultTreeModel(rootNode);
+ treeModel.addTreeModelListener(new MyTreeModelListener());
+
+ tree = new JTree(treeModel);
+ DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer) tree.getCellRenderer();
+ renderer.setOpenIcon(new ImageIcon("junk.gif"));
+ renderer.setClosedIcon(new ImageIcon("junk.gif"));
+ renderer.setLeafIcon(new ImageIcon("junk.gif"));
+ tree.setEditable(true);
+ tree.getSelectionModel().setSelectionMode
+ (TreeSelectionModel.SINGLE_TREE_SELECTION);
+ tree.setShowsRootHandles(true);
+
+ JScrollPane scrollPane = new JScrollPane(tree);
+ add(scrollPane);
+ }
+
+ /** Remove all nodes except the root node. */
+ public void clear() {
+ rootNode.removeAllChildren();
+ treeModel.reload();
+ }
+
+ public String getCurrentNodeText() {
+ DefaultMutableTreeNode currentNode = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
+ if (currentNode != null){
+ return (String)currentNode.getUserObject();
+ }
+ return null;
+ }
+ /** Remove the currently selected node. */
+ public void removeCurrentNode() {
+ TreePath currentSelection = tree.getSelectionPath();
+ if (currentSelection != null) {
+ DefaultMutableTreeNode currentNode = (DefaultMutableTreeNode)
+ (currentSelection.getLastPathComponent());
+ MutableTreeNode parent = (MutableTreeNode)(currentNode.getParent());
+ if (parent != null) {
+ treeModel.removeNodeFromParent(currentNode);
+ return;
+ }
+ }
+
+ // Either there was no selection, or the root was selected.
+ toolkit.beep();
+ }
+
+ /** Add child to the currently selected node. */
+ public DefaultMutableTreeNode addObject(Object child) {
+ DefaultMutableTreeNode parentNode = null;
+ TreePath parentPath = tree.getSelectionPath();
+
+ if (parentPath == null) {
+ parentNode = rootNode;
+ } else {
+ parentNode = (DefaultMutableTreeNode)
+ (parentPath.getLastPathComponent());
+ }
+
+ return addObject(parentNode, child, true);
+ }
+
+ public DefaultMutableTreeNode addObject(DefaultMutableTreeNode parent,
+ Object child) {
+ return addObject(parent, child, false);
+ }
+
+ public DefaultMutableTreeNode addObject(DefaultMutableTreeNode parent,
+ Object child,
+ boolean shouldBeVisible) {
+ DefaultMutableTreeNode childNode =
+ new DefaultMutableTreeNode(child);
+
+ if (parent == null) {
+ parent = rootNode;
+ }
+
+ treeModel.insertNodeInto(childNode, parent,
+ parent.getChildCount());
+
+ //Make sure the user can see the lovely new node.
+ if (shouldBeVisible) {
+ tree.scrollPathToVisible(new TreePath(childNode.getPath()));
+ }
+ return childNode;
+ }
+
+ class MyTreeModelListener implements TreeModelListener {
+ public void treeNodesChanged(TreeModelEvent e) {
+ DefaultMutableTreeNode node;
+ node = (DefaultMutableTreeNode)
+ (e.getTreePath().getLastPathComponent());
+
+ /*
+ * If the event lists children, then the changed
+ * node is the child of the node we've already
+ * gotten. Otherwise, the changed node and the
+ * specified node are the same.
+ */
+ try {
+ int index = e.getChildIndices()[0];
+ node = (DefaultMutableTreeNode)
+ (node.getChildAt(index));
+ } catch (NullPointerException exc) {}
+
+ System.out.println("The user has finished editing the node.");
+ System.out.println("New value: " + node.getUserObject());
+ }
+ public void treeNodesInserted(TreeModelEvent e) {
+ }
+ public void treeNodesRemoved(TreeModelEvent e) {
+ }
+ public void treeStructureChanged(TreeModelEvent e) {
+ }
+ }
+}
+
+