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. |