diff --git a/app/src/cc/arduino/autocomplete/BaseCCompletionProvider.java b/app/src/cc/arduino/autocomplete/BaseCCompletionProvider.java new file mode 100755 index 000000000..cf0b1dae1 --- /dev/null +++ b/app/src/cc/arduino/autocomplete/BaseCCompletionProvider.java @@ -0,0 +1,17 @@ +package cc.arduino.autocomplete; + +import org.fife.ui.autocomplete.DefaultCompletionProvider; + +/** + * Base completion provider for C/C++. + * @author Ricardo JL Rufino (ricardo@criativasoft.com.br) + * @date 28/04/2017 + */ +public class BaseCCompletionProvider extends DefaultCompletionProvider{ + + @Override + protected boolean isValidChar(char ch) { + return super.isValidChar(ch) || '.' == ch || '>' == ch || '-' == ch || '<' == ch || '#' == ch || ':' == ch /**|| getParameterListStart() == ch */; + } + +} diff --git a/app/src/cc/arduino/autocomplete/CompletionContext.java b/app/src/cc/arduino/autocomplete/CompletionContext.java deleted file mode 100755 index 18f985243..000000000 --- a/app/src/cc/arduino/autocomplete/CompletionContext.java +++ /dev/null @@ -1,44 +0,0 @@ -package cc.arduino.autocomplete; - -import org.fife.ui.autocomplete.CompletionProvider; - -import processing.app.Sketch; -import processing.app.syntax.SketchTextArea; - -public class CompletionContext { - - private Sketch sketch; - - private SketchTextArea textArea; - - private CompletionProvider delegate; // of: AutoComplete/RSyntaxTextArea - - public CompletionContext(Sketch sketch, SketchTextArea textArea,CompletionProvider delegate) { - this.sketch = sketch; - this.textArea = textArea; - this.delegate = delegate; - } - - - public String getAlreadyEnteredText() { - return delegate.getAlreadyEnteredText(textArea); - } - - public int getLineNumber() { - return textArea.getCaretLineNumber(); - } - - - public Sketch getSketch() { - return sketch; - } - - public SketchTextArea getTextArea() { - return textArea; - } - - public CompletionProvider getDelegate() { - return delegate; - } - -} diff --git a/app/src/cc/arduino/autocomplete/CompletionProvider.java b/app/src/cc/arduino/autocomplete/CompletionProvider.java deleted file mode 100755 index 8f7ac8b79..000000000 --- a/app/src/cc/arduino/autocomplete/CompletionProvider.java +++ /dev/null @@ -1,11 +0,0 @@ -package cc.arduino.autocomplete; - -import java.util.List; - -import org.fife.ui.autocomplete.Completion; - -public interface CompletionProvider { - - List getSuggestions(CompletionContext context); - -} \ No newline at end of file diff --git a/app/src/cc/arduino/autocomplete/FakeCompletionProvider.java b/app/src/cc/arduino/autocomplete/FakeCompletionProvider.java index 783aefd23..681d0e81e 100755 --- a/app/src/cc/arduino/autocomplete/FakeCompletionProvider.java +++ b/app/src/cc/arduino/autocomplete/FakeCompletionProvider.java @@ -3,20 +3,26 @@ package cc.arduino.autocomplete; import java.util.LinkedList; import java.util.List; +import javax.swing.text.JTextComponent; + import org.fife.ui.autocomplete.BasicCompletion; import org.fife.ui.autocomplete.Completion; -public class FakeCompletionProvider implements CompletionProvider { - +import processing.app.syntax.SketchTextArea; +public class FakeCompletionProvider extends BaseCCompletionProvider { + @Override - public List getSuggestions(CompletionContext context) { + protected List getCompletionsImpl(JTextComponent comp) { List list = new LinkedList<>(); - list.add(new BasicCompletion(context.getDelegate(), "Text: " + context.getAlreadyEnteredText())); - list.add(new BasicCompletion(context.getDelegate(), "Line: " + context.getLineNumber())); + + SketchTextArea area = (SketchTextArea) comp; + + list.add(new BasicCompletion(this, "Text: " + getAlreadyEnteredText(comp))); + list.add(new BasicCompletion(this, "Line: " + area.getCaretLineNumber())); return list; } - + } diff --git a/app/src/cc/arduino/autocomplete/rsyntax/SketchCompletionProvider.java b/app/src/cc/arduino/autocomplete/SketchCompletionProvider.java similarity index 51% rename from app/src/cc/arduino/autocomplete/rsyntax/SketchCompletionProvider.java rename to app/src/cc/arduino/autocomplete/SketchCompletionProvider.java index 39a609d62..7c233209a 100755 --- a/app/src/cc/arduino/autocomplete/rsyntax/SketchCompletionProvider.java +++ b/app/src/cc/arduino/autocomplete/SketchCompletionProvider.java @@ -1,33 +1,27 @@ -package cc.arduino.autocomplete.rsyntax; +package cc.arduino.autocomplete; +import org.fife.ui.autocomplete.CompletionProvider; import org.fife.ui.autocomplete.LanguageAwareCompletionProvider; -import cc.arduino.autocomplete.CompletionContext; -import cc.arduino.autocomplete.CompletionProvider; import processing.app.Sketch; import processing.app.syntax.SketchTextArea; - /** * CompletionProvider for Arduino/CPP Language.
- * Setup basic logic for completions using {@link LanguageAwareCompletionProvider} - * Filtering and decision will appear in the autocomplete dialog by implementations of: {@link CompletionProvider}.
+ * Setup basic logic for completions using {@link LanguageAwareCompletionProvider}.
+ * Filtering and decision will appear in the autocomplete dialog by implementations of: {@link CompletionProvider}.
* * @author Ricardo JL Rufino (ricardo@criativasoft.com.br) * @date 28/04/2017 */ -public class SketchCompletionProvider extends LanguageAwareCompletionProvider{ - +public class SketchCompletionProvider extends LanguageAwareCompletionProvider { + public SketchCompletionProvider(Sketch sketch, SketchTextArea textArea, CompletionProvider provider) { - CompletionContext context = new CompletionContext(sketch, textArea, this); - - setDefaultCompletionProvider(new CompletionProviderBridge(context, provider)); -// provider.setParameterChoicesProvider(new ParameterChoicesProvider(this)); -// provider.setParameterizedCompletionParams('(', ", ", ')'); - - } - + setDefaultCompletionProvider(provider); + // provider.setParameterChoicesProvider(new ParameterChoicesProvider(this)); + // provider.setParameterizedCompletionParams('(', ", ", ')'); + + } - } \ No newline at end of file diff --git a/app/src/cc/arduino/autocomplete/rsyntax/CompletionProviderBridge.java b/app/src/cc/arduino/autocomplete/rsyntax/CompletionProviderBridge.java deleted file mode 100755 index 547668fcd..000000000 --- a/app/src/cc/arduino/autocomplete/rsyntax/CompletionProviderBridge.java +++ /dev/null @@ -1,36 +0,0 @@ -package cc.arduino.autocomplete.rsyntax; - -import java.util.List; - -import javax.swing.text.JTextComponent; - -import org.fife.ui.autocomplete.Completion; -import org.fife.ui.autocomplete.DefaultCompletionProvider; - -import cc.arduino.autocomplete.CompletionContext; -import cc.arduino.autocomplete.CompletionProvider; - -public class CompletionProviderBridge extends DefaultCompletionProvider{ - - private CompletionProvider provider; - - private CompletionContext context; - - public CompletionProviderBridge(CompletionContext context, CompletionProvider provider) { - this.provider = provider; - this.context = context; - } - - - @Override - public List getCompletionsImpl(JTextComponent comp) { - return provider.getSuggestions(context); - - } - - @Override - protected boolean isValidChar(char ch) { - return super.isValidChar(ch) || '.' == ch || '>' == ch || '-' == ch || '<' == ch || '#' == ch || ':' == ch /**|| getParameterListStart() == ch */; - } - -} diff --git a/app/src/processing/app/syntax/SketchTextArea.java b/app/src/processing/app/syntax/SketchTextArea.java index d83c5e014..95a5ec7ab 100644 --- a/app/src/processing/app/syntax/SketchTextArea.java +++ b/app/src/processing/app/syntax/SketchTextArea.java @@ -91,6 +91,7 @@ import javax.swing.text.Segment; import org.apache.commons.compress.utils.IOUtils; import org.fife.ui.autocomplete.AutoCompletion; +import org.fife.ui.autocomplete.CompletionProvider; import org.fife.ui.rsyntaxtextarea.LinkGenerator; import org.fife.ui.rsyntaxtextarea.LinkGeneratorResult; import org.fife.ui.rsyntaxtextarea.RSyntaxDocument; @@ -103,8 +104,7 @@ import org.fife.ui.rsyntaxtextarea.TokenTypes; import org.fife.ui.rtextarea.RTextArea; import org.fife.ui.rtextarea.RTextAreaUI; -import cc.arduino.autocomplete.CompletionProvider; -import cc.arduino.autocomplete.rsyntax.SketchCompletionProvider; +import cc.arduino.autocomplete.SketchCompletionProvider; import processing.app.Base; import processing.app.BaseNoGui; import processing.app.PreferencesData; @@ -123,8 +123,6 @@ public class SketchTextArea extends RSyntaxTextArea { private PdeKeywords pdeKeywords; - private SketchCompletionProvider completionProvider; - public SketchTextArea(RSyntaxDocument document, PdeKeywords pdeKeywords) throws IOException { super(document); this.pdeKeywords = pdeKeywords; @@ -139,9 +137,9 @@ public class SketchTextArea extends RSyntaxTextArea { public void setupAutoComplete(Sketch sketch, CompletionProvider provider) { - this.completionProvider = new SketchCompletionProvider(sketch, this, provider); + SketchCompletionProvider completionProvider = new SketchCompletionProvider(sketch, this, provider); - AutoCompletion ac = new AutoCompletion( this.completionProvider); + AutoCompletion ac = new AutoCompletion( completionProvider ); ac.setAutoActivationEnabled(true); ac.setShowDescWindow(false); diff --git a/arduino-core/src/processing/app/SketchFile.java b/arduino-core/src/processing/app/SketchFile.java index 9e0f18732..35682da60 100644 --- a/arduino-core/src/processing/app/SketchFile.java +++ b/arduino-core/src/processing/app/SketchFile.java @@ -247,10 +247,6 @@ public class SketchFile { return (o instanceof SketchFile) && file.equals(((SketchFile) o).file); } - public Sketch getSketch() { - return sketch; - } - /** * Load this piece of code from a file and return the contents. This * completely ignores any changes in the linked storage, if any, and