/* OpenTagAction.java created 2007-10-07 * */ package org.signalml.app.action.tag; import static org.signalml.app.util.i18n.SvarogI18n._; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.io.File; import org.apache.log4j.Logger; import org.signalml.app.action.AbstractFocusableSignalMLAction; import org.signalml.app.action.selector.SignalDocumentFocusSelector; import org.signalml.app.document.DocumentFlowIntegrator; import org.signalml.app.document.ManagedDocumentType; import org.signalml.app.document.TagDocument; import org.signalml.app.document.signal.SignalDocument; import org.signalml.app.model.document.OpenDocumentDescriptor; import org.signalml.app.view.workspace.ViewerFileChooser; import org.signalml.domain.tag.LegacyTagImporter; import org.signalml.domain.tag.StyledTagSet; import org.signalml.plugin.export.SignalMLException; /** OpenTagAction * * * @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o. */ public class OpenTagAction extends AbstractFocusableSignalMLAction<SignalDocumentFocusSelector> { private static final long serialVersionUID = 1L; protected static final Logger logger = Logger.getLogger(OpenTagAction.class); private DocumentFlowIntegrator documentFlowIntegrator; private ViewerFileChooser fileChooser; private Component optionPaneParent; public OpenTagAction(SignalDocumentFocusSelector signalDocumentFocusSelector) { super(signalDocumentFocusSelector); setText(_("Open Tag...")); setIconPath("org/signalml/app/icon/fileopen.png"); setToolTip(_("Open a tag file for this signal")); setMnemonic(KeyEvent.VK_O); } @Override public void actionPerformed(ActionEvent ev) { logger.debug("Open tag"); SignalDocument signalDocument = getActionFocusSelector().getActiveSignalDocument(); if (signalDocument == null) { logger.warn("Target document doesn't exist or is not a signal"); return; } File file = fileChooser.chooseOpenTag(optionPaneParent); if (file == null) { return; } OpenDocumentDescriptor ofd = new OpenDocumentDescriptor(); ofd.setType(ManagedDocumentType.TAG); ofd.setMakeActive(true); boolean legTag = true; LegacyTagImporter importer = new LegacyTagImporter(); StyledTagSet tagSet = null; try { tagSet = importer.importLegacyTags(file, signalDocument.getSamplingFrequency()); } catch (SignalMLException ex) { legTag = false; logger.info("Failed to import tags, not a legacy tag"); } TagDocument tagDocument = null; try { tagDocument = new TagDocument(tagSet); } catch (SignalMLException ex) { legTag = false; logger.info("Failed to create document, not a legacy tag"); } if (legTag) { ofd.getTagOptions().setExistingDocument(tagDocument); } else { ofd.setFile(file); } ofd.getTagOptions().setParent(signalDocument); documentFlowIntegrator.maybeOpenDocument(ofd); } @Override public void setEnabledAsNeeded() { setEnabled(isSignalDocumentOfflineSignalDocument(getActionFocusSelector().getActiveSignalDocument())); } public DocumentFlowIntegrator getDocumentFlowIntegrator() { return documentFlowIntegrator; } public void setDocumentFlowIntegrator(DocumentFlowIntegrator documentFlowIntegrator) { this.documentFlowIntegrator = documentFlowIntegrator; } public ViewerFileChooser getFileChooser() { return fileChooser; } public void setFileChooser(ViewerFileChooser fileChooser) { this.fileChooser = fileChooser; } public Component getOptionPaneParent() { return optionPaneParent; } public void setOptionPaneParent(Component optionPaneParent) { this.optionPaneParent = optionPaneParent; } }