package org.rr.jeborker.gui.cell;
import java.awt.Component;
import java.io.Serializable;
import java.util.EventObject;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import javax.swing.JCheckBox;
import javax.swing.JTable;
import javax.swing.event.CellEditorListener;
import javax.swing.table.TableCellEditor;
import org.rr.jeborker.metadata.IMetadataReader;
import org.rr.jeborker.metadata.IMetadataReader.COMMON_METADATA_TYPES;
import org.rr.jeborker.metadata.download.MetadataDownloadEntry;
public class MetadataDownloadTableCellEditor implements TableCellEditor, Serializable {
private final MetadataDownloadTableCellRenderer renderer;
private MetadataDownloadEntry editingEntry;
private Map<COMMON_METADATA_TYPES, List<Entry<JCheckBox, String>>> editingValues;
public MetadataDownloadTableCellEditor(MetadataDownloadTableCellRenderer renderer) {
super();
this.renderer = renderer;
}
/**
* Get the MetadataDownloadEntry for the editing component.
*/
public MetadataDownloadEntry getEditorMetadataDownloadEntry() {
return editingEntry;
}
/**
* Get the values for the editing component.
*/
public Map<IMetadataReader.COMMON_METADATA_TYPES, List<Map.Entry<JCheckBox, String>>> getEditingValues() {
return editingValues;
}
@Override
public boolean isCellEditable(EventObject anEvent) {
return true;
}
@Override
public boolean shouldSelectCell(EventObject anEvent) {
return true;
}
@Override
public boolean stopCellEditing() {
this.editingValues = renderer.getEditingValues();
this.editingEntry = renderer.getEditingMetadataDownloadEntry();
return true;
}
@Override
public void cancelCellEditing() {
}
@Override
public void addCellEditorListener(CellEditorListener l) {
}
@Override
public void removeCellEditorListener(CellEditorListener l) {
}
@Override
public Component getTableCellEditorComponent(final JTable table, Object value, boolean isSelected, int row, int column) {
final Component tableCellComponent = renderer.getTableCellComponent(table, (MetadataDownloadEntry) value, true, true, row, column);
return tableCellComponent;
}
/**
* Tells if the user has selected the cover image checkbox for set/replace
* the cover of the ebook file with the downloaded one.
*/
public boolean isCoverImageChecked() {
return renderer.isCoverImageChecked();
}
@Override
public Object getCellEditorValue() {
return this.editingValues;
}
}