package org.rr.jeborker.gui.action;
import java.awt.event.ActionEvent;
import java.util.List;
import javax.swing.AbstractAction;
import javax.swing.Action;
import org.rr.commons.mufs.IResourceHandler;
import org.rr.jeborker.db.item.EbookPropertyItemUtils;
import org.rr.jeborker.event.ApplicationEvent;
import org.rr.jeborker.event.DefaultApplicationEventListener;
import org.rr.jeborker.event.EventManager;
import org.rr.jeborker.gui.MainController;
import org.rr.jeborker.gui.resources.ImageResourceBundle;
import org.rr.jeborker.metadata.MetadataHandlerFactory;
import com.l2fprod.common.propertysheet.DefaultProperty;
import com.l2fprod.common.propertysheet.Property;
/**
* Action which removes the currently selected metadata entry in the metadata sheet.
*/
class RemoveMetadataEntryAction extends AbstractAction {
private static final long serialVersionUID = 1208674185052606967L;
private static RemoveMetadataEntryAction removeMetadataEntryAction = null;
private RemoveMetadataEntryAction() {
putValue(Action.SMALL_ICON, ImageResourceBundle.getResourceAsImageIcon("remove_16.png"));
// putValue(Action.LARGE_ICON_KEY, new ImageIcon(Bundle.getResource("remove_22.png")));
putValue(ApplicationAction.SINGLETON_ACTION_KEY, Boolean.TRUE); //Singleton instance!!
putValue(ApplicationAction.NON_THREADED_ACTION_KEY, Boolean.TRUE); //No threading
putValue(SHORT_DESCRIPTION, Bundle.getString("RemoveMetadataEntryAction.tooltip")); //tooltip
setEnabled(false);
initListener();
}
static RemoveMetadataEntryAction getInstance() {
if(removeMetadataEntryAction==null) {
removeMetadataEntryAction = new RemoveMetadataEntryAction();
}
return removeMetadataEntryAction;
}
private void initListener() {
EventManager.addListener(new RemoveMetadataEntryApplicationEventListener());
}
@Override
public void actionPerformed(ActionEvent e) {
MainController.getController().removeSelectedMetadataProperty();
}
private static class RemoveMetadataEntryApplicationEventListener extends DefaultApplicationEventListener {
@Override
public void metaDataSheetSelectionChanged(ApplicationEvent evt) {
final List<IResourceHandler> itemResourceList = EbookPropertyItemUtils.createIResourceHandlerList(evt.getItems());
if(MetadataHandlerFactory.hasWriterSupport(itemResourceList)) {
final ApplicationAction action = ActionFactory.getAction(ActionFactory.COMMON_ACTION_TYPES.REMOVE_METADATA_ENTRY_ACTION, null);
final int[] selectedEbookPropertyItemRows = MainController.getController().getSelectedEbookPropertyItemRows();
if(selectedEbookPropertyItemRows.length == 1) {
final Property metadataProperty = evt.getMetadataProperty();
boolean isDeletable = metadataProperty instanceof DefaultProperty ? ((DefaultProperty)metadataProperty).isDeletable() : true;
if(metadataProperty == null || !isDeletable) {
action.setEnabled(false);
} else {
action.setEnabled(true);
}
} else {
action.setEnabled(false);
}
}
}
}
}