FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Merge pull request #3915 from JakubValtar/error-checker-update · haive/processing@b692c2f · GitHub

Repository navigation

Commit b692c2f

Browse files
committed
Merge pull request processing#3915 from JakubValtar/error-checker-update
Error checker update
2 parents 24471f7 + 7b5f923 commit b692c2f

2 files changed

Lines changed: 35 additions & 57 deletions

File tree

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

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,15 @@ public void actionPerformed(ActionEvent e) {
140140
hasJavaTabs = checkForJavaTabs();
141141
//initializeErrorChecker();
142142

143-
errorCheckerService = new ErrorCheckerService(this);
144-
errorCheckerService.start();
143+
{ // Init error checker
144+
errorCheckerService = new ErrorCheckerService(this);
145+
Document currentDocument = currentDocument();
146+
if (currentDocument != null) {
147+
errorCheckerService.addListener(currentDocument);
148+
}
149+
errorCheckerService.start();
150+
errorCheckerService.request();
151+
}
145152

146153
// hack to add a JPanel to the right-hand side of the text area
147154
JPanel textAndError = new JPanel();
@@ -2330,10 +2337,18 @@ public boolean isInCurrentTab(LineID line) {
23302337
*/
23312338
@Override
23322339
public void setCode(SketchCode code) {
2340+
2341+
Document oldDoc = code.getDocument();
2342+
23332343
//System.out.println("tab switch: " + code.getFileName());
23342344
// set the new document in the textarea, etc. need to do this first
23352345
super.setCode(code);
23362346

2347+
Document newDoc = code.getDocument();
2348+
if (oldDoc != newDoc && errorCheckerService != null) {
2349+
errorCheckerService.addListener(newDoc);
2350+
}
2351+
23372352
// set line background colors for tab
23382353
final JavaTextArea ta = getJavaTextArea();
23392354
// can be null when setCode is called the first time (in constructor)
@@ -2729,13 +2744,14 @@ private boolean checkForJavaTabs() {
27292744
}
27302745

27312746

2747+
@Override
27322748
protected void applyPreferences() {
27332749
super.applyPreferences();
27342750
if (jmode != null) {
27352751
jmode.loadPreferences();
27362752
Messages.log("Applying prefs");
27372753
// trigger it once to refresh UI
2738-
errorCheckerService.request();
2754+
errorCheckerService.handleErrorCheckingToggle();
27392755
}
27402756
}
27412757

‎java/src/processing/mode/java/pdex/ErrorCheckerService.java‎

Lines changed: 16 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,6 @@ public ErrorCheckerService(JavaEditor debugEditor) {
235235
astGenerator = new ASTGenerator(this);
236236
errorMsgSimplifier = new ErrorMessageSimplifier();
237237
tempErrorLog = new TreeMap<>();
238-
sketchChangedListener = new SketchChangedListener();
239238
// for (final SketchCode sc : editor.getSketch().getCode()) {
240239
// sc.getDocument().addDocumentListener(sketchChangedListener);
241240
// }
@@ -275,7 +274,6 @@ public void run() {
275274
astGenerator.buildAST(lastCodeCheckResult.sourceCode,
276275
lastCodeCheckResult.compilationUnit);
277276
}
278-
handleErrorCheckingToggle();
279277

280278
while (running) {
281279
try {
@@ -288,16 +286,16 @@ public void run() {
288286
try {
289287

290288
Messages.log("Starting error check");
291-
lastCodeCheckResult = checkCode();
289+
CodeCheckResult result = checkCode();
292290

293291
if (!JavaMode.errorCheckEnabled) {
294292
lastCodeCheckResult.problems.clear();
295293
Messages.log("Error Check disabled, so not updating UI.");
296294
}
297295

298-
checkForMissingImports();
296+
lastCodeCheckResult = result;
299297

300-
updateSketchCodeListeners();
298+
checkForMissingImports(lastCodeCheckResult);
301299

302300
if (JavaMode.errorCheckEnabled) {
303301
if (scheduledUiUpdate != null) {
@@ -320,7 +318,6 @@ public void run() {
320318
editor.updateErrorBar(result.problems);
321319
editor.getTextArea().repaint();
322320
editor.updateErrorToggle(result.containsErrors);
323-
updateSketchCodeListeners();
324321
}
325322
});
326323
}
@@ -376,35 +373,15 @@ public void request() {
376373
}
377374

378375

379-
protected void updateSketchCodeListeners() {
380-
for (SketchCode sc : editor.getSketch().getCode()) {
381-
SyntaxDocument doc = (SyntaxDocument) sc.getDocument();
382-
if (!hasSketchChangedListener(doc)) {
383-
doc.addDocumentListener(sketchChangedListener);
384-
}
385-
}
376+
public void addListener(Document doc) {
377+
doc.addDocumentListener(sketchChangedListener);
386378
}
387379

388380

389-
boolean hasSketchChangedListener(SyntaxDocument doc) {
390-
if (doc != null && doc.getDocumentListeners() != null) {
391-
for (DocumentListener dl : doc.getDocumentListeners()) {
392-
if (dl.equals(sketchChangedListener)) {
393-
return true;
394-
}
395-
}
396-
}
397-
return false;
398-
}
399-
400-
401-
protected void checkForMissingImports() {
402-
// Atomic access
403-
CodeCheckResult lastCodeCheckResult = this.lastCodeCheckResult;
404-
381+
protected void checkForMissingImports(CodeCheckResult result) {
405382
if (Preferences.getBoolean(JavaMode.SUGGEST_IMPORTS_PREF)) {
406-
for (Problem p : lastCodeCheckResult.problems) {
407-
if(p.getIProblem().getID() == IProblem.UndefinedType) {
383+
for (Problem p : result.problems) {
384+
if (p.getIProblem().getID() == IProblem.UndefinedType) {
408385
String args[] = p.getIProblem().getArguments();
409386
if (args.length > 0) {
410387
String missingClass = args[0];
@@ -424,37 +401,22 @@ public ASTGenerator getASTGenerator() {
424401
}
425402

426403

427-
protected SketchChangedListener sketchChangedListener;
428-
protected class SketchChangedListener implements DocumentListener{
429-
430-
private SketchChangedListener(){
431-
}
432-
404+
protected final DocumentListener sketchChangedListener = new DocumentListener() {
433405
@Override
434406
public void insertUpdate(DocumentEvent e) {
435-
if (JavaMode.errorCheckEnabled) {
436-
request();
437-
//log("doc insert update, man error check..");
438-
}
407+
if (JavaMode.errorCheckEnabled) request();
439408
}
440409

441410
@Override
442411
public void removeUpdate(DocumentEvent e) {
443-
if (JavaMode.errorCheckEnabled){
444-
request();
445-
//log("doc remove update, man error check..");
446-
}
412+
if (JavaMode.errorCheckEnabled) request();
447413
}
448414

449415
@Override
450416
public void changedUpdate(DocumentEvent e) {
451-
if (JavaMode.errorCheckEnabled){
452-
request();
453-
//log("doc changed update, man error check..");
454-
}
417+
if (JavaMode.errorCheckEnabled) request();
455418
}
456-
457-
}
419+
};
458420

459421
public static class CodeCheckResult {
460422

@@ -1556,18 +1518,18 @@ public static String substituteUnicode(String program) {
15561518
return new String(p2, 0, index);
15571519
}
15581520

1521+
15591522
public void handleErrorCheckingToggle() {
15601523
if (!JavaMode.errorCheckEnabled) {
1561-
Messages.log(editor.getSketch().getName() + " Error Checker paused.");
1562-
//editor.clearErrorPoints();
1524+
Messages.log(editor.getSketch().getName() + " Error Checker disabled.");
15631525
editor.getErrorPoints().clear();
15641526
lastCodeCheckResult.problems.clear();
15651527
updateErrorTable(Collections.<Problem>emptyList());
15661528
updateEditorStatus();
15671529
editor.getTextArea().repaint();
15681530
editor.repaintErrorBar();
15691531
} else {
1570-
Messages.log(editor.getSketch().getName() + " Error Checker resumed.");
1532+
Messages.log(editor.getSketch().getName() + " Error Checker enabled.");
15711533
request();
15721534
}
15731535
}

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL