Skip to content

Commit b7770ab

Browse files
committed
Multiple problems per line
1 parent dc44a71 commit b7770ab

File tree

2 files changed

+34
-20
lines changed

2 files changed

+34
-20
lines changed

java/src/processing/mode/java/JavaEditor.java

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import java.util.Map;
1212
import java.util.logging.Level;
1313
import java.util.logging.Logger;
14+
import java.util.stream.Collectors;
1415

1516
import javax.swing.*;
1617
import javax.swing.border.*;
@@ -195,9 +196,7 @@ public void mouseReleased(MouseEvent evt) {
195196

196197
for (SketchCode code : getSketch().getCode()) {
197198
Document document = code.getDocument();
198-
if (document != null) {
199-
addDocumentListener(document);
200-
}
199+
addDocumentListener(document);
201200
}
202201
}
203202

@@ -2513,7 +2512,7 @@ public List<Problem> getProblems() {
25132512
* line or not
25142513
*/
25152514
public void updateEditorStatus() {
2516-
Problem problem = findError(textarea.getCaretLine());
2515+
Problem problem = findProblem(textarea.getCaretLine());
25172516
if (problem != null) {
25182517
int type = problem.isError() ?
25192518
EditorStatus.CURSOR_LINE_ERROR : EditorStatus.CURSOR_LINE_WARNING;
@@ -2530,21 +2529,36 @@ public void updateEditorStatus() {
25302529

25312530

25322531
/**
2533-
* @return the LineMarker for the first error or warning on 'line'
2532+
* @return the Problem for the first error or warning on 'line'
25342533
*/
2535-
public Problem findError(int line) {
2534+
public Problem findProblem(int line) {
25362535
JavaTextArea textArea = getJavaTextArea();
25372536
int currentTab = getSketch().getCurrentCodeIndex();
2538-
for (Problem p : problems) {
2539-
if (p.getTabIndex() != currentTab) continue;
2540-
int pStartLine = p.getLineNumber();
2541-
int pEndOffset = p.getStopOffset();
2542-
int pEndLine = textArea.getLineOfOffset(pEndOffset);
2543-
if (line >= pStartLine && line <= pEndLine) {
2544-
return p;
2545-
}
2546-
}
2547-
return null;
2537+
return problems.stream()
2538+
.filter(p -> p.getTabIndex() == currentTab)
2539+
.filter(p -> {
2540+
int pStartLine = p.getLineNumber();
2541+
int pEndOffset = p.getStopOffset();
2542+
int pEndLine = textArea.getLineOfOffset(pEndOffset);
2543+
return line >= pStartLine && line <= pEndLine;
2544+
})
2545+
.findFirst()
2546+
.orElse(null);
2547+
}
2548+
2549+
2550+
public List<Problem> findProblems(int line) {
2551+
JavaTextArea textArea = getJavaTextArea();
2552+
int currentTab = getSketch().getCurrentCodeIndex();
2553+
return problems.stream()
2554+
.filter(p -> p.getTabIndex() == currentTab)
2555+
.filter(p -> {
2556+
int pStartLine = p.getLineNumber();
2557+
int pEndOffset = p.getStopOffset();
2558+
int pEndLine = textArea.getLineOfOffset(pEndOffset);
2559+
return line >= pStartLine && line <= pEndLine;
2560+
})
2561+
.collect(Collectors.toList());
25482562
}
25492563

25502564

java/src/processing/mode/java/pdex/JavaTextAreaPainter.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -272,8 +272,8 @@ static private String trimRight(String str) {
272272
* @param x
273273
*/
274274
protected void paintErrorLine(Graphics gfx, int line, int x) {
275-
Problem problem = getJavaEditor().findError(line);
276-
if (problem != null) {
275+
List<Problem> problems = getJavaEditor().findProblems(line);
276+
for (Problem problem : problems) {
277277
int startOffset = problem.getStartOffset();
278278
int stopOffset = problem.getStopOffset();
279279

@@ -362,8 +362,8 @@ public void setMode(Mode mode) {
362362
public String getToolTipText(MouseEvent evt) {
363363
int line = evt.getY() / getFontMetrics().getHeight() + textArea.getFirstLine();
364364
if (line >= 0 || line < textArea.getLineCount()) {
365-
Problem problem = getJavaEditor().findError(line);
366-
if (problem != null) {
365+
List<Problem> problems = getJavaEditor().findProblems(line);
366+
for (Problem problem : problems) {
367367
int lineStart = textArea.getLineStartOffset(line);
368368
int lineEnd = textArea.getLineStopOffset(line);
369369

0 commit comments

Comments
 (0)