• Views
  • Iteration Report
  • My Iteration Report
  •  
OMERO.clients
  • Login
  • Help/Guide
  • About Trac
  • Preferences
  • Wiki
  • Timeline
  • Roadmap
  • Browse Source
  • View Tickets
  • Search

Context Navigation

  • ← Previous Change
  • Next Change →

Changeset 5543 for branches/OmeroEditor/src/treeModel/TreeUI.java

Show
Ignore:
Timestamp:
07/17/08 16:32:21 (4 months ago)
Author:
will
Message:

Basically working JTree, with custom Rendering, Editing and Selection behavior

Files:
1 modified

  • branches/OmeroEditor/src/treeModel/TreeUI.java (modified) (4 diffs)

Legend:

Unmodified
Added
Removed
  • branches/OmeroEditor/src/treeModel/TreeUI.java

    r5537 r5543  
    2323package treeModel; 
    2424 
     25//Java imports 
     26 
    2527import java.awt.BorderLayout; 
    2628 
     29import javax.swing.DefaultCellEditor; 
    2730import javax.swing.JPanel; 
    2831import javax.swing.JScrollPane; 
    2932import javax.swing.JTree; 
    30  
    31 //Java imports 
     33import javax.swing.tree.DefaultTreeCellEditor; 
     34import javax.swing.tree.DefaultTreeCellRenderer; 
     35import javax.swing.tree.TreeCellEditor; 
    3236 
    3337//Third-party libraries 
    … …  
    3539//Application-internal dependencies 
    3640 
     41import fields.DefaultFieldEditor; 
     42 
     43 
    3744/**  
     45 * This UI class displays a JTree in a scroll pane.  
    3846 *  
    3947 * 
    … …  
    4957        extends JPanel { 
    5058         
    51         private TreeModel model; 
    52          
    5359        private JTree tree; 
    5460         
    … …  
    5662                 
    5763                super(new BorderLayout()); 
    58                  
    59                 this.model = model; 
     64 
    6065                 
    6166                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                 */ 
    6277                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                 */ 
    6383                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); 
    65104                 
    66105                tree.setEditable(true); 
    67106                 
     107                /* 
     108                 * Place the JTree in a ScrollPane and add it to this panel.  
     109                 */ 
    68110                JScrollPane treeScroller = new JScrollPane(tree); 
    69                  
    70111                add(treeScroller, BorderLayout.CENTER); 
    71112        } 
     113 
    72114         
    73115} 

Download in other formats:

  • Unified Diff
  • Zip Archive

Trac Powered

Powered by Trac 0.11
By Edgewall Software.

Visit the Trac open source project at
http://trac.edgewall.org/