diff --git a/java/src/processing/mode/java/pdex/JavaTextArea.java b/java/src/processing/mode/java/pdex/JavaTextArea.java index aa9b432dd..720dd156e 100644 --- a/java/src/processing/mode/java/pdex/JavaTextArea.java +++ b/java/src/processing/mode/java/pdex/JavaTextArea.java @@ -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 worker = new SwingWorker() { + private void prepareSuggestions(final KeyEvent evt) { + new SwingWorker() { 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. * diff --git a/java/src/processing/mode/java/pdex/JavaTextAreaPainter.java b/java/src/processing/mode/java/pdex/JavaTextAreaPainter.java index faca922df..ebc614d58 100644 --- a/java/src/processing/mode/java/pdex/JavaTextAreaPainter.java +++ b/java/src/processing/mode/java/pdex/JavaTextAreaPainter.java @@ -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