mirror of
https://github.com/arduino/Arduino.git
synced 2025-02-26 20:54:22 +01:00
Refactoring autocomplete structure
This commit is contained in:
parent
c84fd1a398
commit
2015c98908
17
app/src/cc/arduino/autocomplete/BaseCCompletionProvider.java
Executable file
17
app/src/cc/arduino/autocomplete/BaseCCompletionProvider.java
Executable file
@ -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 */;
|
||||
}
|
||||
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
package cc.arduino.autocomplete;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.fife.ui.autocomplete.Completion;
|
||||
|
||||
public interface CompletionProvider {
|
||||
|
||||
List<Completion> getSuggestions(CompletionContext context);
|
||||
|
||||
}
|
@ -3,17 +3,23 @@ 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<Completion> getSuggestions(CompletionContext context) {
|
||||
protected List<Completion> getCompletionsImpl(JTextComponent comp) {
|
||||
List<Completion> 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;
|
||||
}
|
||||
|
@ -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. <br/>
|
||||
* Setup basic logic for completions using {@link LanguageAwareCompletionProvider}
|
||||
* Filtering and decision will appear in the autocomplete dialog by implementations of: {@link CompletionProvider}. <br/>
|
||||
* Setup basic logic for completions using {@link LanguageAwareCompletionProvider}. <br/>
|
||||
* Filtering and decision will appear in the autocomplete dialog by implementations of: {@link CompletionProvider}.<br/>
|
||||
*
|
||||
* @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('(', ", ", ')');
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -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<Completion> 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 */;
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user