001 /*
002 * Copyright 1997-1998 Sun Microsystems, Inc. All Rights Reserved.
003 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004 *
005 * This code is free software; you can redistribute it and/or modify it
006 * under the terms of the GNU General Public License version 2 only, as
007 * published by the Free Software Foundation. Sun designates this
008 * particular file as subject to the "Classpath" exception as provided
009 * by Sun in the LICENSE file that accompanied this code.
010 *
011 * This code is distributed in the hope that it will be useful, but WITHOUT
012 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014 * version 2 for more details (a copy is included in the LICENSE file that
015 * accompanied this code).
016 *
017 * You should have received a copy of the GNU General Public License version
018 * 2 along with this work; if not, write to the Free Software Foundation,
019 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020 *
021 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022 * CA 95054 USA or visit www.sun.com if you need additional information or
023 * have any questions.
024 */
025 package javax.swing.text;
026
027 import java.awt.Color;
028 import java.awt.Graphics;
029 import java.awt.Shape;
030
031 /**
032 * An interface for an object that allows one to mark up the background
033 * with colored areas.
034 *
035 * @author Timothy Prinzing
036 * @version 1.29 05/05/07
037 */
038 public interface Highlighter {
039
040 /**
041 * Called when the UI is being installed into the
042 * interface of a JTextComponent. This can be used
043 * to gain access to the model that is being navigated
044 * by the implementation of this interface.
045 *
046 * @param c the JTextComponent editor
047 */
048 public void install(JTextComponent c);
049
050 /**
051 * Called when the UI is being removed from the
052 * interface of a JTextComponent. This is used to
053 * unregister any listeners that were attached.
054 *
055 * @param c the JTextComponent editor
056 */
057 public void deinstall(JTextComponent c);
058
059 /**
060 * Renders the highlights.
061 *
062 * @param g the graphics context.
063 */
064 public void paint(Graphics g);
065
066 /**
067 * Adds a highlight to the view. Returns a tag that can be used
068 * to refer to the highlight.
069 *
070 * @param p0 the beginning of the range >= 0
071 * @param p1 the end of the range >= p0
072 * @param p the painter to use for the actual highlighting
073 * @return an object that refers to the highlight
074 * @exception BadLocationException for an invalid range specification
075 */
076 public Object addHighlight(int p0, int p1, HighlightPainter p)
077 throws BadLocationException;
078
079 /**
080 * Removes a highlight from the view.
081 *
082 * @param tag which highlight to remove
083 */
084 public void removeHighlight(Object tag);
085
086 /**
087 * Removes all highlights this highlighter is responsible for.
088 */
089 public void removeAllHighlights();
090
091 /**
092 * Changes the given highlight to span a different portion of
093 * the document. This may be more efficient than a remove/add
094 * when a selection is expanding/shrinking (such as a sweep
095 * with a mouse) by damaging only what changed.
096 *
097 * @param tag which highlight to change
098 * @param p0 the beginning of the range >= 0
099 * @param p1 the end of the range >= p0
100 * @exception BadLocationException for an invalid range specification
101 */
102 public void changeHighlight(Object tag, int p0, int p1)
103 throws BadLocationException;
104
105 /**
106 * Fetches the current list of highlights.
107 *
108 * @return the highlight list
109 */
110 public Highlight[] getHighlights();
111
112 /**
113 * Highlight renderer.
114 */
115 public interface HighlightPainter {
116
117 /**
118 * Renders the highlight.
119 *
120 * @param g the graphics context
121 * @param p0 the starting offset in the model >= 0
122 * @param p1 the ending offset in the model >= p0
123 * @param bounds the bounding box for the highlight
124 * @param c the editor
125 */
126 public void paint(Graphics g, int p0, int p1, Shape bounds,
127 JTextComponent c);
128
129 }
130
131 public interface Highlight {
132
133 /**
134 * Gets the starting model offset for the highlight.
135 *
136 * @return the starting offset >= 0
137 */
138 public int getStartOffset();
139
140 /**
141 * Gets the ending model offset for the highlight.
142 *
143 * @return the ending offset >= 0
144 */
145 public int getEndOffset();
146
147 /**
148 * Gets the painter for the highlighter.
149 *
150 * @return the painter
151 */
152 public HighlightPainter getPainter();
153
154 }
155
156 };
|