package org.geogebra.desktop.gui.view.spreadsheet; import java.awt.Component; import javax.swing.DefaultCellEditor; import javax.swing.JCheckBox; import javax.swing.JTable; import javax.swing.SwingConstants; import org.geogebra.common.kernel.Kernel; import org.geogebra.common.kernel.geos.GeoBoolean; /** * Cell editor for GeoBoolean. * * @author G.Sturr 2010-6-4 * */ public class MyCellEditorBoolean extends DefaultCellEditor { private static final long serialVersionUID = 1L; private GeoBoolean editGeo; private JCheckBox checkBox; boolean editing = false; public MyCellEditorBoolean(Kernel kernel) { super(new JCheckBox()); checkBox = (JCheckBox) editorComponent; } @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { editGeo = (GeoBoolean) value; delegate.setValue(editGeo.getBoolean()); editing = true; checkBox.setBackground(table.getBackground()); checkBox.setHorizontalAlignment(SwingConstants.CENTER); // enabled == isIndependent checkBox.setEnabled(editGeo.isIndependent()); if (editGeo.isLabelVisible()) { // checkBox.setText(editGeo.getCaption()); } return editorComponent; } @Override public Object getCellEditorValue() { return editGeo; } @Override public boolean stopCellEditing() { try { if (editGeo.isIndependent()) { editGeo.setValue(checkBox.isSelected()); editGeo.updateCascade(); } // app.storeUndoInfo(); } catch (Exception ex) { ex.printStackTrace(); super.stopCellEditing(); editing = false; return false; } editing = false; return super.stopCellEditing(); } public boolean isEditing() { return false; } }