package org.esa.snap.ui.color;
import javax.swing.AbstractCellEditor;
import javax.swing.JTable;
import javax.swing.table.TableCellEditor;
import java.awt.Color;
import java.awt.Component;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
/**
* A table cell editor for color values.
*
* @author Norman Fomferra
* @since SNAP 2.0
*/
public class ColorTableCellEditor extends AbstractCellEditor implements TableCellEditor, PropertyChangeListener {
private ColorComboBox colorComboBox;
private boolean adjusting;
public ColorTableCellEditor() {
this(new ColorComboBox());
}
public ColorTableCellEditor(ColorComboBox colorComboBox) {
this.colorComboBox = colorComboBox;
this.colorComboBox.addPropertyChangeListener(ColorComboBox.SELECTED_COLOR_PROPERTY, this);
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
adjusting = true;
colorComboBox.setSelectedColor((Color) value);
adjusting = false;
return colorComboBox;
}
@Override
public Object getCellEditorValue() {
return colorComboBox.getSelectedColor();
}
@Override
public void propertyChange(PropertyChangeEvent evt) {
if (!adjusting) {
stopCellEditing();
}
}
}