2 Jazzy - a Java library for Spell Checking
\r
3 Copyright (C) 2001 Mindaugas Idzelis
\r
4 Full text of license can be found in LICENSE.txt
\r
6 This library is free software; you can redistribute it and/or
\r
7 modify it under the terms of the GNU Lesser General Public
\r
8 License as published by the Free Software Foundation; either
\r
9 version 2.1 of the License, or (at your option) any later version.
\r
11 This library is distributed in the hope that it will be useful,
\r
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
\r
14 Lesser General Public License for more details.
\r
16 You should have received a copy of the GNU Lesser General Public
\r
17 License along with this library; if not, write to the Free Software
\r
18 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
\r
21 * Created on 2004-apr-23
\r
23 * To change the template for this generated file go to
\r
24 * Window - Preferences - Java - Code Generation - Code and Comments
\r
26 package com.swabunga.spell.swing.autospell;
\r
28 import java.awt.Color;
\r
29 import java.awt.Container;
\r
30 import java.awt.Graphics;
\r
31 import java.awt.Rectangle;
\r
32 import java.awt.Shape;
\r
34 import javax.swing.event.DocumentEvent;
\r
35 import javax.swing.text.AttributeSet;
\r
36 import javax.swing.text.BadLocationException;
\r
37 import javax.swing.text.Document;
\r
38 import javax.swing.text.Element;
\r
39 import javax.swing.text.View;
\r
40 import javax.swing.text.ViewFactory;
\r
41 import javax.swing.text.Position.Bias;
\r
44 * This View just forward all calls to the original view but also paints
\r
45 * the waved line if the Elements is marked as misspelled.
\r
47 * @author Robert Gustavsson (robert@lindesign.se)
\r
49 public class AutoSpellView extends View implements AutoSpellConstants{
\r
51 private View view=null;
\r
52 private final int[] wavePoints=new int[10];
\r
54 public AutoSpellView(View view){
\r
55 super(view.getElement());
\r
57 for(int i=0;i<wavePoints.length;i++){
\r
58 wavePoints[i]=(int)Math.round(Math.cos(2*i*(2*Math.PI/wavePoints.length)));
\r
63 * @see javax.swing.text.View#append(javax.swing.text.View)
\r
66 public void append(View arg0) {
\r
71 * @see javax.swing.text.View#breakView(int, int, float, float)
\r
74 public View breakView(int arg0, int arg1, float arg2, float arg3) {
\r
75 return view.breakView(arg0, arg1, arg2, arg3);
\r
79 * @see javax.swing.text.View#changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
\r
82 public void changedUpdate(
\r
86 view.changedUpdate(arg0, arg1, arg2);
\r
90 * @see javax.swing.text.View#createFragment(int, int)
\r
93 public View createFragment(int arg0, int arg1) {
\r
94 return view.createFragment(arg0, arg1);
\r
98 * @see java.lang.Object#equals(java.lang.Object)
\r
101 public boolean equals(Object arg0) {
\r
102 return view.equals(arg0);
\r
106 * @see javax.swing.text.View#getAlignment(int)
\r
109 public float getAlignment(int arg0) {
\r
110 return view.getAlignment(arg0);
\r
114 * @see javax.swing.text.View#getAttributes()
\r
117 public AttributeSet getAttributes() {
\r
118 return view.getAttributes();
\r
122 * @see javax.swing.text.View#getBreakWeight(int, float, float)
\r
125 public int getBreakWeight(int arg0, float arg1, float arg2) {
\r
126 return view.getBreakWeight(arg0, arg1, arg2);
\r
130 * @see javax.swing.text.View#getChildAllocation(int, java.awt.Shape)
\r
133 public Shape getChildAllocation(int arg0, Shape arg1) {
\r
134 return view.getChildAllocation(arg0, arg1);
\r
138 * @see javax.swing.text.View#getContainer()
\r
141 public Container getContainer() {
\r
142 return view.getContainer();
\r
146 * @see javax.swing.text.View#getDocument()
\r
149 public Document getDocument() {
\r
150 return view.getDocument();
\r
154 * @see javax.swing.text.View#getElement()
\r
157 public Element getElement() {
\r
158 return view.getElement();
\r
162 * @see javax.swing.text.View#getEndOffset()
\r
165 public int getEndOffset() {
\r
166 return view.getEndOffset();
\r
170 * @see javax.swing.text.View#getGraphics()
\r
173 public Graphics getGraphics() {
\r
174 return view.getGraphics();
\r
178 * @see javax.swing.text.View#getMaximumSpan(int)
\r
181 public float getMaximumSpan(int arg0) {
\r
182 return view.getMaximumSpan(arg0);
\r
186 * @see javax.swing.text.View#getMinimumSpan(int)
\r
189 public float getMinimumSpan(int arg0) {
\r
190 return view.getMinimumSpan(arg0);
\r
194 * @see javax.swing.text.View#getNextVisualPositionFrom(int, javax.swing.text.Position.Bias, java.awt.Shape, int, javax.swing.text.Position.Bias[])
\r
197 public int getNextVisualPositionFrom(
\r
203 throws BadLocationException {
\r
204 return view.getNextVisualPositionFrom(arg0, arg1, arg2, arg3, arg4);
\r
208 * @see javax.swing.text.View#getParent()
\r
211 public View getParent() {
\r
212 return view.getParent();
\r
220 public float getPreferredSpan(int arg0) {
\r
221 return view.getPreferredSpan(arg0);
\r
225 * @see javax.swing.text.View#getResizeWeight(int)
\r
228 public int getResizeWeight(int arg0) {
\r
229 return view.getResizeWeight(arg0);
\r
233 * @see javax.swing.text.View#getStartOffset()
\r
236 public int getStartOffset() {
\r
237 return view.getStartOffset();
\r
241 * @see javax.swing.text.View#getToolTipText(float, float, java.awt.Shape)
\r
244 public String getToolTipText(float arg0, float arg1, Shape arg2) {
\r
245 return view.getToolTipText(arg0, arg1, arg2);
\r
249 * @see javax.swing.text.View#getView(int)
\r
252 public View getView(int arg0) {
\r
253 return view.getView(arg0);
\r
257 * @see javax.swing.text.View#getViewCount()
\r
260 public int getViewCount() {
\r
261 return view.getViewCount();
\r
265 * @see javax.swing.text.View#getViewFactory()
\r
268 public ViewFactory getViewFactory() {
\r
269 return view.getViewFactory();
\r
273 * @see javax.swing.text.View#getViewIndex(float, float, java.awt.Shape)
\r
276 public int getViewIndex(float arg0, float arg1, Shape arg2) {
\r
277 return view.getViewIndex(arg0, arg1, arg2);
\r
281 * @see javax.swing.text.View#getViewIndex(int, javax.swing.text.Position.Bias)
\r
284 public int getViewIndex(int arg0, Bias arg1) {
\r
285 return view.getViewIndex(arg0, arg1);
\r
290 * @see javax.swing.text.View#insert(int, javax.swing.text.View)
\r
293 public void insert(int arg0, View arg1) {
\r
294 view.insert(arg0, arg1);
\r
298 * @see javax.swing.text.View#insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
\r
301 public void insertUpdate(DocumentEvent arg0, Shape arg1, ViewFactory arg2) {
\r
302 view.insertUpdate(arg0, arg1, arg2);
\r
306 * @see javax.swing.text.View#isVisible()
\r
309 public boolean isVisible() {
\r
310 return view.isVisible();
\r
313 /*public Shape modelToView(int arg0, Shape arg1)
\r
314 throws BadLocationException {
\r
315 return view.modelToView(arg0, arg1);
\r
323 * @throws javax.swing.text.BadLocationException
\r
326 public Shape modelToView(int arg0, Shape arg1, Bias arg2)
\r
327 throws BadLocationException {
\r
328 return view.modelToView(arg0, arg1, arg2);
\r
332 * @see javax.swing.text.View#modelToView(int, javax.swing.text.Position.Bias, int, javax.swing.text.Position.Bias, java.awt.Shape)
\r
335 public Shape modelToView(int arg0, Bias arg1, int arg2, Bias arg3, Shape arg4)
\r
336 throws BadLocationException {
\r
337 return view.modelToView(arg0, arg1, arg2, arg3, arg4);
\r
345 public void paint(Graphics arg0, Shape arg1) {
\r
348 @SuppressWarnings("unused")
\r
350 view.paint(arg0, arg1);
\r
351 if(getAttributes().containsAttribute(wordMisspelled, wordMisspelledTrue)){
\r
352 r=arg1.getBounds();
\r
354 g.setColor(Color.red);
\r
355 for(int x=r.x;x<r.x+r.width;x++){
\r
356 g.drawLine(x,r.y+r.height-2-wavePoints[x%wavePoints.length],x,r.y+r.height-2-wavePoints[x%wavePoints.length]);
\r
364 * @see javax.swing.text.View#preferenceChanged(javax.swing.text.View, boolean, boolean)
\r
367 public void preferenceChanged(View arg0, boolean arg1, boolean arg2) {
\r
368 view.preferenceChanged(arg0, arg1, arg2);
\r
372 * @see javax.swing.text.View#remove(int)
\r
375 public void remove(int arg0) {
\r
380 * @see javax.swing.text.View#removeAll()
\r
383 public void removeAll() {
\r
388 * @see javax.swing.text.View#removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
\r
391 public void removeUpdate(
\r
392 DocumentEvent arg0,
\r
394 ViewFactory arg2) {
\r
395 view.removeUpdate(arg0, arg1, arg2);
\r
399 * @see javax.swing.text.View#replace(int, int, javax.swing.text.View[])
\r
402 public void replace(int arg0, int arg1, View[] arg2) {
\r
403 view.replace(arg0, arg1, arg2);
\r
407 * @see javax.swing.text.View#setParent(javax.swing.text.View)
\r
410 public void setParent(View arg0) {
\r
411 view.setParent(arg0);
\r
415 * @see javax.swing.text.View#setSize(float, float)
\r
418 public void setSize(float arg0, float arg1) {
\r
419 view.setSize(arg0, arg1);
\r
422 /*public int viewToModel(float arg0, float arg1, Shape arg2) {
\r
423 return view.viewToModel(arg0, arg1, arg2);
\r
434 public int viewToModel(float arg0, float arg1, Shape arg2, Bias[] arg3) {
\r
435 return view.viewToModel(arg0, arg1, arg2, arg3);
\r