/*
Jazzy - a Java library for Spell Checking
Copyright (C) 2001 Mindaugas Idzelis
Full text of license can be found in LICENSE.txt
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/*
* Created on 2004-apr-23
*
* To change the template for this generated file go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
package com.swabunga.spell.swing.autospell;
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.Shape;
import javax.swing.event.DocumentEvent;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.Element;
import javax.swing.text.Position.Bias;
import javax.swing.text.View;
import javax.swing.text.ViewFactory;
/**
* This View just forward all calls to the original view but also paints the waved line if the Elements is marked as misspelled.
*
* @author Robert Gustavsson (robert@lindesign.se)
*/
public class AutoSpellView extends View implements AutoSpellConstants {
private View view = null;
private int[] wavePoints = new int[10];
public AutoSpellView(View view) {
super(view.getElement());
this.view = view;
for (int i = 0; i < wavePoints.length; i++) {
wavePoints[i] = (int) Math.round(Math.cos(2 * i * (2 * Math.PI / wavePoints.length)));
}
}
/* (non-Javadoc)
* @see javax.swing.text.View#append(javax.swing.text.View)
*/
@Override
public void append(View arg0) {
view.append(arg0);
}
/* (non-Javadoc)
* @see javax.swing.text.View#breakView(int, int, float, float)
*/
@Override
public View breakView(int arg0, int arg1, float arg2, float arg3) {
return view.breakView(arg0, arg1, arg2, arg3);
}
/* (non-Javadoc)
* @see javax.swing.text.View#changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
*/
@Override
public void changedUpdate(DocumentEvent arg0, Shape arg1, ViewFactory arg2) {
view.changedUpdate(arg0, arg1, arg2);
}
/* (non-Javadoc)
* @see javax.swing.text.View#createFragment(int, int)
*/
@Override
public View createFragment(int arg0, int arg1) {
return view.createFragment(arg0, arg1);
}
/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object arg0) {
return view.equals(arg0);
}
@Override
public int hashCode() {
return view.hashCode();
}
/* (non-Javadoc)
* @see javax.swing.text.View#getAlignment(int)
*/
@Override
public float getAlignment(int arg0) {
return view.getAlignment(arg0);
}
/* (non-Javadoc)
* @see javax.swing.text.View#getAttributes()
*/
@Override
public AttributeSet getAttributes() {
return view.getAttributes();
}
/* (non-Javadoc)
* @see javax.swing.text.View#getBreakWeight(int, float, float)
*/
@Override
public int getBreakWeight(int arg0, float arg1, float arg2) {
return view.getBreakWeight(arg0, arg1, arg2);
}
/* (non-Javadoc)
* @see javax.swing.text.View#getChildAllocation(int, java.awt.Shape)
*/
@Override
public Shape getChildAllocation(int arg0, Shape arg1) {
return view.getChildAllocation(arg0, arg1);
}
/* (non-Javadoc)
* @see javax.swing.text.View#getContainer()
*/
@Override
public Container getContainer() {
return view.getContainer();
}
/* (non-Javadoc)
* @see javax.swing.text.View#getDocument()
*/
@Override
public Document getDocument() {
return view.getDocument();
}
/* (non-Javadoc)
* @see javax.swing.text.View#getElement()
*/
@Override
public Element getElement() {
return view.getElement();
}
/* (non-Javadoc)
* @see javax.swing.text.View#getEndOffset()
*/
@Override
public int getEndOffset() {
return view.getEndOffset();
}
/* (non-Javadoc)
* @see javax.swing.text.View#getGraphics()
*/
@Override
public Graphics getGraphics() {
return view.getGraphics();
}
/* (non-Javadoc)
* @see javax.swing.text.View#getMaximumSpan(int)
*/
@Override
public float getMaximumSpan(int arg0) {
return view.getMaximumSpan(arg0);
}
/* (non-Javadoc)
* @see javax.swing.text.View#getMinimumSpan(int)
*/
@Override
public float getMinimumSpan(int arg0) {
return view.getMinimumSpan(arg0);
}
/* (non-Javadoc)
* @see javax.swing.text.View#getNextVisualPositionFrom(int, javax.swing.text.Position.Bias, java.awt.Shape, int, javax.swing.text.Position.Bias[])
*/
@Override
public int getNextVisualPositionFrom(int arg0, Bias arg1, Shape arg2, int arg3, Bias[] arg4) throws BadLocationException {
return view.getNextVisualPositionFrom(arg0, arg1, arg2, arg3, arg4);
}
/* (non-Javadoc)
* @see javax.swing.text.View#getParent()
*/
@Override
public View getParent() {
return view.getParent();
}
/**
* @param arg0
* @return
*/
@Override
public float getPreferredSpan(int arg0) {
return view.getPreferredSpan(arg0);
}
/* (non-Javadoc)
* @see javax.swing.text.View#getResizeWeight(int)
*/
@Override
public int getResizeWeight(int arg0) {
return view.getResizeWeight(arg0);
}
/* (non-Javadoc)
* @see javax.swing.text.View#getStartOffset()
*/
@Override
public int getStartOffset() {
return view.getStartOffset();
}
/* (non-Javadoc)
* @see javax.swing.text.View#getToolTipText(float, float, java.awt.Shape)
*/
@Override
public String getToolTipText(float arg0, float arg1, Shape arg2) {
return view.getToolTipText(arg0, arg1, arg2);
}
/* (non-Javadoc)
* @see javax.swing.text.View#getView(int)
*/
@Override
public View getView(int arg0) {
return view.getView(arg0);
}
/* (non-Javadoc)
* @see javax.swing.text.View#getViewCount()
*/
@Override
public int getViewCount() {
return view.getViewCount();
}
/* (non-Javadoc)
* @see javax.swing.text.View#getViewFactory()
*/
@Override
public ViewFactory getViewFactory() {
return view.getViewFactory();
}
/* (non-Javadoc)
* @see javax.swing.text.View#getViewIndex(float, float, java.awt.Shape)
*/
@Override
public int getViewIndex(float arg0, float arg1, Shape arg2) {
return view.getViewIndex(arg0, arg1, arg2);
}
/* (non-Javadoc)
* @see javax.swing.text.View#getViewIndex(int, javax.swing.text.Position.Bias)
*/
@Override
public int getViewIndex(int arg0, Bias arg1) {
return view.getViewIndex(arg0, arg1);
}
/* (non-Javadoc)
* @see javax.swing.text.View#insert(int, javax.swing.text.View)
*/
@Override
public void insert(int arg0, View arg1) {
view.insert(arg0, arg1);
}
/* (non-Javadoc)
* @see javax.swing.text.View#insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
*/
@Override
public void insertUpdate(DocumentEvent arg0, Shape arg1, ViewFactory arg2) {
view.insertUpdate(arg0, arg1, arg2);
}
/* (non-Javadoc)
* @see javax.swing.text.View#isVisible()
*/
@Override
public boolean isVisible() {
return view.isVisible();
}
/*public Shape modelToView(int arg0, Shape arg1)
throws BadLocationException {
return view.modelToView(arg0, arg1);
}*/
/**
* @param arg0
* @param arg1
* @param arg2
* @return
* @throws javax.swing.text.BadLocationException
*/
@Override
public Shape modelToView(int arg0, Shape arg1, Bias arg2) throws BadLocationException {
return view.modelToView(arg0, arg1, arg2);
}
/* (non-Javadoc)
* @see javax.swing.text.View#modelToView(int, javax.swing.text.Position.Bias, int, javax.swing.text.Position.Bias, java.awt.Shape)
*/
@Override
public Shape modelToView(int arg0, Bias arg1, int arg2, Bias arg3, Shape arg4) throws BadLocationException {
return view.modelToView(arg0, arg1, arg2, arg3, arg4);
}
/**
* @param arg0
* @param arg1
*/
@Override
public void paint(Graphics arg0, Shape arg1) {
Graphics g = arg0;
Rectangle r;
Color c;
view.paint(arg0, arg1);
if (getAttributes().containsAttribute(wordMisspelled, wordMisspelledTrue)) {
r = arg1.getBounds();
c = g.getColor();
g.setColor(Color.red);
for (int x = r.x; x < r.x + r.width; x++) {
g.drawLine(x, r.y + r.height - 2 - wavePoints[x % wavePoints.length], x, r.y + r.height - 2
- wavePoints[x % wavePoints.length]);
}
// g.setColor(c);
}
}
/* (non-Javadoc)
* @see javax.swing.text.View#preferenceChanged(javax.swing.text.View, boolean, boolean)
*/
@Override
public void preferenceChanged(View arg0, boolean arg1, boolean arg2) {
view.preferenceChanged(arg0, arg1, arg2);
}
/* (non-Javadoc)
* @see javax.swing.text.View#remove(int)
*/
@Override
public void remove(int arg0) {
view.remove(arg0);
}
/* (non-Javadoc)
* @see javax.swing.text.View#removeAll()
*/
@Override
public void removeAll() {
view.removeAll();
}
/* (non-Javadoc)
* @see javax.swing.text.View#removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
*/
@Override
public void removeUpdate(DocumentEvent arg0, Shape arg1, ViewFactory arg2) {
view.removeUpdate(arg0, arg1, arg2);
}
/* (non-Javadoc)
* @see javax.swing.text.View#replace(int, int, javax.swing.text.View[])
*/
@Override
public void replace(int arg0, int arg1, View[] arg2) {
view.replace(arg0, arg1, arg2);
}
/* (non-Javadoc)
* @see javax.swing.text.View#setParent(javax.swing.text.View)
*/
@Override
public void setParent(View arg0) {
view.setParent(arg0);
}
/* (non-Javadoc)
* @see javax.swing.text.View#setSize(float, float)
*/
@Override
public void setSize(float arg0, float arg1) {
view.setSize(arg0, arg1);
}
/*public int viewToModel(float arg0, float arg1, Shape arg2) {
return view.viewToModel(arg0, arg1, arg2);
}*/
/**
* @param arg0
* @param arg1
* @param arg2
* @param arg3
* @return
*/
@Override
public int viewToModel(float arg0, float arg1, Shape arg2, Bias[] arg3) {
return view.viewToModel(arg0, arg1, arg2, arg3);
}
}