22
33import java .awt .event .ActionEvent ;
44import java .awt .event .ActionListener ;
5- import java .io .File ;
65import java .util .HashMap ;
6+ import java .util .List ;
77import java .util .Map ;
88
99import javax .swing .JComboBox ;
1010import javax .swing .JPanel ;
1111
1212import org .scijava .Priority ;
13- import org .scijava .convert .ConvertService ;
1413import org .scijava .log .LogService ;
15- import org .scijava .module .Module ;
16- import org .scijava .module .ModuleService ;
14+ import org .scijava .module .ModuleItem ;
1715import org .scijava .plugin .Parameter ;
1816import org .scijava .plugin .Plugin ;
1917import org .scijava .script .ScriptInfo ;
2220import org .scijava .widget .InputWidget ;
2321import org .scijava .widget .WidgetModel ;
2422
25- @ Plugin (type = InputWidget .class , priority = Priority .NORMAL_PRIORITY )
23+ @ Plugin (type = InputWidget .class , priority = Priority .NORMAL )
2624public class SwingScriptInfoWidget extends SwingInputWidget <ScriptInfo >
2725 implements ActionListener , ScriptInfoWidget <JPanel > {
2826
2927 @ Parameter
30- private ScriptService scripts ;
28+ private ScriptService scriptService ;
3129
3230 @ Parameter
33- private ModuleService modules ;
34-
35- @ Parameter
36- private ConvertService convert ;
31+ private BatchService batchService ;
3732
3833 @ Parameter
3934 private LogService log ;
@@ -55,30 +50,11 @@ public void actionPerformed(final ActionEvent e) {
5550 public void set (final WidgetModel model ) {
5651 super .set (model );
5752
58- // get required class from style attribute
59- String style = model .getItem ().getWidgetStyle ();
60- if (style == null ) {
61- style = "java.io.File" ; // default to File
62- }
63- Class <?> inputType ;
64- try {
65- inputType = Class .forName (style );
66- } catch (ClassNotFoundException exc ) {
67- log .warn ("Wrong style attribute: " , exc );
68- inputType = File .class ;
69- }
70-
7153 // create script map
72- for (ScriptInfo script : scripts .getScripts ()) {
73- Module scriptModule = modules .createModule (script );
74- for (String inputItem : scriptModule .getInputs ().keySet ()) {
75- // TODO consider replacing by isAssignableFrom
76- if (convert .supports (inputType , script .getInput (inputItem ).getType ())) {
77- //if (script.getInput(inputItem).getType().isAssignableFrom(inputType)) {
78- log .info ("Support conversion from " + inputType + " to " + script .getInput (inputItem ).getType ());
79- scriptMap .put (script .getMenuPath ().getMenuString (), script );
80- break ;
81- }
54+ for (ScriptInfo script : scriptService .getScripts ()) {
55+ List <ModuleItem <?>> compatibleInputs = batchService .batchableInputs (script );
56+ if (!compatibleInputs .isEmpty ()) {
57+ scriptMap .put (script .getMenuPath ().getMenuString (), script );
8258 }
8359 }
8460
0 commit comments