package org.signalml.plugin.newstager.method;
import org.apache.log4j.Logger;
import org.signalml.app.method.ApplicationIterableMethodDescriptor;
import org.signalml.app.method.ApplicationMethodManager;
import org.signalml.app.method.MethodConfigurer;
import org.signalml.app.method.MethodIterationResultConsumer;
import org.signalml.app.method.MethodPresetManager;
import org.signalml.app.method.MethodResultConsumer;
import org.signalml.app.view.common.dialogs.OptionPane;
import org.signalml.method.Method;
import org.signalml.plugin.export.NoActiveObjectException;
import org.signalml.plugin.export.method.BaseMethodData;
import org.signalml.plugin.export.signal.ExportedSignalDocument;
import org.signalml.plugin.export.signal.SvarogAccessSignal;
import org.signalml.plugin.method.PluginAbstractMethodDescriptor;
import org.signalml.plugin.method.helper.PluginPresetManagerHelper;
import org.signalml.plugin.newstager.NewStagerPlugin;
import org.signalml.plugin.newstager.data.NewStagerApplicationData;
import org.signalml.plugin.newstager.data.NewStagerParametersPreset;
public class NewStagerMethodDescriptor extends PluginAbstractMethodDescriptor
implements ApplicationIterableMethodDescriptor {
protected static final Logger logger = Logger
.getLogger(NewStagerMethodDescriptor.class);
private NewStagerMethodConfigurer configurer;
private MethodPresetManager presetManager;
private NewStagerMethodConsumer consumer;
@Override
public MethodIterationResultConsumer getIterationConsumer(
ApplicationMethodManager methodManager) {
return null;
}
@Override
public String getIterationIconPath() {
return null;
}
@Override
public String getIterationName() {
return null;
}
@Override
public String getIconPath() {
return NewStagerPlugin.iconPath;
}
@Override
public BaseMethodData createData(ApplicationMethodManager methodManager) {
SvarogAccessSignal signalAccess = this.methodManager.getSvarogAccess()
.getSignalAccess();
ExportedSignalDocument signalDocument;
try {
signalDocument = signalAccess.getActiveSignalDocument();
} catch (NoActiveObjectException e) {
signalDocument = null;
}
if (signalDocument == null) {
OptionPane.showNoActiveSignal(methodManager.getDialogParent());
return null;
}
NewStagerApplicationData data = new NewStagerApplicationData();
data.setSignalAccess(signalAccess);
data.setSignalDocument(signalDocument);
// ConfigurationDefaults.setStagerParameters(data.getParameters());
// //FIXME: what's this?
return data;
}
@Override
public MethodConfigurer getConfigurer(ApplicationMethodManager methodManager) {
if (configurer == null) {
configurer = new NewStagerMethodConfigurer();
configurer.setPresetManager(getPresetManager(methodManager, false));
configurer.initialize(this.methodManager);
}
return configurer;
}
@Override
public MethodResultConsumer getConsumer(
ApplicationMethodManager methodManager) {
if (consumer == null) {
consumer = new NewStagerMethodConsumer();
consumer.initialize(this.methodManager);
}
return consumer;
}
@Override
public Method getMethod() {
return this.methodManager.getMethodConfig().getMethod();
}
@Override
public String getName() {
return "";
}
@Override
public MethodPresetManager getPresetManager(
ApplicationMethodManager methodManager, boolean existingOnly) {
if (presetManager == null && !existingOnly) {
presetManager = PluginPresetManagerHelper.GetPresetForMethod(
methodManager, this.methodManager, this.getMethod()
.getName(), NewStagerParametersPreset.class);
}
return presetManager;
}
}