package org.signalml.plugin.method; import java.awt.Window; import org.signalml.app.view.common.dialogs.errors.Dialogs; import org.signalml.method.TrackableMethod; import org.signalml.plugin.data.PluginConfigForMethod; import org.signalml.plugin.data.PluginConfigMethodData; import org.signalml.plugin.export.SignalMLException; import org.signalml.plugin.export.SvarogAccess; import org.signalml.plugin.export.method.BaseMethodData; import org.signalml.plugin.export.method.SvarogAccessMethod; import org.signalml.plugin.export.method.SvarogMethodConfigurer; import org.signalml.plugin.export.method.SvarogMethodDescriptor; import org.signalml.plugin.export.method.SvarogTask; import org.signalml.plugin.export.method.SvarogTaskStatusDialog; import org.signalml.task.LocalTask; public class PluginMethodManager { private SvarogAccess svarogAccess; private PluginConfigMethodData methodConfig; private PluginAbstractMethod method; public PluginMethodManager(SvarogAccess svarogAccess, PluginConfigForMethod config) { this.svarogAccess = svarogAccess; this.methodConfig = config.getMethodConfig(); this.method = methodConfig.getMethod(); PluginAbstractMethodDescriptor methodDescriptor = methodConfig .getMethodDescriptor(); methodDescriptor.setPluginMethodManager(this); SvarogAccessMethod methodManager = this.svarogAccess.getMethodAccess(); methodManager.registerMethod(method); methodManager.setMethodDescriptor(method, methodDescriptor); } public void runMethod() { SvarogAccessMethod methodManager = this.svarogAccess.getMethodAccess(); SvarogMethodDescriptor descriptor = methodManager.getMethodDescriptor(this.method); SvarogMethodConfigurer configurer = null; BaseMethodData data = null; if (descriptor != null) { configurer = methodManager.getConfigurer(descriptor); data = methodManager.createData(descriptor); if (data == null) { return; } } if (configurer != null) { try { boolean configurationOk = configurer.configure(this.method, data); if (!configurationOk) { return; } } catch (SignalMLException ex) { this.handleException(ex); return; } } SvarogTask task = new LocalTask(this.method, data, (method instanceof TrackableMethod)); task.addTaskEventListener(new PluginTaskMethodEvent(data)); SvarogAccessMethod svarogMethods = this.svarogAccess.getMethodAccess(); svarogMethods.addTask(task); svarogMethods.startTask(task); SvarogTaskStatusDialog dialog = svarogMethods.getTaskStatusDialog(task); dialog.showDialog(true); } public SvarogAccess getSvarogAccess() { return this.svarogAccess; } public PluginConfigMethodData getMethodConfig() { return this.methodConfig; } public void handleException(SignalMLException ex) { Dialogs.showExceptionDialog((Window) null, ex); } }