1 2 import java.awt.event.ActionEvent ; 3 import java.io.File ; 4 import java.io.FileInputStream ; 5 import java.net.MalformedURLException ; 6 import java.util.ArrayList ; 7 import java.util.Date ; 8 import javax.swing.AbstractAction ; 9 import javax.swing.Action ; 10 import javax.swing.JComponent ; 11 import javax.swing.JDialog ; 12 import javax.swing.JEditorPane ; 13 import javax.swing.JFrame ; 14 15 import org.netbeans.spi.viewmodel.Models; 16 import org.netbeans.spi.viewmodel.ColumnModel; 17 import org.netbeans.spi.viewmodel.NodeActionsProvider; 18 import org.netbeans.spi.viewmodel.NodeModel; 19 import org.netbeans.spi.viewmodel.TableModel; 20 import org.netbeans.spi.viewmodel.TreeModel; 21 import org.netbeans.spi.viewmodel.TreeModelListener; 22 23 24 public class TreeModelExample4 implements TreeModel, NodeModel, 25 NodeActionsProvider, TableModel { 26 27 public Object [] getChildren (Object parent, int from, int to) { 28 if (parent == ROOT) 29 return File.listRoots (); 30 return ((File ) parent).listFiles (); 31 } 32 33 public Object getRoot () { 34 return ROOT; 35 } 36 37 public boolean isLeaf (Object node) { 38 if (node == ROOT) 39 return false; 40 return ((File ) node).isFile (); 41 } 42 43 public void addTreeModelListener (TreeModelListener l) {} 44 public void removeTreeModelListener (TreeModelListener l) {} 45 46 public String getDisplayName (Object node) { 47 if (node == ROOT) return "Name"; 48 String name = ((File ) node).getName (); 49 if (name.length () < 1) return ((File ) node).getAbsolutePath (); 50 return name; 51 } 52 53 public String getIconBase (Object node) { 54 if (node == ROOT) return "folder"; 55 if (((File ) node).isDirectory ()) return "folder"; 56 return "file"; 57 } 58 59 public String getShortDescription (Object node) { 60 if (node == ROOT) return "Name"; 61 return ((File ) node).getAbsolutePath (); 62 } 63 64 public Action [] getActions (final Object node) { 65 return new Action [] { 66 new AbstractAction ("Open") { 67 public void actionPerformed (ActionEvent e) { 68 performDefaultAction (node); 69 } 70 }, 71 new AbstractAction ("Delete") { 72 public void actionPerformed (ActionEvent e) { 73 ((File ) node).delete (); 74 } 75 } 76 }; 77 } 78 79 public void performDefaultAction (Object node) { 80 try { 81 JFrame f = new JFrame ("View"); 82 f.getContentPane ().add (new JEditorPane (((File ) node).toURL ())); 83 f.pack (); 84 f.show (); 85 } catch (Exception e) { 86 e.printStackTrace(); 87 } 88 } 89 90 public Object getValueAt (Object row, String columnID) { 91 try { 92 if (row == ROOT) return null; 93 if (columnID.equals ("sizeID")) { 94 if (((File ) row).isDirectory ()) return "<dir>"; 95 return "" + new FileInputStream ((File ) row).getChannel ().size (); 96 } 97 } catch (Exception e) { 98 e.printStackTrace (); 99 } 100 return ""; 101 } 102 103 public boolean isReadOnly (Object row, String columnID) { 104 return true; 105 } 106 107 public void setValueAt (Object row, String columnID, Object value) { 108 } 109 110 public static void main (String [] args) { 111 TreeModelExample4 tme = new TreeModelExample4 (); 112 ArrayList columns = new ArrayList (); 113 columns.add (new ColumnModel () { 114 public String getID () { 115 return "sizeID"; 116 } 117 118 public String getDisplayName () { 119 return "size"; 120 } 121 122 public Class getType () { 123 return String .class; 124 } 125 }); 126 JComponent ttv = Models.createView ( 127 tme, tme, tme, tme, columns ); 133 JFrame f = new JFrame ("Tree Model Example 4"); 134 f.getContentPane ().add (ttv); 135 f.pack (); 136 f.show (); 137 } 138 } 139 | Popular Tags |