Changeset 5543 for branches/OmeroEditor/src/treeModel/TreeUI.java
- Timestamp:
- 07/17/08 16:32:21 (4 months ago)
- Files:
-
- 1 modified
-
branches/OmeroEditor/src/treeModel/TreeUI.java (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/OmeroEditor/src/treeModel/TreeUI.java
r5537 r5543 23 23 package treeModel; 24 24 25 //Java imports 26 25 27 import java.awt.BorderLayout; 26 28 29 import javax.swing.DefaultCellEditor; 27 30 import javax.swing.JPanel; 28 31 import javax.swing.JScrollPane; 29 32 import javax.swing.JTree; 30 31 //Java imports 33 import javax.swing.tree.DefaultTreeCellEditor; 34 import javax.swing.tree.DefaultTreeCellRenderer; 35 import javax.swing.tree.TreeCellEditor; 32 36 33 37 //Third-party libraries … … 35 39 //Application-internal dependencies 36 40 41 import fields.DefaultFieldEditor; 42 43 37 44 /** 45 * This UI class displays a JTree in a scroll pane. 38 46 * 39 47 * … … 49 57 extends JPanel { 50 58 51 private TreeModel model;52 53 59 private JTree tree; 54 60 … … 56 62 57 63 super(new BorderLayout()); 58 59 this.model = model; 64 60 65 61 66 tree = new JTree(model); 67 /* 68 * The default UI (BasicTreeUI) is replaced with a subclass 69 * to modify the selection and editing behavior. 70 */ 71 tree.setUI(new MyBasicTreeUI()); 72 73 /* 74 * A custom selection model allows multiple nodes to be selected, 75 * but ensures that they are contiguous and are all siblings. 76 */ 62 77 tree.setSelectionModel(new ContiguousChildSelectionModel()); 78 79 /* 80 * Setting the row height to 0 allows each node to choose it's 81 * own size. The JTree will call getPreferredSize() for each. 82 */ 63 83 tree.setRowHeight(0); 64 tree.setCellRenderer(new FieldRenderer()); 84 85 /* 86 * A custom TreeCellRenderer (extends DefaultTreeCellRenderer) 87 * renders nodes as JPanels. 88 */ 89 DefaultTreeCellRenderer fieldRenderer = new FieldRenderer(); 90 tree.setCellRenderer(fieldRenderer); 91 92 /* 93 * A TreeCellEditor for editing fields. 94 * This merely delegates to the fieldRenderer because the same 95 * components are used for display and editing of the tree Cells. 96 */ 97 TreeCellEditor fieldEditor = new DefaultFieldEditor(fieldRenderer); 98 /* 99 * The DefaultTreeCellEditor (when passed a TreeCellEditor) uses this 100 * to switch between editing and display. 101 */ 102 TreeCellEditor editor = new DefaultTreeCellEditor(tree, fieldRenderer, fieldEditor); 103 tree.setCellEditor(editor); 65 104 66 105 tree.setEditable(true); 67 106 107 /* 108 * Place the JTree in a ScrollPane and add it to this panel. 109 */ 68 110 JScrollPane treeScroller = new JScrollPane(tree); 69 70 111 add(treeScroller, BorderLayout.CENTER); 71 112 } 113 72 114 73 115 }
