/* CloseTagAction.java created 2007-10-14
*
*/
package org.signalml.app.action.tag;
import static org.signalml.app.util.i18n.SvarogI18n._;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.io.IOException;
import org.apache.log4j.Logger;
import org.signalml.app.action.AbstractFocusableSignalMLAction;
import org.signalml.app.action.selector.TagDocumentFocusSelector;
import org.signalml.app.document.DocumentFlowIntegrator;
import org.signalml.app.document.TagDocument;
import org.signalml.app.view.common.dialogs.errors.Dialogs;
import org.signalml.plugin.export.SignalMLException;
/** CloseTagAction
*
*
* @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o.
*/
public class CloseTagAction extends AbstractFocusableSignalMLAction<TagDocumentFocusSelector> {
private static final long serialVersionUID = 1L;
protected static final Logger logger = Logger.getLogger(CloseTagAction.class);
private DocumentFlowIntegrator documentFlowIntegrator;
public CloseTagAction(TagDocumentFocusSelector tagDocumentFocusSelector) {
super(tagDocumentFocusSelector);
setText(_("Close Tag"));
setIconPath("org/signalml/app/icon/fileclose.png");
setToolTip(_("Close active tag"));
setMnemonic(KeyEvent.VK_C);
}
@Override
public void actionPerformed(ActionEvent ev) {
logger.debug("Close tag");
TagDocument activeTag = getActionFocusSelector().getActiveTagDocument();
if (activeTag == null) {
logger.warn("Active tag doesn't exist");
return;
}
try {
documentFlowIntegrator.closeDocument(activeTag, false, false);
} catch (SignalMLException ex) {
logger.error("Failed to close document", ex);
Dialogs.showExceptionDialog((Window) null, ex);
return;
} catch (IOException ex) {
logger.error("Failed to close document - i/o exception", ex);
Dialogs.showExceptionDialog((Window) null, ex);
return;
}
}
@Override
public void setEnabledAsNeeded() {
TagDocument activeTagDocument = getActionFocusSelector().getActiveTagDocument();
setEnabled(activeTagDocument != null && !isTagDocumentAMonitorTagDocument(activeTagDocument));
}
public DocumentFlowIntegrator getDocumentFlowIntegrator() {
return documentFlowIntegrator;
}
public void setDocumentFlowIntegrator(DocumentFlowIntegrator documentFlowIntegrator) {
this.documentFlowIntegrator = documentFlowIntegrator;
}
}