1 19 package org.netbeans.modules.xml.tax.beans.editor; 20 21 import java.awt.event.KeyAdapter ; 22 import java.awt.event.KeyEvent ; 23 import javax.swing.JPanel ; 24 import javax.swing.JTable ; 25 import javax.swing.ListSelectionModel ; 26 import javax.swing.table.TableColumn ; 27 import javax.swing.table.AbstractTableModel ; 28 import javax.swing.JTextField ; 29 import javax.swing.DefaultCellEditor ; 30 import java.beans.Customizer ; 31 import java.beans.PropertyChangeEvent ; 32 import java.beans.PropertyChangeListener ; 33 34 import org.netbeans.tax.TreeNamedObjectMap; 35 import org.netbeans.tax.TreeException; 36 import org.netbeans.tax.TreeAttlistDeclAttributeDef; 37 38 import org.netbeans.modules.xml.tax.util.TAXUtil; 39 40 46 public class TreeAttlistDeclAttributeListCustomizer extends JPanel implements Customizer , PropertyChangeListener { 47 48 49 private static final long serialVersionUID =3524220594991141235L; 50 51 52 private static final String headerTitles[] = { 53 Util.THIS.getString ("TEXT_attlistdecl_attributelist_header_Name"), 54 Util.THIS.getString ("TEXT_attlistdecl_attributelist_header_Type"), 55 Util.THIS.getString ("TEXT_attlistdecl_attributelist_header_Enumerated"), 56 Util.THIS.getString ("TEXT_attlistdecl_attributelist_header_Default"), 57 Util.THIS.getString ("TEXT_attlistdecl_attributelist_header_Value") 58 }; 59 60 private static final int COL_NAME = 0; 61 private static final int COL_TYPE = 1; 62 private static final int COL_ENUM_TYPE = 2; 63 private static final int COL_DEFAULT_TYPE = 3; 64 private static final int COL_DEFAULT_VALUE = 4; 65 66 private static final int COL_COUNT = 5; 67 68 69 73 public TreeAttlistDeclAttributeListCustomizer() { 74 initComponents (); 75 attrTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 76 77 final JTextField editorComponent = new JTextField (); 79 editorComponent.getCaret().setVisible(true); 80 final DefaultCellEditor singleClickEditor = new DefaultCellEditor (editorComponent); 81 singleClickEditor.setClickCountToStart(1); 82 attrTable.setDefaultEditor(String .class, singleClickEditor); 83 84 85 initAccessibility(); 86 } 87 88 89 93 98 private void initComponents() { java.awt.GridBagConstraints gridBagConstraints; 100 101 tableScrollPane = new javax.swing.JScrollPane (); 102 attrTable = new javax.swing.JTable (); 103 104 setLayout(new java.awt.GridBagLayout ()); 105 106 attrTable.setPreferredScrollableViewportSize(new java.awt.Dimension (250, 150)); 107 tableScrollPane.setViewportView(attrTable); 108 109 gridBagConstraints = new java.awt.GridBagConstraints (); 110 gridBagConstraints.gridx = 0; 111 gridBagConstraints.gridy = 0; 112 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 113 gridBagConstraints.gridheight = java.awt.GridBagConstraints.REMAINDER; 114 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; 115 gridBagConstraints.weightx = 1.0; 116 gridBagConstraints.weighty = 1.0; 117 gridBagConstraints.insets = new java.awt.Insets (12, 12, 0, 11); 118 add(tableScrollPane, gridBagConstraints); 119 120 } 122 123 private javax.swing.JTable attrTable; 125 private javax.swing.JScrollPane tableScrollPane; 126 128 129 private TreeNamedObjectMap peer; 130 private AbstractTableModel tableModel; 131 132 133 135 public void setObject (Object obj) { 136 peer = (TreeNamedObjectMap) obj; 137 tableModel = new AttlistTableModel(); 138 attrTable.setModel(tableModel); 139 141 142 TableColumn column = null; 143 for (int i = 0; i < COL_COUNT; i++) { 144 column = attrTable.getColumnModel().getColumn (i); 145 column.setPreferredWidth (50); 146 } 147 148 updateView (peer); 149 peer.addPropertyChangeListener (org.openide.util.WeakListeners.propertyChange (this, peer)); 150 } 151 152 153 154 public void propertyChange(final PropertyChangeEvent e) { 155 if (e.getSource() == null) 156 return; 157 if (e.getSource() != peer) 158 return; 159 160 updateView ((TreeNamedObjectMap) e.getSource()); 161 } 162 163 164 private void updateView (TreeNamedObjectMap model) { 165 tableModel.fireTableDataChanged(); 166 } 167 168 169 173 174 private class RowKeyListener extends KeyAdapter { 175 176 177 private JTable table; 178 179 180 184 public RowKeyListener (JTable table) { 185 this.table = table; 186 } 187 188 189 193 195 public void keyReleased (KeyEvent e) { 196 if (e.getKeyCode() == KeyEvent.VK_DELETE) { 198 peer.remove (peer.get (table.getSelectedRow())); 199 tableModel.fireTableDataChanged(); 200 } 201 } 202 } 203 204 205 209 212 private class AttlistTableModel extends AbstractTableModel { 213 214 215 private static final long serialVersionUID =2920999049977694084L; 216 217 221 226 public AttlistTableModel () { 227 super(); 228 } 229 230 231 public int getRowCount () { 232 return peer.size(); 233 } 234 235 236 public int getColumnCount () { 237 return COL_COUNT; 238 } 239 240 241 public Class getColumnClass (int index) { 242 return String .class; 243 } 244 245 247 public Object getValueAt (int row, int column) { 248 TreeAttlistDeclAttributeDef attr = (TreeAttlistDeclAttributeDef) peer.get(row); 249 switch (column) { 250 case COL_NAME: 251 return attr.getName(); 252 case COL_TYPE: 253 return attr.getTypeName(); 254 case COL_ENUM_TYPE: 255 return ( (attr.getEnumeratedTypeString() == null) ? "" : attr.getEnumeratedTypeString() ); case COL_DEFAULT_TYPE: 257 return attr.getDefaultTypeName(); 258 case COL_DEFAULT_VALUE: 259 String defVal = attr.getDefaultValue(); 260 if ( defVal == null ) { 261 defVal = ""; } 263 return defVal; 264 default: 265 return null; 266 } 267 } 268 269 271 public void setValueAt (Object val, int row, int column) { 272 TreeAttlistDeclAttributeDef attr = (TreeAttlistDeclAttributeDef) peer.get (row); 273 try { 274 if (column == COL_NAME) { 275 attr.setName ((String ) val); 276 } 277 } catch (TreeException exc) { 278 TAXUtil.notifyTreeException (exc); 279 } 280 } 281 282 284 public String getColumnName (int column) { 285 return column < getColumnCount() ? headerTitles[column] : "" ; } 287 288 291 public boolean isCellEditable (int rowIndex, int columnIndex) { 292 return false; 293 } 294 295 } 297 298 300 public void initAccessibility(){ 301 302 this.getAccessibleContext().setAccessibleDescription(Util.THIS.getString("ACSD_TreeAttlistDeclAttributeListCustomizer")); 303 attrTable.getAccessibleContext().setAccessibleDescription(Util.THIS.getString("ACSD_attrTable1")); 304 attrTable.getAccessibleContext().setAccessibleName(Util.THIS.getString("ACSN_attrTable1")); 305 } 306 307 } 308 | Popular Tags |