/* NewTagAction.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.SignalDocumentFocusSelector; import org.signalml.app.document.DocumentFlowIntegrator; import org.signalml.app.document.ManagedDocumentType; import org.signalml.app.document.MonitorSignalDocument; import org.signalml.app.document.TagDocument; import org.signalml.app.document.signal.SignalDocument; import org.signalml.app.model.document.OpenDocumentDescriptor; import org.signalml.app.model.tag.NewTagDescriptor; import org.signalml.app.model.tag.NewTagDescriptor.NewTagTypeMode; import org.signalml.app.view.common.dialogs.errors.Dialogs; import org.signalml.app.view.tag.NewTagDialog; import org.signalml.exception.SanityCheckException; import org.signalml.plugin.export.SignalMLException; /** NewTagAction * * * @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o. */ public class NewTagAction extends AbstractFocusableSignalMLAction<SignalDocumentFocusSelector> { private static final long serialVersionUID = 1L; protected static final Logger logger = Logger.getLogger(NewTagAction.class); private DocumentFlowIntegrator documentFlowIntegrator; private NewTagDialog newTagDialog; public NewTagAction(SignalDocumentFocusSelector signalDocumentFocusSelector) { super(signalDocumentFocusSelector); setText(_("New Tag")); setIconPath("org/signalml/app/icon/filenew.png"); setToolTip(_("Create a new tag for this signal")); setMnemonic(KeyEvent.VK_N); } @Override public void actionPerformed(ActionEvent ev) { logger.debug("New tag"); SignalDocument signalDocument = getActionFocusSelector().getActiveSignalDocument(); if (signalDocument == null) { logger.warn("Target document doesn't exist or is not a signal"); return; } OpenDocumentDescriptor ofd = new OpenDocumentDescriptor(); ofd.setType(ManagedDocumentType.TAG); ofd.setMakeActive(true); NewTagDescriptor descriptor = new NewTagDescriptor(); descriptor.setPageSize(signalDocument.getPageSize()); descriptor.setBlocksPerPage(signalDocument.getBlocksPerPage()); boolean ok = newTagDialog.showDialog(descriptor, 0.5, 0.2); if (!ok) { return; } TagDocument tagDocument = null; try { NewTagTypeMode mode = descriptor.getMode(); if (mode == NewTagTypeMode.EMPTY) { tagDocument = new TagDocument(descriptor.getPageSize(), descriptor.getBlocksPerPage()); } else if (mode == NewTagTypeMode.DEFAULT_SLEEP) { tagDocument = TagDocument.getNewSleepDefaultDocument(descriptor.getPageSize(), descriptor.getBlocksPerPage()); } else if (mode == NewTagTypeMode.PRESET) { tagDocument = new TagDocument(descriptor.getTagStylesPreset()); } else if (mode == NewTagTypeMode.FROM_FILE) { tagDocument = TagDocument.getStylesFromFileDocument(descriptor.getFile(), descriptor.getPageSize(), descriptor.getBlocksPerPage()); } else { throw new SanityCheckException("Unknown mode [" + mode + "]"); } } catch (SignalMLException ex) { logger.error("Failed to create document", ex); Dialogs.showExceptionDialog((Window) null, ex); return; } catch (IOException ex) { logger.error("Failed to create document - i/o exception", ex); Dialogs.showExceptionDialog((Window) null, ex); return; } ofd.getTagOptions().setParent(signalDocument); ofd.getTagOptions().setExistingDocument(tagDocument); 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 NewTagDialog getNewTagDialog() { return newTagDialog; } public void setNewTagDialog(NewTagDialog newTagDialog) { this.newTagDialog = newTagDialog; } }