/** * Handles an incoming text event. * * @param event the text event that describes the text modification */ void handleTextChanged(TextEvent event) { Change type= computeChange(event); handleChange(type); }
/** * Uninstalls the receiver and removes all listeners. <code>install()</code> * must be called for events to be generated. */ public void uninstall() { if (fViewer != null) { fListeners.clear(); disconnect(); fViewer= null; } }
/** * Ends any active run and informs all listeners. If there is none, nothing * happens. * * @param change the change that triggered ending the active run */ private void endIfStarted(Change change) { if (hasRun()) { ensureSelectionListenerRemoved(); if (DEBUG) System.err.println("-End run"); //$NON-NLS-1$ fireRunEnded(fRun, change.getType()); fRun= null; } }
/** * Starts a new run if there is none and informs all listeners. If there * already is a run, nothing happens. */ private void startOrContinue() { if (!hasRun()) { if (DEBUG) System.err.println("+Start run"); //$NON-NLS-1$ fRun= new TypingRun(fLastChange.getType()); ensureSelectionListenerAdded(); fireRunBegun(fRun); } }
fRunDetector= new TypingRunDetector(); fRunDetector.install(viewer); fRunListener= new ITypingRunListener() { fRunDetector.addTypingRunListener(fRunListener);
/** * State machine. Changes state given the current state and the incoming * change. * * @param change the incoming change */ private void handleChange(Change change) { if (change.getType() == TypingRun.NO_CHANGE) return; if (DEBUG) System.err.println("Last change: " + fLastChange); //$NON-NLS-1$ if (!change.canFollow(fLastChange)) endIfStarted(change); fLastChange= change; if (change.isModification()) startOrContinue(); if (DEBUG) System.err.println("New change: " + change); //$NON-NLS-1$ }
/** * Installs the receiver with a text viewer. * * @param viewer the viewer to install on */ public void install(ITextViewer viewer) { Assert.isLegal(viewer != null); fViewer= viewer; connect(); }
/** * Disconnects any registered listeners. */ private void disconnect() { fViewer.removeTextListener(fTextListener); ensureSelectionListenerRemoved(); }
/** * Starts a new run if there is none and informs all listeners. If there * already is a run, nothing happens. */ private void startOrContinue() { if (!hasRun()) { if (DEBUG) System.err.println("+Start run"); //$NON-NLS-1$ fRun= new TypingRun(fLastChange.getType()); ensureSelectionListenerAdded(); fireRunBegun(fRun); } }
/** * Installs the receiver on a text viewer. * * @param viewer */ public void install(ITextViewer viewer) { Assert.isLegal(viewer != null); fViewer= viewer; fSpecs= new HashMap(); fRunDetector= new TypingRunDetector(); fRunDetector.install(viewer); fRunListener= new ITypingRunListener() { /* * @see org.eclipse.jface.text.TypingRunDetector.ITypingRunListener#typingRunStarted(org.eclipse.jface.text.TypingRunDetector.TypingRun) */ public void typingRunStarted(TypingRun run) { } /* * @see org.eclipse.jface.text.TypingRunDetector.ITypingRunListener#typingRunEnded(org.eclipse.jface.text.TypingRunDetector.TypingRun) */ public void typingRunEnded(TypingRun run, ChangeType reason) { if (reason == TypingRun.SELECTION) fSpecs.clear(); else prune(); } }; fRunDetector.addTypingRunListener(fRunListener); }
/** * State machine. Changes state given the current state and the incoming * change. * * @param change the incoming change */ private void handleChange(Change change) { if (change.getType() == TypingRun.NO_CHANGE) return; if (DEBUG) System.err.println("Last change: " + fLastChange); //$NON-NLS-1$ if (!change.canFollow(fLastChange)) endIfStarted(change); fLastChange= change; if (change.isModification()) startOrContinue(); if (DEBUG) System.err.println("New change: " + change); //$NON-NLS-1$ }
/** * Installs the receiver with a text viewer. * * @param viewer the viewer to install on */ public void install(ITextViewer viewer) { Assert.isLegal(viewer != null); fViewer= viewer; connect(); }
/** * Disconnects any registered listeners. */ private void disconnect() { fViewer.removeTextListener(fTextListener); ensureSelectionListenerRemoved(); }
/** * Starts a new run if there is none and informs all listeners. If there * already is a run, nothing happens. */ private void startOrContinue() { if (!hasRun()) { if (DEBUG) System.err.println("+Start run"); //$NON-NLS-1$ fRun= new TypingRun(fLastChange.getType()); ensureSelectionListenerAdded(); fireRunBegun(fRun); } }
/** * Ends any active run and informs all listeners. If there is none, nothing * happens. * * @param change the change that triggered ending the active run */ private void endIfStarted(Change change) { if (hasRun()) { ensureSelectionListenerRemoved(); if (DEBUG) System.err.println("-End run"); //$NON-NLS-1$ fireRunEnded(fRun, change.getType()); fRun= null; } }
fRunDetector= new TypingRunDetector(); fRunDetector.install(viewer); fRunListener= new ITypingRunListener() { fRunDetector.addTypingRunListener(fRunListener);
/** * Handles an incoming text event. * * @param event the text event that describes the text modification */ void handleTextChanged(TextEvent event) { Change type= computeChange(event); handleChange(type); }
/** * State machine. Changes state given the current state and the incoming * change. * * @param change the incoming change */ private void handleChange(Change change) { if (change.getType() == TypingRun.NO_CHANGE) return; if (DEBUG) System.err.println("Last change: " + fLastChange); //$NON-NLS-1$ if (!change.canFollow(fLastChange)) endIfStarted(change); fLastChange= change; if (change.isModification()) startOrContinue(); if (DEBUG) System.err.println("New change: " + change); //$NON-NLS-1$ }
/** * Uninstalls the receiver and removes all listeners. <code>install()</code> * must be called for events to be generated. */ public void uninstall() { if (fViewer != null) { fListeners.clear(); disconnect(); fViewer= null; } }
/** * Adds a listener for <code>TypingRun</code> events. Repeatedly adding * the same listener instance has no effect. Listeners may be added even * if the receiver is neither connected nor installed. * * @param listener the listener add */ public void addTypingRunListener(ITypingRunListener listener) { Assert.isLegal(listener != null); fListeners.add(listener); if (fListeners.size() == 1) connect(); }