1 19 20 package org.netbeans.modules.tasklist.docscan; 21 22 import org.netbeans.modules.tasklist.client.SuggestionPriority; 23 import org.netbeans.modules.tasklist.core.PriorityListCellRenderer; 24 import org.netbeans.modules.tasklist.core.editors.PriorityTableCellRenderer; 25 import org.openide.DialogDisplayer; 26 import org.openide.NotifyDescriptor; 27 import org.openide.awt.Mnemonics; 28 import org.openide.explorer.propertysheet.editors.EnhancedCustomPropertyEditor; 29 import org.openide.util.NbBundle; 30 31 import javax.swing.*; 32 import javax.swing.event.ListSelectionListener ; 33 import javax.swing.event.ListSelectionEvent ; 34 import javax.swing.table.DefaultTableModel ; 35 import javax.swing.table.TableColumn ; 36 import java.awt.*; 37 import java.awt.event.ActionEvent ; 38 import java.awt.event.ActionListener ; 39 40 49 public final class TaskTagsPanel extends javax.swing.JPanel 50 implements EnhancedCustomPropertyEditor, ActionListener { 51 52 private static final long serialVersionUID = 1; 53 54 private DefaultTableModel model = null; 55 56 57 public TaskTagsPanel(TaskTags tags) { 58 initComponents(); 59 initA11y(); 60 setPreferredSize(new Dimension(400, 200)); 61 this.tags = tags; 62 63 TaskTag[] tagy = tags.getTags(); 64 model = new DefaultTableModel (new Object [0][0], new String [] {Util.getString("pat-col"), Util.getString("pri-col")}) { 65 Class [] types = new Class [] { 66 String .class, SuggestionPriority.class 67 }; 68 69 public Class getColumnClass(int columnIndex) { 70 return types [columnIndex]; 71 } 72 73 public boolean isCellEditable(int rowIndex, int columnIndex) { 74 return columnIndex == 1; 75 } 76 }; 77 78 for (int i = 0; i < tagy.length; i++) { 79 model.addRow(new Object []{ 80 tagy[i].getToken(), 81 tagy[i].getPriority() 82 }); 83 } 84 patternsTable.setModel(model); 85 86 patternsTable.getSelectionModel().addListSelectionListener(new ListSelectionListener () { 87 public void valueChanged(ListSelectionEvent e) { 88 updateSensitivity(); 89 } 90 }); 91 92 TableColumn sportColumn = patternsTable.getColumnModel().getColumn(1); 94 JComboBox combo = new JComboBox(); 95 combo.addItem(SuggestionPriority.HIGH); 96 combo.addItem(SuggestionPriority.MEDIUM_HIGH); 97 combo.addItem(SuggestionPriority.MEDIUM); 98 combo.addItem(SuggestionPriority.MEDIUM_LOW); 99 combo.addItem(SuggestionPriority.LOW); 100 combo.setRenderer(new PriorityListCellRenderer()); 101 sportColumn.setCellEditor(new DefaultCellEditor(combo)); 102 sportColumn.setCellRenderer(new PriorityTableCellRenderer()); 103 104 addButton.addActionListener(this); 105 changeButton.addActionListener(this); 106 deleteButton.addActionListener(this); 107 108 109 133 } 134 135 private TaskTags tags = null; 136 137 142 private void initComponents() { java.awt.GridBagConstraints gridBagConstraints; 144 145 tagLabel = new javax.swing.JLabel (); 146 jScrollPane1 = new javax.swing.JScrollPane (); 147 patternsTable = new javax.swing.JTable (); 148 addButton = new javax.swing.JButton (); 149 changeButton = new javax.swing.JButton (); 150 deleteButton = new javax.swing.JButton (); 151 152 setLayout(new java.awt.GridBagLayout ()); 153 154 setBorder(new javax.swing.border.EmptyBorder (new java.awt.Insets (12, 12, 11, 11))); 155 158 gridBagConstraints = new java.awt.GridBagConstraints (); 159 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 160 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 161 add(tagLabel, gridBagConstraints); 162 163 jScrollPane1.setViewportView(patternsTable); 164 165 gridBagConstraints = new java.awt.GridBagConstraints (); 166 gridBagConstraints.gridheight = 4; 167 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; 168 gridBagConstraints.weightx = 1.0; 169 gridBagConstraints.weighty = 1.0; 170 gridBagConstraints.insets = new java.awt.Insets (6, 0, 0, 0); 171 add(jScrollPane1, gridBagConstraints); 172 173 176 gridBagConstraints = new java.awt.GridBagConstraints (); 177 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 178 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 179 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 180 gridBagConstraints.insets = new java.awt.Insets (6, 6, 0, 0); 181 add(addButton, gridBagConstraints); 182 183 186 gridBagConstraints = new java.awt.GridBagConstraints (); 187 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 188 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 189 gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; 190 gridBagConstraints.insets = new java.awt.Insets (6, 6, 0, 0); 191 add(changeButton, gridBagConstraints); 192 193 196 gridBagConstraints = new java.awt.GridBagConstraints (); 197 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 198 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 199 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 200 gridBagConstraints.insets = new java.awt.Insets (6, 6, 0, 0); 201 add(deleteButton, gridBagConstraints); 202 203 } 205 206 private void initA11y() { 207 216 217 Mnemonics.setLocalizedText(addButton, NbBundle.getMessage( 218 TaskTagsPanel.class, "AddTag")); addButton.setToolTipText (NbBundle.getMessage ( 220 TaskTagsPanel.class, 221 "HINT_AddTag" 222 )); 223 Mnemonics.setLocalizedText(changeButton, NbBundle.getMessage( 224 TaskTagsPanel.class, "ChangeTag")); changeButton.setToolTipText (NbBundle.getMessage ( 226 TaskTagsPanel.class, 227 "HINT_ChangeTag" 228 )); 229 Mnemonics.setLocalizedText(deleteButton, NbBundle.getMessage( 230 TaskTagsPanel.class, "DeleteTag")); deleteButton.setToolTipText (NbBundle.getMessage ( 232 TaskTagsPanel.class, 233 "HINT_DeleteTag" 234 )); 235 Mnemonics.setLocalizedText(tagLabel, NbBundle.getMessage( 236 TaskTagsPanel.class, "TagList")); tagLabel.setToolTipText (NbBundle.getMessage ( 238 TaskTagsPanel.class, 239 "HINT_TagList" 240 )); 241 tagLabel.setLabelFor(patternsTable); 242 243 patternsTable.setToolTipText (NbBundle.getMessage ( 244 TaskTagsPanel.class, 245 "HINT_TagList" 246 )); 247 248 this.getAccessibleContext().setAccessibleDescription( 249 NbBundle.getMessage(TaskTagsPanel.class, "ACSD_Tags")); patternsTable.getAccessibleContext().setAccessibleDescription( 251 NbBundle.getMessage(TaskTagsPanel.class, "ACSD_List")); } 253 254 private javax.swing.JButton addButton; 256 private javax.swing.JButton changeButton; 257 private javax.swing.JButton deleteButton; 258 private javax.swing.JScrollPane jScrollPane1; 259 private javax.swing.JTable patternsTable; 260 private javax.swing.JLabel tagLabel; 261 263 264 public Object getPropertyValue() throws IllegalStateException { 266 return getEditedTags(); 267 } 268 269 private TaskTags getEditedTags() { 270 TaskTag[] ts = new TaskTag[model.getRowCount()]; 271 for (int i = 0; i < model.getRowCount(); i++) { 272 String token = (String ) model.getValueAt(i, 0); 273 SuggestionPriority prio = (SuggestionPriority) model.getValueAt(i,1); 274 TaskTag tag = new TaskTag(token, prio); 275 ts[i] = tag; 276 } 277 tags = new TaskTags(); 278 tags.setTags(ts); 279 return tags; 280 } 281 282 private void updateSensitivity() { 283 int[] selected = patternsTable.getSelectedRows(); 284 int count = (selected != null) ? selected.length : 0; 285 deleteButton.setEnabled(count == 1); 286 changeButton.setEnabled (count == 1); 287 addButton.setEnabled(true); 288 } 289 290 public void actionPerformed(ActionEvent actionEvent) { 291 Object source = actionEvent.getSource(); 292 if (source == addButton) { 293 NotifyDescriptor.InputLine d = new NotifyDescriptor.InputLine(Util.getString("pat-col"), Util.getString("new-pat")); 294 DialogDisplayer.getDefault().notify(d); 295 if (d.getValue() == NotifyDescriptor.OK_OPTION) { 296 String text = d.getInputText(); 297 if (text.length() > 0) { 298 model.addRow(new Object [] {text, SuggestionPriority.MEDIUM}); 299 } 300 } 301 } else if (source == changeButton) { 302 int row = patternsTable.getSelectedRow(); 303 if (row == -1) { 304 if (patternsTable.getRowCount() > 0) { 305 patternsTable.getSelectionModel().setSelectionInterval(0,0); 306 row = patternsTable.getSelectedRow(); 307 } else { 308 updateSensitivity(); 309 return; 310 } 311 } 312 String pattern = (String ) model.getValueAt(row, 0); 313 NotifyDescriptor.InputLine d = new NotifyDescriptor.InputLine(Util.getString("pat-col"), Util.getString("edit-pat")); 314 d.setInputText(pattern); 315 DialogDisplayer.getDefault().notify(d); 316 if (d.getValue() == NotifyDescriptor.OK_OPTION) { 317 String text = d.getInputText(); 318 if (text.length() > 0) { 319 model.setValueAt(text, row, 0); 320 } 321 } 322 } else if (source == deleteButton) { 323 int row = patternsTable.getSelectedRow(); 324 if (row == -1) { 325 updateSensitivity(); 326 } else { 327 model.removeRow(row); 328 } 329 } 330 updateSensitivity(); 331 } 332 333 } 334 | Popular Tags |