|
From: <fu...@us...> - 2007-02-21 16:26:27
|
Revision: 365
http://svn.sourceforge.net/cishell/?rev=365&view=rev
Author: fugu13
Date: 2007-02-21 08:26:00 -0800 (Wed, 21 Feb 2007)
Log Message:
-----------
Now algorithms don't ask for parameters until after data conversion,
meaning parameters can be data-dependent.
This also means 'canceled' algorithms show up in the scheduler, but we
just need to add a way to indicate an algorithm was canceled.
Modified Paths:
--------------
trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/AlgorithmAction.java
trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/AlgorithmWrapper.java
Modified: trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/AlgorithmAction.java
===================================================================
--- trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/AlgorithmAction.java 2007-01-22 22:23:02 UTC (rev 364)
+++ trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/AlgorithmAction.java 2007-02-21 16:26:00 UTC (rev 365)
@@ -79,23 +79,14 @@
SchedulerService scheduler = (SchedulerService)
bContext.getService(bContext.getServiceReference(
SchedulerService.class.getName()));
- GUIBuilderService builder = (GUIBuilderService)
- ciContext.getService(GUIBuilderService.class.getName());
- AlgorithmFactory factory = (AlgorithmFactory) bContext.getService(ref);
- MetaTypeProvider provider = factory.createParameters(null);
- String pid = (String)ref.getProperty(Constants.SERVICE_PID);
printAlgorithmInformation();
- Dictionary params = new Hashtable();
- if (provider != null) {
- params = builder.createGUIandWait(pid, provider);
- }
- if (params != null) {
- scheduler.schedule(new AlgorithmWrapper(ref, bContext, ciContext, originalData, data, converters, provider, params), ref);
- }
+
+
+ scheduler.schedule(new AlgorithmWrapper(ref, bContext, ciContext, originalData, data, converters), ref);
} catch (Throwable e) {
e.printStackTrace();
}
Modified: trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/AlgorithmWrapper.java
===================================================================
--- trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/AlgorithmWrapper.java 2007-01-22 22:23:02 UTC (rev 364)
+++ trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/AlgorithmWrapper.java 2007-02-21 16:26:00 UTC (rev 365)
@@ -17,6 +17,7 @@
import java.util.Dictionary;
import java.util.Enumeration;
import java.util.HashMap;
+import java.util.Hashtable;
import java.util.List;
import java.util.Map;
@@ -55,21 +56,18 @@
public AlgorithmWrapper(ServiceReference ref, BundleContext bContext,
CIShellContext ciContext, Data[] originalData, Data[] data,
- Converter[][] converters, MetaTypeProvider provider,
- Dictionary parameters) {
+ Converter[][] converters) {
this.ref = ref;
this.bContext = bContext;
this.ciContext = ciContext;
this.originalData = originalData;
this.data = data;
this.converters = converters;
- this.parameters = parameters;
- this.provider = provider;
+
this.idToLabelMap = new HashMap();
this.progressMonitor = null;
- AlgorithmFactory factory = (AlgorithmFactory) bContext.getService(ref);
- algorithm = factory.createAlgorithm(data, parameters, ciContext);
+
}
/**
@@ -83,7 +81,25 @@
converters[i] = null;
}
}
-
+
+ GUIBuilderService builder = (GUIBuilderService)
+ ciContext.getService(GUIBuilderService.class.getName());
+
+ AlgorithmFactory factory = (AlgorithmFactory) bContext.getService(ref);
+ this.provider = factory.createParameters(data);
+ String pid = (String)ref.getProperty(Constants.SERVICE_PID);
+
+ this.parameters = new Hashtable();
+ if (provider != null) {
+ this.parameters = builder.createGUIandWait(pid, provider);
+ }
+
+ if(this.parameters == null) {
+ return new Data[0];
+ }
+
+ algorithm = factory.createAlgorithm(data, parameters, ciContext);
+
printParameters();
if (progressMonitor != null && algorithm instanceof ProgressTrackable) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|