/** Repaints the textarea if required */ public void updateTextAreaPainter() { currentTab = editor.getSketch().getCodeIndex(editor.getSketch().getCurrentCode()); if (currentTab != lastTab) { lastTab = currentTab; editor.getTextArea().repaint(); // System.out.println("1 Repaint " + System.currentTimeMillis()); return; } if (errorBar.errorPointsChanged()) editor.getTextArea().repaint(); }
/** Starts the Error Checker Service thread */ @Override public void run() { lastTab = editor.getSketch().getCodeIndex(editor.getSketch().getCurrentCode()); initializeErrorWindow(); xqpreproc = new XQPreprocessor(); // Run check code just once before entering into loop. // Makes sure everything is initialized and set. checkCode(); editor.getTextArea().repaint(); stopThread = false; while (!stopThread) { try { // Take a nap. Thread.sleep(sleepTime); } catch (Exception e) { System.out.println("Oops! [ErrorCheckerThreaded]: " + e); // e.printStackTrace(); } if (pauseThread) continue; // Check every x seconds checkCode(); if (runCount < 5) { runCount++; } if (runCount == 3) { Package p = XQMode.class.getPackage(); System.out.println(p.getImplementationTitle() + " v" + p.getImplementationVersion()); } } }
/** * Scrolls to the error source in code. And selects the line text. Used by XQErrorTable and * ErrorBar * * @param errorIndex - index of error */ public void scrollToErrorLine(int errorIndex) { if (editor == null) return; if (errorIndex < problemsList.size() && errorIndex >= 0) { Problem p = problemsList.get(errorIndex); try { editor.toFront(); editor.getSketch().setCurrentCode(p.tabIndex); editor.getTextArea().scrollTo(p.lineNumber - 1, 0); editor.setSelection( editor.getTextArea().getLineStartNonWhiteSpaceOffset(p.lineNumber - 1) + editor.getTextArea().getLineText(p.lineNumber - 1).trim().length(), editor.getTextArea().getLineStartNonWhiteSpaceOffset(p.lineNumber - 1)); editor.repaint(); } catch (Exception e) { System.err.println(e + " : Error while selecting text in scrollToErrorLine()"); // e.printStackTrace(); } // System.out.println("---"); } }
/** Updates editor status bar, depending on whether the caret is on an error line or not */ public void updateEditorStatus() { // editor.statusNotice("Position: " + // editor.getTextArea().getCaretLine()); boolean notFound = true; for (ErrorMarker emarker : errorBar.errorPoints) { if (emarker.problem.lineNumber == editor.getTextArea().getCaretLine() + 1) { if (emarker.type == ErrorMarker.Warning) editor.statusNotice(emarker.problem.message); else editor.statusError(emarker.problem.message); return; } } if (notFound) editor.statusEmpty(); }