Added patch for #1589521 "3 character function names invalid?"
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / phpeditor / BracketPainter.java
index 55eea03..e73790b 100644 (file)
@@ -8,7 +8,7 @@ package net.sourceforge.phpeclipse.phpeditor;
 import net.sourceforge.phpdt.internal.ui.text.PHPPairMatcher;
 
 import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.ITextViewerExtension3;
+import org.eclipse.jface.text.ITextViewerExtension5;
 import org.eclipse.jface.text.Position;
 import org.eclipse.jface.text.Region;
 import org.eclipse.jface.text.source.ISourceViewer;
@@ -19,43 +19,47 @@ import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.GC;
 import org.eclipse.swt.graphics.Point;
 
-
 public final class BracketPainter implements IPainter, PaintListener {
-                       
-       private PHPPairMatcher fMatcher= new PHPPairMatcher(new char[] { '{', '}', '(', ')', '[', ']' });
-       private Position fBracketPosition= new Position(0, 0);
+
+       private PHPPairMatcher fMatcher = new PHPPairMatcher(new char[] { '{', '}',
+                       '(', ')', '[', ']' });
+
+       private Position fBracketPosition = new Position(0, 0);
+
        private int fAnchor;
-       
-       private boolean fIsActive= false;
+
+       private boolean fIsActive = false;
+
        private ISourceViewer fSourceViewer;
+
        private StyledText fTextWidget;
+
        private Color fColor;
-       
+
        private IPositionManager fPositionManager;
-       
-       
+
        public BracketPainter(ISourceViewer sourceViewer) {
-               fSourceViewer= sourceViewer;
-               fTextWidget= sourceViewer.getTextWidget();
+               fSourceViewer = sourceViewer;
+               fTextWidget = sourceViewer.getTextWidget();
        }
-       
+
        public void setHighlightColor(Color color) {
-               fColor= color;
+               fColor = color;
        }
-                               
+
        public void dispose() {
                if (fMatcher != null) {
                        fMatcher.dispose();
-                       fMatcher= null;
+                       fMatcher = null;
                }
-               
-               fColor= null;
-               fTextWidget= null;
+
+               fColor = null;
+               fTextWidget = null;
        }
-                               
+
        public void deactivate(boolean redraw) {
                if (fIsActive) {
-                       fIsActive= false;
+                       fIsActive = false;
                        fTextWidget.removePaintListener(this);
                        if (fPositionManager != null)
                                fPositionManager.removeManagedPosition(fBracketPosition);
@@ -63,109 +67,113 @@ public final class BracketPainter implements IPainter, PaintListener {
                                handleDrawRequest(null);
                }
        }
-               
+
        public void paintControl(PaintEvent event) {
                if (fTextWidget != null)
                        handleDrawRequest(event.gc);
        }
-       
+
        private void handleDrawRequest(GC gc) {
-               
+
                if (fBracketPosition.isDeleted)
                        return;
-                       
-               int offset= fBracketPosition.getOffset();
-               int length= fBracketPosition.getLength();
+
+               int offset = fBracketPosition.getOffset();
+               int length = fBracketPosition.getLength();
                if (length < 1)
                        return;
-                       
-               if (fSourceViewer instanceof ITextViewerExtension3) {
-                       ITextViewerExtension3 extension= (ITextViewerExtension3) fSourceViewer;
-                       IRegion widgetRange= extension.modelRange2WidgetRange(new Region(offset, length));
+
+               if (fSourceViewer instanceof ITextViewerExtension5) {
+                       ITextViewerExtension5 extension = (ITextViewerExtension5) fSourceViewer;
+                       IRegion widgetRange = extension.modelRange2WidgetRange(new Region(
+                                       offset, length));
                        if (widgetRange == null)
                                return;
-                               
-                       offset= widgetRange.getOffset();
-                       length= widgetRange.getLength();
-                       
+
+                       offset = widgetRange.getOffset();
+                       length = widgetRange.getLength();
+
                } else {
-                       IRegion region= fSourceViewer.getVisibleRegion();
-                       if (region.getOffset() > offset || region.getOffset() + region.getLength() < offset + length)
+                       IRegion region = fSourceViewer.getVisibleRegion();
+                       if (region.getOffset() > offset
+                                       || region.getOffset() + region.getLength() < offset
+                                                       + length)
                                return;
                        offset -= region.getOffset();
                }
-                       
+
                if (PHPPairMatcher.RIGHT == fAnchor)
                        draw(gc, offset, 1);
-               else 
-                       draw(gc, offset + length -1, 1);
+               else
+                       draw(gc, offset + length - 1, 1);
        }
-       
+
        private void draw(GC gc, int offset, int length) {
                if (gc != null) {
-                       Point left= fTextWidget.getLocationAtOffset(offset);
-                       Point right= fTextWidget.getLocationAtOffset(offset + length);
-                       
+                       Point left = fTextWidget.getLocationAtOffset(offset);
+                       Point right = fTextWidget.getLocationAtOffset(offset + length);
+
                        gc.setForeground(fColor);
-                       gc.drawRectangle(left.x, left.y, right.x - left.x - 1, gc.getFontMetrics().getHeight() - 1);
-                                                               
+                       gc.drawRectangle(left.x, left.y, right.x - left.x - 1, gc
+                                       .getFontMetrics().getHeight() - 1);
+
                } else {
                        fTextWidget.redrawRange(offset, length, true);
                }
        }
-       
+
        /*
         * @see IPainter#paint(int)
         */
        public void paint(int reason) {
-               Point selection= fSourceViewer.getSelectedRange();
+               Point selection = fSourceViewer.getSelectedRange();
                if (selection.y > 0) {
                        deactivate(true);
                        return;
                }
-                       
-               IRegion pair= fMatcher.match(fSourceViewer.getDocument(), selection.x);
+
+               IRegion pair = fMatcher.match(fSourceViewer.getDocument(), selection.x);
                if (pair == null) {
                        deactivate(true);
                        return;
                }
-               
+
                if (fIsActive) {
                        // only if different
-                       if (pair.getOffset() != fBracketPosition.getOffset() || 
-                                       pair.getLength() != fBracketPosition.getLength() || 
-                                       fMatcher.getAnchor() != fAnchor) {
-                               
+                       if (pair.getOffset() != fBracketPosition.getOffset()
+                                       || pair.getLength() != fBracketPosition.getLength()
+                                       || fMatcher.getAnchor() != fAnchor) {
+
                                // remove old highlighting
                                handleDrawRequest(null);
                                // update position
-                               fBracketPosition.isDeleted= false;
-                               fBracketPosition.offset= pair.getOffset();
-                               fBracketPosition.length= pair.getLength();
-                               fAnchor= fMatcher.getAnchor();
+                               fBracketPosition.isDeleted = false;
+                               fBracketPosition.offset = pair.getOffset();
+                               fBracketPosition.length = pair.getLength();
+                               fAnchor = fMatcher.getAnchor();
                                // apply new highlighting
                                handleDrawRequest(null);
-                       
+
                        }
                } else {
-                       
-                       fIsActive= true;
-                       
-                       fBracketPosition.isDeleted= false;
-                       fBracketPosition.offset= pair.getOffset();
-                       fBracketPosition.length= pair.getLength();
-                       fAnchor= fMatcher.getAnchor();
-                       
+
+                       fIsActive = true;
+
+                       fBracketPosition.isDeleted = false;
+                       fBracketPosition.offset = pair.getOffset();
+                       fBracketPosition.length = pair.getLength();
+                       fAnchor = fMatcher.getAnchor();
+
                        fTextWidget.addPaintListener(this);
                        fPositionManager.addManagedPosition(fBracketPosition);
                        handleDrawRequest(null);
                }
        }
-       
+
        /*
         * @see IPainter#setPositionManager(IPositionManager)
         */
        public void setPositionManager(IPositionManager manager) {
-               fPositionManager= manager;
+               fPositionManager = manager;
        }
 }