1 19 20 package org.netbeans.modules.tasklist.timerwin; 21 22 import java.awt.Dialog ; 23 import java.awt.Dimension ; 24 import java.awt.Image ; 25 import javax.swing.ImageIcon ; 26 import javax.swing.border.EmptyBorder ; 27 import javax.swing.tree.DefaultTreeCellRenderer ; 28 import javax.swing.tree.TreePath ; 29 import org.netbeans.modules.tasklist.usertasks.model.UserTask; 30 import org.netbeans.modules.tasklist.usertasks.model.UserTaskList; 31 import org.netbeans.modules.tasklist.usertasks.renderers.UserTaskIconProvider; 32 import org.openide.DialogDescriptor; 33 import org.openide.DialogDisplayer; 34 import org.openide.filesystems.FileUtil; 35 import org.openide.util.NbBundle; 36 import org.openide.util.Utilities; 37 38 43 public class UTChooserPanel extends javax.swing.JPanel { 44 47 private static class MyTreeCellRenderer extends DefaultTreeCellRenderer { 48 private ImageIcon icon = new ImageIcon (); 49 50 public java.awt.Component getTreeCellRendererComponent( 51 javax.swing.JTree tree, Object value, boolean sel, boolean expanded, 52 boolean leaf, int row, boolean hasFocus) { 53 54 super.getTreeCellRendererComponent( 55 tree, value, sel, expanded, leaf, row, hasFocus); 56 if (value instanceof UserTask) { 57 UserTask ut = (UserTask) value; 58 this.setText(ut.getSummary()); 59 this.setIcon(icon); 60 61 icon.setImage(UserTaskIconProvider.getUserTaskImage(ut, false)); 62 } else if (value instanceof UserTaskList) { 63 UserTaskList utl = (UserTaskList) value; 64 this.setText(FileUtil.getFileDisplayName(utl.getFile())); 65 this.setIcon(icon); 66 icon.setImage(UserTaskIconProvider.getUserTaskListImage()); 67 } 68 69 return this; 70 } 71 } 72 73 78 public static UserTask choose() { 79 UTChooserPanel dp = new UTChooserPanel(); 80 dp.setBorder(new EmptyBorder (11, 11, 12, 12)); 81 DialogDescriptor dd = new DialogDescriptor(dp, 82 NbBundle.getMessage( 83 UTChooserPanel.class, "ChooseTask")); dp.dd = dd; 85 dd.setValid(false); 86 Dialog d = DialogDisplayer.getDefault().createDialog(dd); 87 d.setBounds(Utilities.findCenterBounds(new Dimension (400, 400))); 88 d.show(); 89 if (dd.getValue() == DialogDescriptor.OK_OPTION) { 90 return dp.getSelectedUserTask(); 91 } else { 92 return null; 93 } 94 } 95 96 private DialogDescriptor dd; 97 98 101 public UTChooserPanel() { 102 initComponents(); 103 jTree.setCellRenderer(new MyTreeCellRenderer()); 104 jTree.setModel(new AllUserTasksTreeModel()); 105 } 106 107 112 public UserTask getSelectedUserTask() { 113 TreePath tp = jTree.getSelectionPath(); 114 if (tp == null) 115 return null; 116 Object obj = tp.getLastPathComponent(); 117 if (obj instanceof UserTask) 118 return (UserTask) obj; 119 else 120 return null; 121 } 122 123 129 private void initComponents() { 131 java.awt.GridBagConstraints gridBagConstraints; 132 133 jScrollPane1 = new javax.swing.JScrollPane (); 134 jTree = new javax.swing.JTree (); 135 jLabel1 = new javax.swing.JLabel (); 136 137 setLayout(new java.awt.GridBagLayout ()); 138 139 jTree.setRootVisible(false); 140 jTree.setShowsRootHandles(true); 141 jTree.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener () { 142 public void valueChanged(javax.swing.event.TreeSelectionEvent evt) { 143 jTreeValueChanged(evt); 144 } 145 }); 146 147 jScrollPane1.setViewportView(jTree); 148 149 gridBagConstraints = new java.awt.GridBagConstraints (); 150 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; 151 gridBagConstraints.weightx = 1.0; 152 gridBagConstraints.weighty = 1.0; 153 gridBagConstraints.insets = new java.awt.Insets (0, 0, 11, 0); 154 add(jScrollPane1, gridBagConstraints); 155 156 jLabel1.setText(" "); 157 gridBagConstraints = new java.awt.GridBagConstraints (); 158 gridBagConstraints.gridx = 0; 159 gridBagConstraints.gridy = 1; 160 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 161 add(jLabel1, gridBagConstraints); 162 163 } 165 private void jTreeValueChanged(javax.swing.event.TreeSelectionEvent evt) { UserTask ut = getSelectedUserTask(); 167 dd.setValid(ut != null && ut.isStartable() && !ut.isStarted()); 168 } 170 171 private javax.swing.JLabel jLabel1; 173 private javax.swing.JScrollPane jScrollPane1; 174 private javax.swing.JTree jTree; 175 177 } 178 | Popular Tags |