X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpeclipse/phpeditor/LinePainter.java b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpeclipse/phpeditor/LinePainter.java deleted file mode 100644 index b0f7533..0000000 --- a/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpeclipse/phpeditor/LinePainter.java +++ /dev/null @@ -1,187 +0,0 @@ -package net.sourceforge.phpeclipse.phpeditor; - -/* - * (c) Copyright IBM Corp. 2000, 2001. - * All Rights Reserved. - */ - -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.Position; -import org.eclipse.jface.text.source.ISourceViewer; -import org.eclipse.swt.custom.LineBackgroundEvent; -import org.eclipse.swt.custom.LineBackgroundListener; -import org.eclipse.swt.custom.StyledText; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.Point; - -public class LinePainter implements IPainter, LineBackgroundListener { - - private final ISourceViewer fViewer; - - private Color fHighlightColor; - - private IPositionManager fPositionManager; - - // positions to keep track of beginning and end of line to be painted or - // cleared - private Position fCurrentLine = new Position(0, 0); - - private Position fLastLine = new Position(0, 0); - - // used to keep track of the last line painted - private int fLastLineNumber = -1; - - private boolean fIsActive; - - public LinePainter(ISourceViewer sourceViewer) { - fViewer = sourceViewer; - } - - public void setHighlightColor(Color highlightColor) { - fHighlightColor = highlightColor; - } - - /* - * @see LineBackgroundListener#lineGetBackground(LineBackgroundEvent) - */ - public void lineGetBackground(LineBackgroundEvent event) { - // don't use cached line information because of asynch painting - - StyledText textWidget = fViewer.getTextWidget(); - if (textWidget != null) { - - int caret = textWidget.getCaretOffset(); - int length = event.lineText.length(); - - if (event.lineOffset <= caret && caret <= event.lineOffset + length) - event.lineBackground = fHighlightColor; - else - event.lineBackground = textWidget.getBackground(); - } - } - - private boolean updateHighlightLine() { - try { - - IDocument document = fViewer.getDocument(); - - int offset = fViewer.getTextWidget().getCaretOffset() - + fViewer.getVisibleRegion().getOffset(); - int lineNumber = document.getLineOfOffset(offset); - - // redraw if the current line number is different from the last line - // number we painted - // initially fLastLineNumber is -1 - if (lineNumber != fLastLineNumber) { - - fLastLine.offset = fCurrentLine.offset; - fLastLine.length = fCurrentLine.length; - fLastLine.isDeleted = fCurrentLine.isDeleted; - - fCurrentLine.isDeleted = false; - fCurrentLine.offset = document.getLineOffset(lineNumber); - if (lineNumber == document.getNumberOfLines() - 1) - fCurrentLine.length = document.getLength() - - fCurrentLine.offset; - else - fCurrentLine.length = document - .getLineOffset(lineNumber + 1) - - fCurrentLine.offset; - - fLastLineNumber = lineNumber; - return true; - - } - - } catch (BadLocationException e) { - } - - return false; - } - - private void drawHighlightLine(Position position, int visibleOffset) { - StyledText textWidget = fViewer.getTextWidget(); - - // if the position that is about to be drawn was deleted then we can't - if (position.isDeleted()) - return; - - int delta = position.offset - visibleOffset; - if (0 <= delta && delta <= fViewer.getVisibleRegion().getLength()) { - Point upperLeft = textWidget.getLocationAtOffset(delta); - int width = textWidget.getClientArea().width - + textWidget.getHorizontalPixel(); - int height = textWidget.getLineHeight(); - textWidget.redraw(upperLeft.x, upperLeft.y, width, height, false); - } - } - - /* - * @see IPainter#deactivate(boolean) - */ - public void deactivate(boolean redraw) { - if (fIsActive) { - fIsActive = false; - - /* - * on turning off the feature one has to paint the currently - * highlighted line with the standard background color - */ - if (redraw) - drawHighlightLine(fCurrentLine, fViewer.getVisibleRegion() - .getOffset()); - - fViewer.getTextWidget().removeLineBackgroundListener(this); - - if (fPositionManager != null) - fPositionManager.removeManagedPosition(fCurrentLine); - - fLastLineNumber = -1; - } - } - - /* - * @see IPainter#dispose() - */ - public void dispose() { - } - - /* - * @see IPainter#paint(int) - */ - public void paint(int reason) { - - // check selection - Point selection = fViewer.getTextWidget().getSelectionRange(); - if (selection.y > 0) { - deactivate(true); - return; - } - - // initialization - if (!fIsActive) { - fViewer.getTextWidget().addLineBackgroundListener(this); - fPositionManager.addManagedPosition(fCurrentLine); - fIsActive = true; - } - - // redraw line highlight only if it hasn't been drawn yet on the - // respective line - if (updateHighlightLine()) { - // used to handle segmented view of source files - int visibleRegionOffset = fViewer.getVisibleRegion().getOffset(); - // clear last line - drawHighlightLine(fLastLine, visibleRegionOffset); - // draw new line - drawHighlightLine(fCurrentLine, visibleRegionOffset); - } - } - - /* - * @see IPainter#setPositionManager(IPositionManager) - */ - public void setPositionManager(IPositionManager manager) { - fPositionManager = manager; - } -} \ No newline at end of file