1 14 package org.compiere.grid.ed; 15 16 import javax.swing.*; 17 import javax.swing.table.*; 18 import javax.swing.event.*; 19 import java.awt.*; 20 import java.awt.event.*; 21 import java.util.EventObject ; 22 import java.beans.*; 23 import java.io.Serializable ; 24 25 import org.compiere.util.*; 26 import org.compiere.model.*; 27 import org.compiere.plaf.*; 28 29 42 public final class VCellEditor extends AbstractCellEditor 43 implements TableCellEditor, VetoableChangeListener, ActionListener 44 { 45 49 public VCellEditor (MField mField) 50 { 51 super(); 52 m_mField = mField; 53 } 56 57 private MField m_mField = null; 58 59 private VEditor m_editor = null; 60 61 private JTable m_table = null; 62 63 private int m_clickCountToStart = 2; 64 65 68 private void createEditor() 69 { 70 m_editor = VEditorFactory.getEditor(m_mField, true); 71 m_editor.addVetoableChangeListener(this); 72 m_editor.addActionListener(this); 73 } 75 83 public boolean isCellEditable(EventObject anEvent) 84 { 85 if (!m_mField.isEditable (false)) return false; 88 89 if (anEvent instanceof MouseEvent) 90 return ((MouseEvent)anEvent).getClickCount() >= m_clickCountToStart; 91 if (m_editor == null) 92 createEditor(); 93 return true; 94 } 96 111 public Component getTableCellEditorComponent (JTable table, Object value, boolean isSelected, int row, int col) 112 { 113 Log.trace(Log.l5_DData, "VCellEditor.getTableCellEditorComponent", "Value=" + value + ", row=" + row + ", col=" + col); 114 table.setRowSelectionInterval(row,row); if (m_editor == null) 116 createEditor(); 117 118 m_table = table; 119 120 m_editor.setValue(value); 122 123 m_editor.setBackground(m_mField.isError()); 125 m_editor.setForeground(CompierePLAF.getTextColor_Normal()); 126 127 m_editor.setFont(table.getFont()); 129 m_editor.setBorder(UIManager.getBorder("Table.focusCellHighlightBorder")); 130 return (Component)m_editor; 132 } 134 139 public boolean shouldSelectCell(EventObject e) 140 { 141 return true; 143 } 145 149 public Object getCellEditorValue() 150 { 151 return m_editor.getValue(); 153 } 155 161 public void vetoableChange(PropertyChangeEvent e) 162 { 163 if (m_table == null) 164 return; 165 Log.trace(Log.l5_DData, "VCellEditor.vetoableChange", e.getPropertyName() + "=" + e.getNewValue()); 166 ((MTable)m_table.getModel()).setChanged(true); 168 } 170 175 public VEditor getEditor() 176 { 177 return m_editor; 178 } 180 184 public void actionPerformed (ActionEvent e) 185 { 186 Log.trace(Log.l5_DData, "VCellEditor.actionPerformed", m_editor.getValue()); 187 super.stopCellEditing(); 188 } 190 193 public void dispose() 194 { 195 m_editor = null; 196 m_mField = null; 197 m_table = null; 198 } 200 } | Popular Tags |