/* EvokedPotentialMethodDescriptor.java created 2008-01-12
*
*/
package org.signalml.app.method.ep;
import static org.signalml.app.util.i18n.SvarogI18n._;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.log4j.Logger;
import org.signalml.app.document.MonitorSignalDocument;
import org.signalml.app.document.TagDocument;
import org.signalml.app.document.signal.SignalDocument;
import org.signalml.app.method.ApplicationMethodDescriptor;
import org.signalml.app.method.ApplicationMethodManager;
import org.signalml.app.method.MethodConfigurer;
import org.signalml.app.method.MethodPresetManager;
import org.signalml.app.method.MethodResultConsumer;
import org.signalml.app.view.common.dialogs.OptionPane;
import org.signalml.method.ep.EvokedPotentialMethod;
import org.signalml.method.ep.EvokedPotentialParameters;
import org.signalml.plugin.export.method.BaseMethodData;
import org.signalml.plugin.export.signal.Document;
/** EvokedPotentialMethodDescriptor
*
*
* @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o.
*/
public class EvokedPotentialMethodDescriptor implements ApplicationMethodDescriptor {
protected static final Logger logger = Logger.getLogger(EvokedPotentialMethodDescriptor.class);
public static final String ICON_PATH = "org/signalml/app/icon/runmethod.png";
public static final String RUN_METHOD_STRING = _("Average evoked potentials");
private EvokedPotentialMethod method;
private EvokedPotentialMethodConfigurer configurer;
private EvokedPotentialMethodConsumer consumer;
private MethodPresetManager presetManager;
public EvokedPotentialMethodDescriptor(EvokedPotentialMethod method) {
this.method = method;
}
@Override
public EvokedPotentialMethod getMethod() {
return method;
}
@Override
public String getName() {
return RUN_METHOD_STRING;
}
@Override
public String getIconPath() {
return ICON_PATH;
}
@Override
public MethodPresetManager getPresetManager(ApplicationMethodManager methodManager, boolean existingOnly) {
if (presetManager == null && !existingOnly) {
presetManager = new MethodPresetManager(method.getName(), EvokedPotentialParameters.class);
presetManager.setProfileDir(methodManager.getProfileDir());
presetManager.setStreamer(methodManager.getStreamer());
try {
presetManager.readFromPersistence(null);
} catch (IOException ex) {
if (ex instanceof FileNotFoundException) {
logger.debug("Seems like ep preset configuration doesn't exist");
} else {
logger.error("Failed to read ep presets - presets lost", ex);
}
}
}
return presetManager;
}
@Override
public MethodConfigurer getConfigurer(ApplicationMethodManager methodManager) {
if (configurer == null) {
configurer = new EvokedPotentialMethodConfigurer();
configurer.setPresetManager(getPresetManager(methodManager, false));
configurer.initialize(methodManager);
}
return configurer;
}
@Override
public MethodResultConsumer getConsumer(ApplicationMethodManager methodManager) {
if (consumer == null) {
consumer = new EvokedPotentialMethodConsumer();
consumer.initialize(methodManager);
}
return consumer;
}
@Override
public BaseMethodData createData(ApplicationMethodManager methodManager) {
Document document = methodManager.getActionFocusManager().getActiveDocument();
if (!(document instanceof SignalDocument)) {
OptionPane.showNoActiveSignal(methodManager.getDialogParent());
return null;
}
if (document instanceof MonitorSignalDocument) {
OptionPane.showThisToolWorksOnlyForNonMonitorSignals(methodManager.getDialogParent());
return null;
}
SignalDocument signalDocument = (SignalDocument) document;
TagDocument tagDocument = signalDocument.getActiveTag();
EvokedPotentialApplicationData data = new EvokedPotentialApplicationData();
data.setSignalDocument(signalDocument);
data.setTagDocument(tagDocument);
return data;
}
}