001: /*
002: * TextAreaExtension.java - Custom painter and tool tip handler
003: * :tabSize=8:indentSize=8:noTabs=false:
004: * :folding=explicit:collapseFolds=1:
005: *
006: * Copyright (C) 2002 Slava Pestov
007: *
008: * This program is free software; you can redistribute it and/or
009: * modify it under the terms of the GNU General Public License
010: * as published by the Free Software Foundation; either version 2
011: * of the License, or any later version.
012: *
013: * This program is distributed in the hope that it will be useful,
014: * but WITHOUT ANY WARRANTY; without even the implied warranty of
015: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
016: * GNU General Public License for more details.
017: *
018: * You should have received a copy of the GNU General Public License
019: * along with this program; if not, write to the Free Software
020: * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
021: */
022:
023: package org.gjt.sp.jedit.textarea;
024:
025: import java.awt.Graphics2D;
026:
027: /**
028: * Subclasses of this class can perform custom painting and tool tip
029: * handling in the text area and gutter.
030: *
031: * @see TextAreaPainter#addExtension(TextAreaExtension)
032: * @see TextAreaPainter#removeExtension(TextAreaExtension)
033: * @see Gutter#addExtension(TextAreaExtension)
034: * @see Gutter#removeExtension(TextAreaExtension)
035: *
036: * @since jEdit 4.0pre4
037: *
038: * @author Slava Pestov
039: * @version $Id: TextAreaExtension.java 5004 2004-03-28 00:07:27Z spestov $
040: */
041: public abstract class TextAreaExtension {
042: //{{{ paintScreenLineRange() method
043: /**
044: * Paints a range of screen lines. The default implementation calls
045: * {@link #paintValidLine(Graphics2D,int,int,int,int,int)} and
046: * {@link #paintInvalidLine(Graphics2D,int,int)}.
047: * @param gfx A graphics context
048: * @param firstLine The first screen line
049: * @param lastLine The last screen line
050: * @param physicalLines The list of physical line numbers. Entries are
051: * -1 if the screen line is out of range.
052: * @param start An array of screen line start offsets.
053: * @param end An array of screen line end offsets
054: * @param y The y co-ordinate
055: * @param lineHeight The line height
056: * @since jEdit 4.2pre2
057: */
058: public void paintScreenLineRange(Graphics2D gfx, int firstLine,
059: int lastLine, int[] physicalLines, int[] start, int[] end,
060: int y, int lineHeight) {
061: for (int i = 0; i < physicalLines.length; i++) {
062: int screenLine = i + firstLine;
063: if (physicalLines[i] == -1)
064: paintInvalidLine(gfx, screenLine, y);
065: else {
066: paintValidLine(gfx, screenLine, physicalLines[i],
067: start[i], end[i], y);
068: }
069:
070: y += lineHeight;
071: }
072: } //}}}
073:
074: //{{{ paintValidLine() method
075: /**
076: * Called by the text area when the extension is to paint a
077: * screen line which has an associated physical line number in
078: * the buffer. Note that since one physical line may consist of
079: * several screen lines due to soft wrap, the start and end
080: * offsets of the screen line are passed in as well.
081: *
082: * @param gfx The graphics context
083: * @param screenLine The screen line number
084: * @param physicalLine The physical line number
085: * @param start The offset where the screen line begins, from
086: * the start of the buffer
087: * @param end The offset where the screen line ends, from the
088: * start of the buffer
089: * @param y The y co-ordinate of the top of the line's
090: * bounding box
091: * @since jEdit 4.0pre4
092: */
093: public void paintValidLine(Graphics2D gfx, int screenLine,
094: int physicalLine, int start, int end, int y) {
095: } //}}}
096:
097: //{{{ paintInvalidLine() method
098: /**
099: * Called by the text area when the extension is to paint a
100: * screen line which is not part of the buffer. This can happen
101: * if the buffer is shorter than the height of the text area,
102: * for example.
103: *
104: * @param gfx The graphics context
105: * @param screenLine The screen line number
106: * @param y The y co-ordinate of the top of the line's
107: * bounding box
108: * @since jEdit 4.0pre4
109: */
110: public void paintInvalidLine(Graphics2D gfx, int screenLine, int y) {
111: } //}}}
112:
113: //{{{ getToolTipText() method
114: /**
115: * Called by the text area when the mouse hovers over the
116: * location specified in the mouse event.
117: *
118: * @param x The x co-ordinate
119: * @param y The y co-ordinate
120: * @since jEdit 4.0pre4
121: */
122: public String getToolTipText(int x, int y) {
123: return null;
124: } //}}}
125: }
|