|
Jazzy example source code file (JSpellChecker.java)
The Jazzy JSpellChecker.java source code
/*
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
*/
import com.swabunga.spell.engine.Configuration;
import com.swabunga.spell.engine.SpellDictionaryHashMap;
import com.swabunga.spell.event.SpellCheckEvent;
import com.swabunga.spell.event.SpellCheckListener;
import com.swabunga.spell.event.SpellChecker;
import com.swabunga.spell.event.StringWordTokenizer;
import java.applet.Applet;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;
public class JSpellChecker extends Applet {
private class JSpellCheckListener extends Thread implements SpellCheckListener {
private JSpellCheckListener(StringWordTokenizer tokens) {
log(this.hashCode() + ": JSpellCheckListener.init");
this.tokens = tokens;
}
public synchronized void spellingError(SpellCheckEvent event) {
log(this.hashCode() + ": JSpellCheckListener.spellingError");
JSpellChecker.this.event = event;
synchronized (JSpellChecker.this) {
JSpellChecker.this.notifyAll();
}
try {
this.wait();
} catch (InterruptedException e) {
}
}
public boolean done() {
return done;
}
public void run() {
log(this.hashCode() + ": JSpellCheckListener.run");
done = false;
checker.checkSpelling(this.tokens);
done = true;
synchronized (JSpellChecker.this) {
JSpellChecker.this.notifyAll();
}
}
private boolean done;
private StringWordTokenizer tokens;
}
public JSpellChecker() {
initialized = false;
}
public void init() {
log(this.hashCode() + ": JSpellChecker.init");
String dictionary = getParameter("dictionary");
checker = new SpellChecker();
for (StringTokenizer strtok = new StringTokenizer(dictionary, " ;:"); strtok.hasMoreElements();) {
InputStream is = getClass().getResourceAsStream(strtok.nextToken());
try {
checker.addDictionary(new SpellDictionaryHashMap(new InputStreamReader(is)));
} catch (IOException ex) {
ex.printStackTrace();
}
}
initialized = true;
}
public void setText(String text) {
log(this.hashCode() + ": JSpellChecker.setText(" + text + ")");
if (!initialized) throw new java.lang.IllegalStateException("Spellchecker is loading.");
checker.removeSpellCheckListener(listener);
tokens = new StringWordTokenizer(text);
listener = new JSpellCheckListener(tokens);
checker.addSpellCheckListener(listener);
checker.reset();
}
public void setOptions(int options) {
//System.out.println("in " + getClass().getName() + ".setOptions(" + Integer.toBinaryString(options) + ")");
Configuration config = checker.getConfiguration();
for (int i = 1; i <= 0x20000; i = i << 1) {
String key = (String) configmap.get(new Integer(i));
if (key != null) config.setBoolean(key, (options & i) > 0);
}
}
public synchronized boolean check() {
if (!listener.isAlive()) {
listener.start();
try {
wait();
} catch (InterruptedException e) {
}
return listener.done();
}
synchronized (listener) {
listener.notifyAll();
}
try {
wait();
} catch (InterruptedException e) {
}
return listener.done();
}
private String getSuggestionList(List suggestions) {
String s = "";
for (Iterator i = suggestions.iterator(); i.hasNext();) {
com.swabunga.spell.engine.Word element = (com.swabunga.spell.engine.Word) i.next();
s += element.getWord() + "|";
}
// for (int i = 0; i < suggestions.size(); i ++) {
// s += ((com.swabunga.spell.engine.Word)suggestions.elementAt(i)).getWord() + "|";
// }
return s;
}
public String getSuggestions() {
return getSuggestionList(event.getSuggestions());
}
public String getSuggestions(String word) {
return getSuggestionList(checker.getSuggestions(word, 0));
}
public String getMisspelledWord() {
if (event != null)
return event.getInvalidWord();
return null;
}
public int getCursorPosition() {
if (event != null)
return event.getWordContextPosition();
return 0;
}
public void changeWord(String word, boolean all) {
if (event != null) {
if (word == null) word = "";
event.replaceWord(word, all);
}
}
public void ignoreWord(boolean all) {
if (event != null) {
event.ignoreWord(all);
}
}
// private String getText(){
// if (tokens != null)
// return tokens.getFinalText();
// return null;
// }
protected static void log(String s) {
System.out.println(s);
}
private boolean initialized;
protected SpellCheckEvent event;
protected SpellChecker checker;
private StringWordTokenizer tokens;
private JSpellCheckListener listener;
// private static final int CASE_SENSITIVE = 1;
private static final int IGNORE_ALL_CAPS_WORD = 2;
private static final int IGNORE_CAPPED_WORD = 4;
private static final int IGNORE_MIXED_CASE = 8;
private static final int IGNORE_MIXED_DIGITS = 16;
// private static final int IGNORE_NON_ALPHA_WORD = 32;
private static final int REPORT_DOUBLED_WORD = 64;
// private static final int REPORT_MIXED_CASE = 128;
// private static final int REPORT_MIXED_DIGITS = 256;
// private static final int REPORT_SPELLING = 512;
// private static final int REPORT_UNCAPPED = 1024;
// private static final int SPLIT_CONTRACTED_WORDS = 2048;
// private static final int SPLIT_HYPHENATED_WORDS = 4096;
// private static final int SPLIT_WORDS = 8192;
// private static final int STRIP_POSSESSIVES = 16384;
// private static final int SUGGEST_SPLIT_WORDS = 32768;
private static final int IGNORE_DOMAIN_NAMES = 0x10000;
// private static final int ALLOW_ACCENTED_CAPS = 0x20000;
private static Hashtable configmap;
static {
configmap = new Hashtable();
configmap.put(new Integer(IGNORE_MIXED_DIGITS), Configuration.SPELL_IGNOREDIGITWORDS);
configmap.put(new Integer(IGNORE_DOMAIN_NAMES), Configuration.SPELL_IGNOREINTERNETADDRESSES);
configmap.put(new Integer(IGNORE_MIXED_CASE), Configuration.SPELL_IGNOREMIXEDCASE);
configmap.put(new Integer(REPORT_DOUBLED_WORD), Configuration.SPELL_IGNOREMULTIPLEWORDS);
configmap.put(new Integer(IGNORE_CAPPED_WORD), Configuration.SPELL_IGNORESENTENCECAPITALIZATION);
configmap.put(new Integer(IGNORE_ALL_CAPS_WORD), Configuration.SPELL_IGNOREUPPERCASE);
}
}
Other Jazzy examples (source code examples)Here is a short list of links related to this Jazzy JSpellChecker.java source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.