|
29 | 29 | import processing.mode.java.debug.LineBreakpoint; |
30 | 30 | import processing.mode.java.debug.LineHighlight; |
31 | 31 | import processing.mode.java.debug.LineID; |
32 | | -import processing.mode.java.pdex.ASTGenerator; |
33 | 32 | import processing.mode.java.pdex.ErrorCheckerService; |
34 | 33 | import processing.mode.java.pdex.ImportStatement; |
35 | 34 | import processing.mode.java.pdex.JavaTextArea; |
| 35 | +import processing.mode.java.pdex.PDEX; |
36 | 36 | import processing.mode.java.pdex.Problem; |
37 | 37 | import processing.mode.java.pdex.SourceUtils; |
38 | 38 | import processing.mode.java.preproc.PdePreprocessor; |
@@ -71,6 +71,7 @@ public class JavaEditor extends Editor { |
71 | 71 | private boolean javaTabWarned; |
72 | 72 |
|
73 | 73 | protected ErrorCheckerService errorCheckerService; |
| 74 | + protected PDEX pdex; |
74 | 75 |
|
75 | 76 | protected List<Problem> problems = Collections.emptyList(); |
76 | 77 |
|
@@ -183,6 +184,21 @@ protected void initErrorChecker() { |
183 | 184 | } |
184 | 185 | errorCheckerService.start(); |
185 | 186 | errorCheckerService.notifySketchChanged(); |
| 187 | + |
| 188 | + pdex = new PDEX(this, errorCheckerService); |
| 189 | + |
| 190 | + // Add ctrl+click listener |
| 191 | + getJavaTextArea().getPainter().addMouseListener(new MouseAdapter() { |
| 192 | + public void mouseReleased(MouseEvent evt) { |
| 193 | + if (evt.getButton() == MouseEvent.BUTTON1) { |
| 194 | + if ((evt.isControlDown() && !Platform.isMacOS()) || evt.isMetaDown()) { |
| 195 | + handleCtrlClick(evt); |
| 196 | + } |
| 197 | + } else if (evt.getButton() == MouseEvent.BUTTON2) { |
| 198 | + handleCtrlClick(evt); |
| 199 | + } |
| 200 | + } |
| 201 | + }); |
186 | 202 | } |
187 | 203 |
|
188 | 204 |
|
@@ -212,6 +228,7 @@ public void rebuild() { |
212 | 228 | if (errorCheckerService != null) { |
213 | 229 | if (hasJavaTabsChanged) { |
214 | 230 | errorCheckerService.handleHasJavaTabsChange(hasJavaTabs); |
| 231 | + pdex.handleHasJavaTabsChange(hasJavaTabs); |
215 | 232 | if (hasJavaTabs) { |
216 | 233 | setProblemList(Collections.emptyList()); |
217 | 234 | } |
@@ -1358,6 +1375,7 @@ public void dispose() { |
1358 | 1375 | inspector.dispose(); |
1359 | 1376 | } |
1360 | 1377 | errorCheckerService.stop(); |
| 1378 | + pdex.dispose(); |
1361 | 1379 | super.dispose(); |
1362 | 1380 | } |
1363 | 1381 |
|
@@ -2795,25 +2813,31 @@ public void updateErrorToggle(boolean hasErrors) { |
2795 | 2813 |
|
2796 | 2814 | /** Handle refactor operation */ |
2797 | 2815 | private void handleRefactor() { |
2798 | | - Messages.log("Caret at:" + textarea.getLineText(textarea.getCaretLine())); |
2799 | | - ASTGenerator astGenerator = errorCheckerService.getASTGenerator(); |
2800 | 2816 | int startOffset = getSelectionStart(); |
2801 | 2817 | int stopOffset = getSelectionStop(); |
2802 | 2818 | int tabIndex = sketch.getCurrentCodeIndex(); |
2803 | 2819 |
|
2804 | | - astGenerator.handleRename(tabIndex, startOffset, stopOffset); |
| 2820 | + pdex.handleRename(tabIndex, startOffset, stopOffset); |
2805 | 2821 | } |
2806 | 2822 |
|
2807 | 2823 |
|
2808 | 2824 | /** Handle show usage operation */ |
2809 | 2825 | private void handleShowUsage() { |
2810 | | - Messages.log("Caret at:" + textarea.getLineText(textarea.getCaretLine())); |
2811 | | - ASTGenerator astGenerator = errorCheckerService.getASTGenerator(); |
2812 | 2826 | int startOffset = getSelectionStart(); |
2813 | 2827 | int stopOffset = getSelectionStop(); |
2814 | 2828 | int tabIndex = sketch.getCurrentCodeIndex(); |
2815 | 2829 |
|
2816 | | - astGenerator.handleShowUsage(tabIndex, startOffset, stopOffset); |
| 2830 | + pdex.handleShowUsage(tabIndex, startOffset, stopOffset); |
| 2831 | + } |
| 2832 | + |
| 2833 | + |
| 2834 | + /** Handle ctrl+click */ |
| 2835 | + private void handleCtrlClick(MouseEvent evt) { |
| 2836 | + int off = getJavaTextArea().xyToOffset(evt.getX(), evt.getY()); |
| 2837 | + if (off < 0) return; |
| 2838 | + int tabIndex = sketch.getCurrentCodeIndex(); |
| 2839 | + |
| 2840 | + pdex.handleCtrlClick(tabIndex, off); |
2817 | 2841 | } |
2818 | 2842 |
|
2819 | 2843 |
|
|
0 commit comments