OSDN Git Service

Name change to NixNote
[neighbornote/NeighborNote.git] / src / com / swabunga / spell / swing / autospell / AutoSpellView.java
1 /*\r
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
5 \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
10 \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
15 \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
19 */\r
20 /*\r
21  * Created on 2004-apr-23\r
22  *\r
23  * To change the template for this generated file go to\r
24  * Window - Preferences - Java - Code Generation - Code and Comments\r
25  */\r
26 package com.swabunga.spell.swing.autospell;\r
27 \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
33 \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
42 \r
43 /**\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
46  * \r
47  * @author Robert Gustavsson (robert@lindesign.se)\r
48  */\r
49 public class AutoSpellView extends View implements AutoSpellConstants{\r
50 \r
51         private View    view=null;\r
52         private final int[]     wavePoints=new int[10];\r
53         \r
54         public AutoSpellView(View view){\r
55                 super(view.getElement());\r
56                 this.view=view;\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
59                 }\r
60         }\r
61         \r
62         /* (non-Javadoc)\r
63          * @see javax.swing.text.View#append(javax.swing.text.View)\r
64          */\r
65         @Override\r
66         public void append(View arg0) {\r
67                 view.append(arg0);\r
68         }\r
69 \r
70         /* (non-Javadoc)\r
71          * @see javax.swing.text.View#breakView(int, int, float, float)\r
72          */\r
73         @Override\r
74         public View breakView(int arg0, int arg1, float arg2, float arg3) {\r
75                 return view.breakView(arg0, arg1, arg2, arg3);\r
76         }\r
77 \r
78         /* (non-Javadoc)\r
79          * @see javax.swing.text.View#changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)\r
80          */\r
81         @Override\r
82         public void changedUpdate(\r
83                 DocumentEvent arg0,\r
84                 Shape arg1,\r
85                 ViewFactory arg2) {\r
86                 view.changedUpdate(arg0, arg1, arg2);\r
87         }\r
88 \r
89         /* (non-Javadoc)\r
90          * @see javax.swing.text.View#createFragment(int, int)\r
91          */\r
92         @Override\r
93         public View createFragment(int arg0, int arg1) {\r
94                 return view.createFragment(arg0, arg1);\r
95         }\r
96 \r
97         /* (non-Javadoc)\r
98          * @see java.lang.Object#equals(java.lang.Object)\r
99          */\r
100         @Override\r
101         public boolean equals(Object arg0) {\r
102                 return view.equals(arg0);\r
103         }\r
104 \r
105         /* (non-Javadoc)\r
106          * @see javax.swing.text.View#getAlignment(int)\r
107          */\r
108         @Override\r
109         public float getAlignment(int arg0) {\r
110                 return view.getAlignment(arg0);\r
111         }\r
112 \r
113         /* (non-Javadoc)\r
114          * @see javax.swing.text.View#getAttributes()\r
115          */\r
116         @Override\r
117         public AttributeSet getAttributes() {\r
118                 return view.getAttributes();\r
119         }\r
120 \r
121         /* (non-Javadoc)\r
122          * @see javax.swing.text.View#getBreakWeight(int, float, float)\r
123          */\r
124         @Override\r
125         public int getBreakWeight(int arg0, float arg1, float arg2) {\r
126                 return view.getBreakWeight(arg0, arg1, arg2);\r
127         }\r
128 \r
129         /* (non-Javadoc)\r
130          * @see javax.swing.text.View#getChildAllocation(int, java.awt.Shape)\r
131          */\r
132         @Override\r
133         public Shape getChildAllocation(int arg0, Shape arg1) {\r
134                 return view.getChildAllocation(arg0, arg1);\r
135         }\r
136 \r
137         /* (non-Javadoc)\r
138          * @see javax.swing.text.View#getContainer()\r
139          */\r
140         @Override\r
141         public Container getContainer() {\r
142                 return view.getContainer();\r
143         }\r
144 \r
145         /* (non-Javadoc)\r
146          * @see javax.swing.text.View#getDocument()\r
147          */\r
148         @Override\r
149         public Document getDocument() {\r
150                 return view.getDocument();\r
151         }\r
152 \r
153         /* (non-Javadoc)\r
154          * @see javax.swing.text.View#getElement()\r
155          */\r
156         @Override\r
157         public Element getElement() {\r
158                 return view.getElement();\r
159         }\r
160 \r
161         /* (non-Javadoc)\r
162          * @see javax.swing.text.View#getEndOffset()\r
163          */\r
164         @Override\r
165         public int getEndOffset() {\r
166                 return view.getEndOffset();\r
167         }\r
168 \r
169         /* (non-Javadoc)\r
170          * @see javax.swing.text.View#getGraphics()\r
171          */\r
172         @Override\r
173         public Graphics getGraphics() {\r
174                 return view.getGraphics();\r
175         }\r
176 \r
177         /* (non-Javadoc)\r
178          * @see javax.swing.text.View#getMaximumSpan(int)\r
179          */\r
180         @Override\r
181         public float getMaximumSpan(int arg0) {\r
182                 return view.getMaximumSpan(arg0);\r
183         }\r
184 \r
185         /* (non-Javadoc)\r
186          * @see javax.swing.text.View#getMinimumSpan(int)\r
187          */\r
188         @Override\r
189         public float getMinimumSpan(int arg0) {\r
190                 return view.getMinimumSpan(arg0);\r
191         }\r
192 \r
193         /* (non-Javadoc)\r
194          * @see javax.swing.text.View#getNextVisualPositionFrom(int, javax.swing.text.Position.Bias, java.awt.Shape, int, javax.swing.text.Position.Bias[])\r
195          */\r
196         @Override\r
197         public int getNextVisualPositionFrom(\r
198                 int arg0,\r
199                 Bias arg1,\r
200                 Shape arg2,\r
201                 int arg3,\r
202                 Bias[] arg4)\r
203                 throws BadLocationException {\r
204                 return view.getNextVisualPositionFrom(arg0, arg1, arg2, arg3, arg4);\r
205         }\r
206 \r
207         /* (non-Javadoc)\r
208          * @see javax.swing.text.View#getParent()\r
209          */\r
210         @Override\r
211         public View getParent() {\r
212                 return view.getParent();\r
213         }\r
214 \r
215         /**\r
216          * @param arg0\r
217          * @return\r
218          */\r
219         @Override\r
220         public float getPreferredSpan(int arg0) {\r
221                 return view.getPreferredSpan(arg0);\r
222         }\r
223 \r
224         /* (non-Javadoc)\r
225          * @see javax.swing.text.View#getResizeWeight(int)\r
226          */\r
227         @Override\r
228         public int getResizeWeight(int arg0) {\r
229                 return view.getResizeWeight(arg0);\r
230         }\r
231 \r
232         /* (non-Javadoc)\r
233          * @see javax.swing.text.View#getStartOffset()\r
234          */\r
235         @Override\r
236         public int getStartOffset() {\r
237                 return view.getStartOffset();\r
238         }\r
239 \r
240         /* (non-Javadoc)\r
241          * @see javax.swing.text.View#getToolTipText(float, float, java.awt.Shape)\r
242          */\r
243         @Override\r
244         public String getToolTipText(float arg0, float arg1, Shape arg2) {\r
245                 return view.getToolTipText(arg0, arg1, arg2);\r
246         }\r
247 \r
248         /* (non-Javadoc)\r
249          * @see javax.swing.text.View#getView(int)\r
250          */\r
251         @Override\r
252         public View getView(int arg0) {\r
253                 return view.getView(arg0);\r
254         }\r
255 \r
256         /* (non-Javadoc)\r
257          * @see javax.swing.text.View#getViewCount()\r
258          */\r
259         @Override\r
260         public int getViewCount() {\r
261                 return view.getViewCount();\r
262         }\r
263 \r
264         /* (non-Javadoc)\r
265          * @see javax.swing.text.View#getViewFactory()\r
266          */\r
267         @Override\r
268         public ViewFactory getViewFactory() {\r
269                 return view.getViewFactory();\r
270         }\r
271 \r
272         /* (non-Javadoc)\r
273          * @see javax.swing.text.View#getViewIndex(float, float, java.awt.Shape)\r
274          */\r
275         @Override\r
276         public int getViewIndex(float arg0, float arg1, Shape arg2) {\r
277                 return view.getViewIndex(arg0, arg1, arg2);\r
278         }\r
279 \r
280         /* (non-Javadoc)\r
281          * @see javax.swing.text.View#getViewIndex(int, javax.swing.text.Position.Bias)\r
282          */\r
283         @Override\r
284         public int getViewIndex(int arg0, Bias arg1) {\r
285                 return view.getViewIndex(arg0, arg1);\r
286         }\r
287 \r
288 \r
289         /* (non-Javadoc)\r
290          * @see javax.swing.text.View#insert(int, javax.swing.text.View)\r
291          */\r
292         @Override\r
293         public void insert(int arg0, View arg1) {\r
294                 view.insert(arg0, arg1);\r
295         }\r
296 \r
297         /* (non-Javadoc)\r
298          * @see javax.swing.text.View#insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)\r
299          */\r
300         @Override\r
301         public void insertUpdate(DocumentEvent arg0, Shape arg1, ViewFactory arg2) {\r
302                 view.insertUpdate(arg0, arg1, arg2);\r
303         }\r
304 \r
305         /* (non-Javadoc)\r
306          * @see javax.swing.text.View#isVisible()\r
307          */\r
308         @Override\r
309         public boolean isVisible() {\r
310                 return view.isVisible();\r
311         }\r
312 \r
313         /*public Shape modelToView(int arg0, Shape arg1)\r
314                 throws BadLocationException {\r
315                 return view.modelToView(arg0, arg1);\r
316         }*/\r
317 \r
318         /**\r
319          * @param arg0\r
320          * @param arg1\r
321          * @param arg2\r
322          * @return\r
323          * @throws javax.swing.text.BadLocationException\r
324          */\r
325         @Override\r
326         public Shape modelToView(int arg0, Shape arg1, Bias arg2)\r
327                 throws BadLocationException {\r
328                 return view.modelToView(arg0, arg1, arg2);\r
329         }\r
330 \r
331         /* (non-Javadoc)\r
332          * @see javax.swing.text.View#modelToView(int, javax.swing.text.Position.Bias, int, javax.swing.text.Position.Bias, java.awt.Shape)\r
333          */\r
334         @Override\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
338         }\r
339 \r
340         /**\r
341          * @param arg0\r
342          * @param arg1\r
343          */\r
344         @Override\r
345         public void paint(Graphics arg0, Shape arg1) {\r
346                 Graphics        g=arg0;\r
347                 Rectangle       r;\r
348                 @SuppressWarnings("unused")\r
349                 Color           c;\r
350                 view.paint(arg0, arg1);\r
351                 if(getAttributes().containsAttribute(wordMisspelled, wordMisspelledTrue)){\r
352                         r=arg1.getBounds();\r
353                         c=g.getColor();\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
357                         }\r
358                         //g.setColor(c);\r
359                 }\r
360                         \r
361         }\r
362 \r
363         /* (non-Javadoc)\r
364          * @see javax.swing.text.View#preferenceChanged(javax.swing.text.View, boolean, boolean)\r
365          */\r
366         @Override\r
367         public void preferenceChanged(View arg0, boolean arg1, boolean arg2) {\r
368                 view.preferenceChanged(arg0, arg1, arg2);\r
369         }\r
370 \r
371         /* (non-Javadoc)\r
372          * @see javax.swing.text.View#remove(int)\r
373          */\r
374         @Override\r
375         public void remove(int arg0) {\r
376                 view.remove(arg0);\r
377         }\r
378 \r
379         /* (non-Javadoc)\r
380          * @see javax.swing.text.View#removeAll()\r
381          */\r
382         @Override\r
383         public void removeAll() {\r
384                 view.removeAll();\r
385         }\r
386 \r
387         /* (non-Javadoc)\r
388          * @see javax.swing.text.View#removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)\r
389          */\r
390         @Override\r
391         public void removeUpdate(\r
392                 DocumentEvent arg0,\r
393                 Shape arg1,\r
394                 ViewFactory arg2) {\r
395                 view.removeUpdate(arg0, arg1, arg2);\r
396         }\r
397 \r
398         /* (non-Javadoc)\r
399          * @see javax.swing.text.View#replace(int, int, javax.swing.text.View[])\r
400          */\r
401         @Override\r
402         public void replace(int arg0, int arg1, View[] arg2) {\r
403                 view.replace(arg0, arg1, arg2);\r
404         }\r
405 \r
406         /* (non-Javadoc)\r
407          * @see javax.swing.text.View#setParent(javax.swing.text.View)\r
408          */\r
409         @Override\r
410         public void setParent(View arg0) {\r
411                 view.setParent(arg0);\r
412         }\r
413 \r
414         /* (non-Javadoc)\r
415          * @see javax.swing.text.View#setSize(float, float)\r
416          */\r
417         @Override\r
418         public void setSize(float arg0, float arg1) {\r
419                 view.setSize(arg0, arg1);\r
420         }\r
421 \r
422         /*public int viewToModel(float arg0, float arg1, Shape arg2) {\r
423                 return view.viewToModel(arg0, arg1, arg2);\r
424         }*/\r
425 \r
426         /**\r
427          * @param arg0\r
428          * @param arg1\r
429          * @param arg2\r
430          * @param arg3\r
431          * @return\r
432          */\r
433         @Override\r
434         public int viewToModel(float arg0, float arg1, Shape arg2, Bias[] arg3) {\r
435                 return view.viewToModel(arg0, arg1, arg2, arg3);\r
436         }\r
437 \r
438 }\r