@@ -235,7 +235,6 @@ public ErrorCheckerService(JavaEditor debugEditor) { |
235 | 235 | astGenerator = new ASTGenerator(this); |
236 | 236 | errorMsgSimplifier = new ErrorMessageSimplifier(); |
237 | 237 | tempErrorLog = new TreeMap<>(); |
238 | | - sketchChangedListener = new SketchChangedListener(); |
239 | 238 | // for (final SketchCode sc : editor.getSketch().getCode()) { |
240 | 239 | // sc.getDocument().addDocumentListener(sketchChangedListener); |
241 | 240 | // } |
@@ -287,16 +286,16 @@ public void run() { |
287 | 286 | try { |
288 | 287 |
|
289 | 288 | Messages.log("Starting error check"); |
290 | | - lastCodeCheckResult = checkCode(); |
| 289 | + CodeCheckResult result = checkCode(); |
291 | 290 |
|
292 | 291 | if (!JavaMode.errorCheckEnabled) { |
293 | 292 | lastCodeCheckResult.problems.clear(); |
294 | 293 | Messages.log("Error Check disabled, so not updating UI."); |
295 | 294 | } |
296 | 295 |
|
297 | | - checkForMissingImports(); |
| 296 | + lastCodeCheckResult = result; |
298 | 297 |
|
299 | | - updateSketchCodeListeners(); |
| 298 | + checkForMissingImports(lastCodeCheckResult); |
300 | 299 |
|
301 | 300 | if (JavaMode.errorCheckEnabled) { |
302 | 301 | if (scheduledUiUpdate != null) { |
@@ -319,7 +318,6 @@ public void run() { |
319 | 318 | editor.updateErrorBar(result.problems); |
320 | 319 | editor.getTextArea().repaint(); |
321 | 320 | editor.updateErrorToggle(result.containsErrors); |
322 | | - updateSketchCodeListeners(); |
323 | 321 | } |
324 | 322 | }); |
325 | 323 | } |
@@ -375,35 +373,15 @@ public void request() { |
375 | 373 | } |
376 | 374 |
|
377 | 375 |
|
378 | | - protected void updateSketchCodeListeners() { |
379 | | - for (SketchCode sc : editor.getSketch().getCode()) { |
380 | | - SyntaxDocument doc = (SyntaxDocument) sc.getDocument(); |
381 | | - if (!hasSketchChangedListener(doc)) { |
382 | | - doc.addDocumentListener(sketchChangedListener); |
383 | | - } |
384 | | - } |
| 376 | + public void addListener(Document doc) { |
| 377 | + doc.addDocumentListener(sketchChangedListener); |
385 | 378 | } |
386 | 379 |
|
387 | 380 |
|
388 | | - boolean hasSketchChangedListener(SyntaxDocument doc) { |
389 | | - if (doc != null && doc.getDocumentListeners() != null) { |
390 | | - for (DocumentListener dl : doc.getDocumentListeners()) { |
391 | | - if (dl.equals(sketchChangedListener)) { |
392 | | - return true; |
393 | | - } |
394 | | - } |
395 | | - } |
396 | | - return false; |
397 | | - } |
398 | | - |
399 | | - |
400 | | - protected void checkForMissingImports() { |
401 | | - // Atomic access |
402 | | - CodeCheckResult lastCodeCheckResult = this.lastCodeCheckResult; |
403 | | - |
| 381 | + protected void checkForMissingImports(CodeCheckResult result) { |
404 | 382 | if (Preferences.getBoolean(JavaMode.SUGGEST_IMPORTS_PREF)) { |
405 | | - for (Problem p : lastCodeCheckResult.problems) { |
406 | | - if(p.getIProblem().getID() == IProblem.UndefinedType) { |
| 383 | + for (Problem p : result.problems) { |
| 384 | + if (p.getIProblem().getID() == IProblem.UndefinedType) { |
407 | 385 | String args[] = p.getIProblem().getArguments(); |
408 | 386 | if (args.length > 0) { |
409 | 387 | String missingClass = args[0]; |
@@ -423,37 +401,22 @@ public ASTGenerator getASTGenerator() { |
423 | 401 | } |
424 | 402 |
|
425 | 403 |
|
426 | | - protected SketchChangedListener sketchChangedListener; |
427 | | - protected class SketchChangedListener implements DocumentListener{ |
428 | | - |
429 | | - private SketchChangedListener(){ |
430 | | - } |
431 | | - |
| 404 | + protected final DocumentListener sketchChangedListener = new DocumentListener() { |
432 | 405 | @Override |
433 | 406 | public void insertUpdate(DocumentEvent e) { |
434 | | - if (JavaMode.errorCheckEnabled) { |
435 | | - request(); |
436 | | - //log("doc insert update, man error check.."); |
437 | | - } |
| 407 | + if (JavaMode.errorCheckEnabled) request(); |
438 | 408 | } |
439 | 409 |
|
440 | 410 | @Override |
441 | 411 | public void removeUpdate(DocumentEvent e) { |
442 | | - if (JavaMode.errorCheckEnabled){ |
443 | | - request(); |
444 | | - //log("doc remove update, man error check.."); |
445 | | - } |
| 412 | + if (JavaMode.errorCheckEnabled) request(); |
446 | 413 | } |
447 | 414 |
|
448 | 415 | @Override |
449 | 416 | public void changedUpdate(DocumentEvent e) { |
450 | | - if (JavaMode.errorCheckEnabled){ |
451 | | - request(); |
452 | | - //log("doc changed update, man error check.."); |
453 | | - } |
| 417 | + if (JavaMode.errorCheckEnabled) request(); |
454 | 418 | } |
455 | | - |
456 | | - } |
| 419 | + }; |
457 | 420 |
|
458 | 421 | public static class CodeCheckResult { |
459 | 422 |
|
|