diff --git a/java/src/processing/mode/java/Debugger.java b/java/src/processing/mode/java/Debugger.java index 8cf79d9a2..bb7c1be72 100644 --- a/java/src/processing/mode/java/Debugger.java +++ b/java/src/processing/mode/java/Debugger.java @@ -470,22 +470,16 @@ public class Debugger implements VMEventListener { } - /** Toggle a breakpoint on the current line. */ - synchronized void toggleBreakpoint() { - toggleBreakpoint(editor.getCurrentLineID().lineIdx()); - } - - /** * Toggle a breakpoint on a line in the current tab. * @param lineIdx the line index (0-based) in the current tab */ synchronized void toggleBreakpoint(int lineIdx) { LineID line = editor.getLineIDInCurrentTab(lineIdx); - if (!hasBreakpoint(line)) { - setBreakpoint(line.lineIdx()); - } else { + if (hasBreakpoint(line)) { removeBreakpoint(line.lineIdx()); + } else { + setBreakpoint(line.lineIdx()); } } diff --git a/java/src/processing/mode/java/JavaEditor.java b/java/src/processing/mode/java/JavaEditor.java index fb82f790c..823192ec1 100644 --- a/java/src/processing/mode/java/JavaEditor.java +++ b/java/src/processing/mode/java/JavaEditor.java @@ -1202,6 +1202,19 @@ public class JavaEditor extends Editor { } + /** Toggle a breakpoint on the current line. */ + public void toggleBreakpoint() { + debugger.toggleBreakpoint(getCurrentLineID().lineIdx()); + } + + + public void toggleBreakpoint(int lineIndex) { + new Exception().printStackTrace(System.out); + debugger.toggleBreakpoint(lineIndex); + } + + + /* public void handleSave() { // toolbar.activate(JavaToolbar.SAVE); @@ -1516,7 +1529,7 @@ public class JavaEditor extends Editor { item.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Logger.getLogger(JavaEditor.class.getName()).log(Level.INFO, "Invoked 'Toggle Breakpoint' menu item"); - debugger.toggleBreakpoint(); + toggleBreakpoint(); } }); debugMenu.add(item); @@ -2477,15 +2490,15 @@ public class JavaEditor extends Editor { } - /** - * Event Handler for double clicking in the left hand gutter area. - * @param lineIdx the line (0-based) that was double clicked - */ - public void gutterDblClicked(int lineIdx) { - if (debugger != null) { - debugger.toggleBreakpoint(lineIdx); - } - } +// /** +// * Event Handler for double clicking in the left hand gutter area. +// * @param lineIdx the line (0-based) that was double clicked +// */ +// public void gutterDblClicked(int lineIdx) { +// if (debugger != null) { +// debugger.toggleBreakpoint(lineIdx); +// } +// } public void statusBusy() { diff --git a/java/src/processing/mode/java/pdex/JavaTextArea.java b/java/src/processing/mode/java/pdex/JavaTextArea.java index f0d68c256..2afdb0e01 100644 --- a/java/src/processing/mode/java/pdex/JavaTextArea.java +++ b/java/src/processing/mode/java/pdex/JavaTextArea.java @@ -719,17 +719,22 @@ public class JavaTextArea extends JEditTextArea { @Override public void mousePressed(MouseEvent me) { - // check if this happened in the gutter area - if (me.getX() < Editor.LEFT_GUTTER) { - if (me.getButton() == MouseEvent.BUTTON1 && me.getClickCount() == 2) { - int line = me.getY() / painter.getFontMetrics().getHeight() - + firstLine; - if (line >= 0 && line <= getLineCount() - 1) { - editor.gutterDblClicked(line); - } - } - return; - } +// // check if this happened in the gutter area +// if (me.getX() < Editor.LEFT_GUTTER) { +// if (me.getButton() == MouseEvent.BUTTON1) { // && me.getClickCount() == 2) { +// //int line = me.getY() / painter.getFontMetrics().getHeight() + firstLine; +// int offset = xyToOffset(me.getX(), me.getY()); +// if (offset >= 0) { +// int lineIndex = getLineOfOffset(offset); +// editor.toggleBreakpoint(lineIndex); +// } +//// if (line >= 0 && line < getLineCount()) { +//// //editor.gutterDblClicked(line); +//// editor.toggleBreakpoint(line); +//// } +// } +// return; +// } if (me.getButton() == MouseEvent.BUTTON3) { if (!editor.hasJavaTabs()) { // tooltips, etc disabled for java tabs diff --git a/java/src/processing/mode/java/pdex/JavaTextAreaPainter.java b/java/src/processing/mode/java/pdex/JavaTextAreaPainter.java index 962ddad83..bbfb174b1 100644 --- a/java/src/processing/mode/java/pdex/JavaTextAreaPainter.java +++ b/java/src/processing/mode/java/pdex/JavaTextAreaPainter.java @@ -100,6 +100,7 @@ public class JavaTextAreaPainter extends TextAreaPainter public JavaTextAreaPainter(JavaTextArea textArea, TextAreaDefaults defaults) { super(textArea, defaults); + new Exception().printStackTrace(System.out); addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { @@ -113,18 +114,37 @@ public class JavaTextAreaPainter extends TextAreaPainter } }); + // Handle mouse clicks to toggle breakpoints + addMouseListener(new MouseAdapter() { + long lastTime; // OS X seems to be firing multiple mouse events + + public void mousePressed(MouseEvent event) { + long thisTime = event.getWhen(); + if (thisTime - lastTime > 100) { + if (event.getX() < Editor.LEFT_GUTTER) { + int offset = getTextArea().xyToOffset(event.getX(), event.getY()); + if (offset >= 0) { + int lineIndex = getTextArea().getLineOfOffset(offset); + getEditor().toggleBreakpoint(lineIndex); + } + } + lastTime = thisTime; + } + } + }); + addMouseMotionListener(new MouseMotionAdapter() { @Override public void mouseMoved(final MouseEvent evt) { - for (ErrorLineCoord coord : errorLineCoords) { - if (evt.getX() >= coord.xStart && evt.getX() <= coord.xEnd - && evt.getY() >= coord.yStart && evt.getY() <= coord.yEnd + 2) { - setToolTipText(coord.problem.getMessage()); - break; - } - } + for (ErrorLineCoord coord : errorLineCoords) { + if (evt.getX() >= coord.xStart && evt.getX() <= coord.xEnd && + evt.getY() >= coord.yStart && evt.getY() <= coord.yEnd + 2) { + setToolTipText(coord.problem.getMessage()); + break; + } + } } - }); + }); // TweakMode code interactiveMode = false; diff --git a/todo.txt b/todo.txt index 00d556c4a..fc834698d 100644 --- a/todo.txt +++ b/todo.txt @@ -34,6 +34,8 @@ o name isn't tied to its function, but the symptom X update hasJavaTabs on editor header rebuild X remove focus border from the Variables window X need active state for the butterfly +X click a line number to toggle breakpoint +X was in there before, but required double-click in alpha 8 (but not confirmed in time) X "step" not working properly @@ -43,13 +45,13 @@ X https://github.com/processing/processing/issues/3242 gui -_ click a line number to toggle breakpoint _ finish the gui _ https://github.com/processing/processing/issues/3072 _ add a "what's new" window to explain features in 3 gui (lower, not blocking for beta) +_ tiny trail of dots when moving the selection bar up/down on retina _ need 'actively pressed' version of 'play' and 'stop' _ could do rollover as well, but do other apps use them? _ iTunes has no rollover state but has a 'down' state