This commit is contained in:
Ben Fry
2015-08-23 17:48:28 -04:00
parent 31a16448cc
commit 4a8553237f
3 changed files with 61 additions and 91 deletions

View File

@@ -57,10 +57,6 @@ public class JavaTextArea extends JEditTextArea {
protected PdeTextAreaDefaults defaults;
protected JavaEditor editor;
// static final int LEFT_GUTTER = Editor.LEFT_GUTTER;
// static final int RIGHT_GUTTER = Editor.RIGHT_GUTTER;
// static final int GUTTER_MARGIN = 3;
// cached mouselisteners, these are wrapped by MouseHandler
protected MouseListener[] mouseListeners;
@@ -87,11 +83,6 @@ public class JavaTextArea extends JEditTextArea {
private CompletionPanel suggestion;
protected JavaTextAreaPainter getCustomPainter() {
return (JavaTextAreaPainter) painter;
}
public JavaTextArea(TextAreaDefaults defaults, JavaEditor editor) {
super(defaults, new JavaInputHandler(editor));
this.editor = editor;
@@ -155,14 +146,12 @@ public class JavaTextArea extends JEditTextArea {
}
/**
* Sets ErrorCheckerService and loads theme for TextArea(XQMode)
*
* @param ecs
* @param mode
*/
protected JavaTextAreaPainter getCustomPainter() {
return (JavaTextAreaPainter) painter;
}
public void setMode(JavaMode mode) {
// errorCheckerService = ecs;
getCustomPainter().setMode(mode);
}
@@ -183,17 +172,14 @@ public class JavaTextArea extends JEditTextArea {
} else if (evt.getKeyCode() == KeyEvent.VK_ENTER &&
evt.getID() == KeyEvent.KEY_PRESSED) {
if (suggestion != null) {
if (suggestion != null &&
suggestion.isVisible() &&
suggestion.insertSelection(CompletionPanel.KEYBOARD_COMPLETION)) {
evt.consume();
// Still try to show suggestions after inserting if it's
// the case of overloaded methods. See #2755
if (suggestion.isVisible()) {
if (suggestion.insertSelection(CompletionPanel.KEYBOARD_COMPLETION)) {
//hideSuggestion(); // Kill it!
evt.consume();
// Still try to show suggestions after inserting if it's
// the case of overloaded methods. See #2755
if(suggestion.isVisible())
prepareSuggestions(evt);
return;
}
prepareSuggestions(evt);
}
}
}
@@ -268,14 +254,12 @@ public class JavaTextArea extends JEditTextArea {
keyChar == KeyEvent.VK_ESCAPE ||
keyChar == KeyEvent.VK_TAB ||
keyChar == KeyEvent.CHAR_UNDEFINED) {
return;
} else if (keyChar == ')') {
hideSuggestion(); // See #2741
return;
}
// https://github.com/processing/processing/issues/2741
hideSuggestion();
if (keyChar == '.') {
} else if (keyChar == '.') {
if (JavaMode.codeCompletionsEnabled) {
Messages.log("[KeyEvent]" + KeyEvent.getKeyText(event.getKeyCode()) + " |Prediction started");
Messages.log("Typing: " + fetchPhrase(event));
@@ -307,8 +291,8 @@ public class JavaTextArea extends JEditTextArea {
/** Kickstart auto-complete suggestions */
private void prepareSuggestions(final KeyEvent evt){
SwingWorker<Object, Object> worker = new SwingWorker<Object, Object>() {
private void prepareSuggestions(final KeyEvent evt) {
new SwingWorker<Object, Object>() {
protected Object doInBackground() throws Exception {
// Provide completions only if it's enabled
if (JavaMode.codeCompletionsEnabled &&
@@ -318,8 +302,7 @@ public class JavaTextArea extends JEditTextArea {
}
return null;
}
};
worker.execute();
}.execute();
}
@@ -395,7 +378,7 @@ public class JavaTextArea extends JEditTextArea {
* Then triggers code completion for that word.
* @param evt - the KeyEvent which triggered this method
*/
public String fetchPhrase(KeyEvent evt) {
protected String fetchPhrase(KeyEvent evt) {
int off = getCaretPosition();
Messages.log("off " + off);
if (off < 0)
@@ -515,36 +498,6 @@ public class JavaTextArea extends JEditTextArea {
}
// /**
// * Retrieve the total width of the gutter area.
// * @return gutter width in pixels
// */
// protected int getGutterWidth() {
// if (!editor.isDebugToolbarEnabled()) {
// return 0;
// }
//
// FontMetrics fm = painter.getFontMetrics();
// int textWidth = Math.max(fm.stringWidth(breakpointMarker),
// fm.stringWidth(currentLineMarker));
// return textWidth + 2 * gutterPadding;
// }
//
//
// /**
// * Retrieve the width of margins applied to the left and right of the gutter
// * text.
// *
// * @return margins in pixels
// */
// protected int getGutterMargins() {
// if (!editor.isDebugToolbarEnabled()) {
// return 0;
// }
// return gutterPadding;
// }
/**
* Set the gutter text of a specific line.
*

View File

@@ -20,7 +20,6 @@ along with this program; if not, write to the Free Software Foundation, Inc.
package processing.mode.java.pdex;
import processing.mode.java.JavaMode;
import processing.mode.java.JavaEditor;
import processing.mode.java.tweak.*;
@@ -48,6 +47,7 @@ import javax.swing.text.Segment;
import javax.swing.text.Utilities;
import processing.app.Messages;
import processing.app.Mode;
import processing.app.Platform;
import processing.app.SketchCode;
import processing.app.syntax.SyntaxDocument;
@@ -69,8 +69,6 @@ public class JavaTextAreaPainter extends TextAreaPainter
public Color errorUnderlineColor;
public Color warningUnderlineColor;
// public Color errorMarkerColor;
// public Color warningMarkerColor;
protected Font gutterTextFont;
protected Color gutterTextColor;
@@ -99,7 +97,7 @@ public class JavaTextAreaPainter extends TextAreaPainter
addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent evt) {
if (!getEditor().hasJavaTabs()) { // Ctrl + Click disabled for java tabs
if (!getJavaEditor().hasJavaTabs()) { // Ctrl + Click disabled for java tabs
if (evt.getButton() == MouseEvent.BUTTON1) {
if ((evt.isControlDown() && !Platform.isMacOS()) || evt.isMetaDown()) {
handleCtrlClick(evt);
@@ -114,7 +112,7 @@ public class JavaTextAreaPainter extends TextAreaPainter
long lastTime; // OS X seems to be firing multiple mouse events
public void mousePressed(MouseEvent event) {
JavaEditor javaEditor = getEditor();
JavaEditor javaEditor = getJavaEditor();
// Don't toggle breakpoints when the debugger isn't enabled
// https://github.com/processing/processing/issues/3306
if (javaEditor.isDebuggerEnabled()) {
@@ -208,8 +206,8 @@ public class JavaTextAreaPainter extends TextAreaPainter
if (Character.isDigit(word.charAt(0)))
return;
Messages.log(getEditor().getErrorChecker().mainClassOffset + line + "|" + line + "| offset " + xLS + word + " <= \n");
getEditor().getErrorChecker().getASTGenerator().scrollToDeclaration(line, word, xLS);
Messages.log(getJavaEditor().getErrorChecker().mainClassOffset + line + "|" + line + "| offset " + xLS + word + " <= \n");
getJavaEditor().getErrorChecker().getASTGenerator().scrollToDeclaration(line, word, xLS);
}
}
@@ -265,7 +263,7 @@ public class JavaTextAreaPainter extends TextAreaPainter
gfx.fillRect(0, y, Editor.LEFT_GUTTER, fm.getHeight());
String text = null;
if (getEditor().isDebuggerEnabled()) {
if (getJavaEditor().isDebuggerEnabled()) {
text = getTextArea().getGutterText(line);
}
// if no special text for a breakpoint, just show the line number
@@ -335,7 +333,7 @@ public class JavaTextAreaPainter extends TextAreaPainter
* @param x
*/
protected void paintErrorLine(Graphics gfx, int line, int x) {
ErrorCheckerService ecs = getEditor().getErrorChecker();
ErrorCheckerService ecs = getJavaEditor().getErrorChecker();
if (ecs == null || ecs.problemsList == null) {
return;
}
@@ -347,7 +345,7 @@ public class JavaTextAreaPainter extends TextAreaPainter
errorLineCoords.clear();
// Check if current line contains an error. If it does, find if it's an
// error or warning
for (LineMarker emarker : getEditor().getErrorPoints()) {
for (LineMarker emarker : getJavaEditor().getErrorPoints()) {
if (emarker.getProblem().getLineNumber() == line) {
notFound = false;
if (emarker.getType() == LineMarker.WARNING) {
@@ -460,7 +458,7 @@ public class JavaTextAreaPainter extends TextAreaPainter
/**
* Sets ErrorCheckerService and loads theme for TextAreaPainter(XQMode)
*/
public void setMode(JavaMode mode) {
public void setMode(Mode mode) {
errorUnderlineColor = mode.getColor("editor.error.underline.color");
warningUnderlineColor = mode.getColor("editor.warning.underline.color");
// errorMarkerColor = mode.getColor("editor.errormarkercolor");
@@ -474,7 +472,7 @@ public class JavaTextAreaPainter extends TextAreaPainter
@Override
public String getToolTipText(MouseEvent event) {
if (!getEditor().hasJavaTabs()) {
if (!getJavaEditor().hasJavaTabs()) {
int off = textArea.xyToOffset(event.getX(), event.getY());
if (off < 0) {
setToolTipText(null);
@@ -543,8 +541,8 @@ public class JavaTextAreaPainter extends TextAreaPainter
setToolTipText(null);
return super.getToolTipText(event);
}
String tooltipText = getEditor().getErrorChecker().getASTGenerator()
.getLabelForASTNode(line, word, xLS);
ASTGenerator ast = getJavaEditor().getErrorChecker().getASTGenerator();
String tooltipText = ast.getLabelForASTNode(line, word, xLS);
// log(errorCheckerService.mainClassOffset + " MCO "
// + "|" + line + "| offset " + xLS + word + " <= offf: "+off+ "\n");
@@ -653,7 +651,7 @@ public class JavaTextAreaPainter extends TextAreaPainter
String prevText = textArea.getText();
for (int tab=0; tab<code.length; tab++) {
String tabCode = getEditor().baseCode[tab];
String tabCode = getJavaEditor().baseCode[tab];
textArea.setText(tabCode);
for (Handle n : handles.get(tab)) {
int lineStartChar = textArea.getLineStartOffset(n.line);
@@ -685,7 +683,7 @@ public class JavaTextAreaPainter extends TextAreaPainter
int charInc = 0;
int currentTab = getCurrentCodeIndex();
SketchCode sc = getEditor().getSketch().getCode(currentTab);
String code = getEditor().baseCode[currentTab];
String code = getJavaEditor().baseCode[currentTab];
for (Handle n : handles.get(currentTab)) {
int s = n.startChar + charInc;
@@ -864,7 +862,12 @@ public class JavaTextAreaPainter extends TextAreaPainter
// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
private JavaEditor getEditor() {
public Editor getEditor() {
return ((JavaTextArea) textArea).editor;
}
private JavaEditor getJavaEditor() {
return ((JavaTextArea) textArea).editor;
}