package org.rr.jeborker.gui.action;
import static org.rr.commons.utils.StringUtil.EMPTY;
import java.awt.event.ActionEvent;
import javax.swing.Action;
import org.rr.commons.mufs.IResourceHandler;
import org.rr.commons.swing.SwingUtils;
import org.rr.jeborker.app.JeboorkerConstants;
import org.rr.jeborker.event.RefreshAbstractAction;
import org.rr.jeborker.gui.MainController;
import org.rr.jeborker.gui.PlainMetadataEditorController;
import org.rr.jeborker.gui.resources.ImageResourceBundle;
class EditPlainMetadataAction extends RefreshAbstractAction {
private static final long serialVersionUID = 108236926726922222L;
final IResourceHandler resourceHandler;
EditPlainMetadataAction(final IResourceHandler handler) {
String additionalName = EMPTY;
this.resourceHandler = handler;
if(handler != null) {
String handlerMimeType = handler.getMimeType(true);
if(handler != null && handlerMimeType != null && handlerMimeType.equals(JeboorkerConstants.SUPPORTED_MIMES.MIME_PDF.getMime())) {
additionalName = "XMP";
} else if(handler != null && handlerMimeType != null && handlerMimeType.equals(JeboorkerConstants.SUPPORTED_MIMES.MIME_HTML.getMime())) {
additionalName = "HTML";
} else {
additionalName = "XML";
}
} else {
setEnabled(false);
}
String name = Bundle.getFormattedString("EditPlainMetadataAction.name", additionalName);
putValue(Action.NAME, SwingUtils.removeMnemonicMarker(name));
putValue(Action.SMALL_ICON, ImageResourceBundle.getResourceAsImageIcon("edit_16.png"));
putValue(Action.LARGE_ICON_KEY, ImageResourceBundle.getResourceAsImageIcon("edit_22.png"));
putValue(MNEMONIC_KEY, SwingUtils.getMnemonicKeyCode(name));
}
@Override
public void actionPerformed(ActionEvent e) {
final MainController controller = MainController.getController();
controller.getProgressMonitor().monitorProgressStart(Bundle.getString("EditPlainMetadataAction.message"));
Exception exception = null;
try {
PlainMetadataEditorController instance = PlainMetadataEditorController.getInstance(resourceHandler, getSelectedRowsToRefresh());
instance.showXMLMetadataDialog();
} catch(Exception ex) {
exception = ex;
controller.getProgressMonitor().monitorProgressStop(ex.getMessage());
} finally {
if(exception==null) {
controller.getProgressMonitor().monitorProgressStop(EMPTY);
}
}
}
}