/* ChooseActiveTagAction.java created 2010-12-10
*
*/
package org.signalml.app.action.tag;
import static org.signalml.app.util.i18n.SvarogI18n._;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import org.signalml.app.action.AbstractFocusableSignalMLAction;
import org.signalml.app.action.selector.SignalDocumentFocusSelector;
import org.signalml.app.document.signal.SignalDocument;
import org.signalml.app.view.signal.SignalView;
import org.signalml.app.view.signal.popup.CompareTagsPopupDialog;
import org.signalml.app.view.tag.comparison.TagComparisonDialog;
import org.signalml.plugin.export.view.DocumentView;
/**
* This class is responsible for action evoked when the user wants to compare
* two tags (for example: the user selects an appropriate menu item in
* the main menu).
*
* @author Piotr Szachewicz
*/
public class CompareTagsAction extends AbstractFocusableSignalMLAction<SignalDocumentFocusSelector> {
/**
* A dialog for showing the results of comparison.
*/
private TagComparisonDialog tagComparisonDialog;
/**
* Constructor.
* localized message codes
* @param signalDocumentFocusSelector a {@link SignalDocumentFocusSelector}
* used to get the active document.
*/
public CompareTagsAction(SignalDocumentFocusSelector signalDocumentFocusSelector) {
super(signalDocumentFocusSelector);
setText(_("Compare tags"));
setIconPath("org/signalml/app/icon/comparetags.png");
setToolTip(_("Compare tags (2 or more must be open)"));
setMnemonic(KeyEvent.VK_P);
}
@Override
public void actionPerformed(ActionEvent e) {
DocumentView documentView = getActionFocusSelector().getActiveSignalDocument().getDocumentView();
SignalView signalView = null;
if (documentView instanceof SignalView)
signalView = (SignalView) documentView;
CompareTagsPopupDialog dialog = new CompareTagsPopupDialog(null, true);
dialog.setTagComparisonDialog(tagComparisonDialog);
dialog.setSignalView(signalView);
dialog.showDialog(null, true);
}
@Override
public void setEnabledAsNeeded() {
SignalDocument signalDocument = getActionFocusSelector().getActiveSignalDocument();
if (signalDocument != null && signalDocument.getTagDocuments().size() >= 2)
setEnabled(true);
else
setEnabled(false);
}
/**
* Returns the {@link TagComparisonDialog} used by this action.
* @return the {@link TagComparisonDialog} used by this action
*/
public TagComparisonDialog getTagComparisonDialog() {
return tagComparisonDialog;
}
/**
* Sets the {@link TagComparisonDialog} to be used when evoking this
* action.
* @param tagComparisonDialog a {@link TagComparisonDialog} to be used
* by this action
*/
public void setTagComparisonDialog(TagComparisonDialog tagComparisonDialog) {
this.tagComparisonDialog = tagComparisonDialog;
}
}