SwitchRootDemo < Projects < TWiki
|
TWiki . Projects . SwitchRootDemo
|
Demonstrates how to change the root of a default tree model. Select any node and press the "Set As Root" button to make you selected node the new root.
-- Main.aberrant - 02 Jun 2008
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JToolBar;
import javax.swing.JTree;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
/**
* Demonstrates how to change the root of a default tree model. This allows for
* some simple filtering.
*
* @author Collin Fagan
*/
public class SwitchRootDemo extends JPanel {
private JTree tree = new JTree();
private DefaultTreeModel treeModel;
private DefaultMutableTreeNode baseRoot;
private JButton restoreRoot = new JButton("Restore Root");
private JButton setNewRoot = new JButton("Set As Root");
/**
* Constructor builds the demo creating the table and associated renderer.
*/
public SwitchRootDemo() {
setLayout(new BorderLayout());
JScrollPane scrollPane = new JScrollPane(tree);
add(scrollPane, BorderLayout.CENTER);
JToolBar buttonBar = new JToolBar();
buttonBar.setFloatable(false);
buttonBar.add(setNewRoot);
buttonBar.add(restoreRoot);
setNewRoot.addActionListener(setNewRootAction);
restoreRoot.addActionListener(restoreRootAction);
add(buttonBar, BorderLayout.SOUTH);
treeModel = createModel();
baseRoot = (DefaultMutableTreeNode) treeModel.getRoot();
tree.setModel(treeModel);
}
/**
* Action listener used for the "Set New Root" button.
*/
private final ActionListener setNewRootAction = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
TreePath path = tree.getSelectionModel().getLeadSelectionPath();
if (path != null) {
treeModel.setRoot((TreeNode) path.getLastPathComponent());
restoreRoot.setEnabled(true);
}
}
};
/**
* Action listener used for the "restore root" button.
*/
private final ActionListener restoreRootAction = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
treeModel.setRoot(baseRoot);
restoreRoot.setEnabled(false);
}
};
/**
* Start the demo on the Event Dispatch Thread.
*
* @param args
* the command line arguments
*/
public static void main(String[] args) {
// turn bold fonts off in metal
UIManager.put("swing.boldMetal", Boolean.FALSE);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame demoFrame = new JFrame();
demoFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
demoFrame.setContentPane(new SwitchRootDemo());
demoFrame.pack();
demoFrame.setVisible(true);
}
});
}
/**
* Creates the demos tree model which contains java books.
*
* @return the demos tree model
*/
private DefaultTreeModel createModel() {
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Books");
DefaultMutableTreeNode category = null;
DefaultMutableTreeNode book = null;
category = new DefaultMutableTreeNode("Books for Java Programmers");
root.add(category);
// original Tutorial
book = new DefaultMutableTreeNode(
"The Java Tutorial: A Short Course on the Basics");
category.add(book);
// Tutorial Continued
book = new DefaultMutableTreeNode(
"The Java Tutorial Continued: The Rest of the JDK");
category.add(book);
// JFC Swing Tutorial
book = new DefaultMutableTreeNode(
"The JFC Swing Tutorial: A Guide to Constructing GUIs");
category.add(book);
// Bloch
book = new DefaultMutableTreeNode(
"Effective Java Programming Language Guide");
category.add(book);
// Arnold/Gosling
book = new DefaultMutableTreeNode("The Java Programming Language");
category.add(book);
// Chan
book = new DefaultMutableTreeNode("The Java Developers Almanac");
category.add(book);
category = new DefaultMutableTreeNode("Books for Java Implementers");
root.add(category);
// VM
book = new DefaultMutableTreeNode(
"The Java Virtual Machine Specification");
category.add(book);
// Language Spec
book = new DefaultMutableTreeNode("The Java Language Specification");
category.add(book);
return new DefaultTreeModel(root);
}
}
----- Revision r2 - 03 Jun 2008 - 01:29:29 - Main.aberrant
|