3131import java .util .ArrayList ;
3232import java .util .Collections ;
3333import java .util .List ;
34- import java .util .Vector ;
3534import java .util .regex .Matcher ;
3635import java .util .regex .Pattern ;
3736import java .util .stream .Collectors ;
4443import org .fife .ui .autocomplete .Completion ;
4544import org .fife .ui .autocomplete .DefaultCompletionProvider ;
4645import org .fife .ui .rsyntaxtextarea .RSyntaxTextArea ;
47- import org .scijava .ui .swing .script .autocompletion .AutoCompletionListener ;
4846import org .scijava .ui .swing .script .autocompletion .ClassUtil ;
4947import org .scijava .ui .swing .script .autocompletion .ImportCompletionImpl ;
5048import org .scijava .ui .swing .script .autocompletion .ImportFormat ;
5149
5250public class JythonAutocompletionProvider extends DefaultCompletionProvider {
5351
54- static private final Vector <AutoCompletionListener > autocompletion_listeners = new Vector <>();
55-
56- static {
57- try {
58- // Load the class so that it adds itself to the autocompletion_listeners
59- @ SuppressWarnings ("unused" )
60- Class <?> c = JythonAutoCompletions .class ;
61- } catch (Throwable t ) {
62- System .out .println ("WARNING did not load JythonAutoCompletions" );
63- }
64- }
65-
52+ private final JythonAutoCompletions autoCompletions = new JythonAutoCompletions ();
6653 private final RSyntaxTextArea text_area ;
6754 private final ImportFormat formatter ;
6855
@@ -101,15 +88,6 @@ private final List<Completion> asCompletionList(final Stream<String> stream, fin
10188 .collect (Collectors .toList ());
10289 }
10390
104- static public void addAutoCompletionListener (final AutoCompletionListener listener ) {
105- if (!autocompletion_listeners .contains (listener ))
106- autocompletion_listeners .add (listener );
107- }
108-
109- static public void removeAutoCompletionListener (final AutoCompletionListener listener ) {
110- autocompletion_listeners .remove (listener );
111- }
112-
11391 @ Override
11492 public List <Completion > getCompletionsImpl (final JTextComponent comp ) {
11593 final ArrayList <Completion > completions = new ArrayList <>();
@@ -126,15 +104,13 @@ public List<Completion> getCompletionsImpl(final JTextComponent comp) {
126104 return completions ;
127105 }
128106 // Completions provided by listeners (e.g. for methods and fields and variables and builtins from jython-autocompletion package)
129- for (final AutoCompletionListener listener : new Vector <>(autocompletion_listeners )) {
130- try {
131- final List <Completion > cs = listener .completionsFor (this , codeWithoutLastLine , currentLine , alreadyEnteredText );
132- if (null != cs )
133- completions .addAll (cs );
134- } catch (Exception e ) {
135- System .out .println ("Failed to get autocompletions from " + listener );
136- e .printStackTrace ();
137- }
107+ try {
108+ final List <Completion > cs = autoCompletions .completionsFor (this , codeWithoutLastLine , currentLine , alreadyEnteredText );
109+ if (cs != null ) completions .addAll (cs );
110+ }
111+ catch (Exception e ) {
112+ System .out .println ("Failed to get autocompletions from " + autoCompletions );
113+ e .printStackTrace ();
138114 }
139115 // Java class discovery for completions with auto-imports
140116 completions .addAll (getCompletions (alreadyEnteredText ));
0 commit comments