X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PaintManager.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PaintManager.java index 03b6594..9e880b4 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PaintManager.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PaintManager.java @@ -1,6 +1,5 @@ package net.sourceforge.phpeclipse.phpeditor; - /* * (c) Copyright IBM Corp. 2000, 2001. * All Rights Reserved. @@ -30,38 +29,37 @@ import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.MouseListener; import org.eclipse.swt.widgets.Control; - -public final class PaintManager implements KeyListener, MouseListener, ISelectionChangedListener, ITextListener, ITextInputListener { - +public final class PaintManager implements KeyListener, MouseListener, + ISelectionChangedListener, ITextListener, ITextInputListener { static class PaintPositionUpdater extends DefaultPositionUpdater { - + /** * Creates the position updater. */ protected PaintPositionUpdater(String category) { super(category); } - + /** - * If an insertion happens at a position's offset, the - * position is extended rather than shifted. Also, if something is added - * right behind the end of the position, the position is extended rather - * than kept stable. + * If an insertion happens at a position's offset, the position is + * extended rather than shifted. Also, if something is added right + * behind the end of the position, the position is extended rather than + * kept stable. */ protected void adaptToInsert() { - - int myStart= fPosition.offset; - int myEnd= fPosition.offset + fPosition.length; - myEnd= Math.max(myStart, myEnd); - - int yoursStart= fOffset; - int yoursEnd= fOffset + fReplaceLength;// - 1; - yoursEnd= Math.max(yoursStart, yoursEnd); - + + int myStart = fPosition.offset; + int myEnd = fPosition.offset + fPosition.length; + myEnd = Math.max(myStart, myEnd); + + int yoursStart = fOffset; + int yoursEnd = fOffset + fReplaceLength;// - 1; + yoursEnd = Math.max(yoursStart, yoursEnd); + if (myEnd < yoursStart) return; - + if (myStart <= yoursStart) fPosition.length += fReplaceLength; else @@ -70,38 +68,40 @@ public final class PaintManager implements KeyListener, MouseListener, ISelectio }; static class PositionManager implements IPositionManager { - + private IDocument fDocument; + private IPositionUpdater fPositionUpdater; + private String fCategory; - + public PositionManager() { - fCategory= getClass().getName() + hashCode(); - fPositionUpdater= new PaintPositionUpdater(fCategory); + fCategory = getClass().getName() + hashCode(); + fPositionUpdater = new PaintPositionUpdater(fCategory); } public void install(IDocument document) { - fDocument= document; + fDocument = document; fDocument.addPositionCategory(fCategory); fDocument.addPositionUpdater(fPositionUpdater); } - + public void dispose() { uninstall(fDocument); } - + public void uninstall(IDocument document) { if (document == fDocument && document != null) { try { fDocument.removePositionUpdater(fPositionUpdater); - fDocument.removePositionCategory(fCategory); + fDocument.removePositionCategory(fCategory); } catch (BadPositionCategoryException x) { // should not happen } - fDocument= null; + fDocument = null; } } - + /* * @see IPositionManager#addManagedPosition(Position) */ @@ -114,7 +114,7 @@ public final class PaintManager implements KeyListener, MouseListener, ISelectio // should not happen } } - + /* * @see IPositionManager#removeManagedPosition(Position) */ @@ -126,19 +126,21 @@ public final class PaintManager implements KeyListener, MouseListener, ISelectio } } }; - - - private List fPainters= new ArrayList(2); + + private List fPainters = new ArrayList(2); + private PositionManager fManager; + private ISourceViewer fSourceViewer; - private boolean fTextChanged= false; - private boolean fAutoRepeat= false; - - + + private boolean fTextChanged = false; + + private boolean fAutoRepeat = false; + public PaintManager(ISourceViewer sourceViewer) { - fSourceViewer= sourceViewer; + fSourceViewer = sourceViewer; } - + public void addPainter(IPainter painter) { if (!fPainters.contains(painter)) { fPainters.add(painter); @@ -148,62 +150,62 @@ public final class PaintManager implements KeyListener, MouseListener, ISelectio painter.paint(IPainter.INTERNAL); } } - + public void removePainter(IPainter painter) { if (fPainters.remove(painter)) painter.setPositionManager(null); if (fPainters.size() == 0) dispose(); } - + private void install() { - - fManager= new PositionManager(); + + fManager = new PositionManager(); fManager.install(fSourceViewer.getDocument()); - + fSourceViewer.addTextInputListener(this); - - ISelectionProvider provider= fSourceViewer.getSelectionProvider(); + + ISelectionProvider provider = fSourceViewer.getSelectionProvider(); provider.addSelectionChangedListener(this); - + fSourceViewer.addTextListener(this); - - StyledText text= fSourceViewer.getTextWidget(); + + StyledText text = fSourceViewer.getTextWidget(); text.addKeyListener(this); text.addMouseListener(this); } - + public void dispose() { - + if (fManager != null) { fManager.dispose(); - fManager= null; + fManager = null; } - + for (Iterator e = fPainters.iterator(); e.hasNext();) - ((IPainter) e.next()).dispose(); + ((IPainter) e.next()).dispose(); fPainters.clear(); - + fSourceViewer.removeTextInputListener(this); - - ISelectionProvider provider= fSourceViewer.getSelectionProvider(); + + ISelectionProvider provider = fSourceViewer.getSelectionProvider(); if (provider != null) provider.removeSelectionChangedListener(this); - + fSourceViewer.removeTextListener(this); - - StyledText text= fSourceViewer.getTextWidget(); + + StyledText text = fSourceViewer.getTextWidget(); if (text != null && !text.isDisposed()) { text.removeKeyListener(this); text.removeMouseListener(this); } } - + private void paint(int reason) { for (Iterator e = fPainters.iterator(); e.hasNext();) ((IPainter) e.next()).paint(reason); } - + /* * @see KeyListener#keyPressed(KeyEvent) */ @@ -222,58 +224,60 @@ public final class PaintManager implements KeyListener, MouseListener, ISelectio */ public void mouseDoubleClick(MouseEvent e) { } - + /* * @see MouseListener#mouseDown(MouseEvent) */ public void mouseDown(MouseEvent e) { paint(IPainter.MOUSE_BUTTON); } - + /* * @see MouseListener#mouseUp(MouseEvent) */ public void mouseUp(MouseEvent e) { } - + /* * @see ISelectionChangedListener#selectionChanged(SelectionChangedEvent) */ public void selectionChanged(SelectionChangedEvent event) { paint(IPainter.SELECTION); } - + /* * @see ITextListener#textChanged(TextEvent) */ public void textChanged(TextEvent event) { - + if (!event.getViewerRedrawState()) return; - - fTextChanged= true; - Control control= fSourceViewer.getTextWidget(); + + fTextChanged = true; + Control control = fSourceViewer.getTextWidget(); if (control != null) { control.getDisplay().asyncExec(new Runnable() { public void run() { - if (fTextChanged && fSourceViewer != null) + if (fTextChanged && fSourceViewer != null) paint(IPainter.TEXT_CHANGE); } }); } } - + /* - * @see ITextInputListener#inputDocumentAboutToBeChanged(IDocument, IDocument) + * @see ITextInputListener#inputDocumentAboutToBeChanged(IDocument, + * IDocument) */ - public void inputDocumentAboutToBeChanged(IDocument oldInput, IDocument newInput) { + public void inputDocumentAboutToBeChanged(IDocument oldInput, + IDocument newInput) { if (oldInput != null) { for (Iterator e = fPainters.iterator(); e.hasNext();) - ((IPainter) e.next()).deactivate(false); + ((IPainter) e.next()).deactivate(false); fManager.uninstall(oldInput); } } - + /* * @see ITextInputListener#inputDocumentChanged(IDocument, IDocument) */ @@ -284,4 +288,3 @@ public final class PaintManager implements KeyListener, MouseListener, ISelectio } } } -