|
Jazzy example source code file (JTextComponentSpellChecker.java)
The Jazzy JTextComponentSpellChecker.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 */ package com.swabunga.spell.swing; import com.swabunga.spell.engine.SpellDictionary; import com.swabunga.spell.engine.SpellDictionaryHashMap; import com.swabunga.spell.engine.SpellDictionaryCachedDichoDisk; import com.swabunga.spell.event.DocumentWordTokenizer; import com.swabunga.spell.event.SpellCheckEvent; import com.swabunga.spell.event.SpellCheckListener; import com.swabunga.spell.event.SpellChecker; import com.swabunga.spell.swing.autospell.AutoSpellEditorKit; import javax.swing.*; import javax.swing.text.*; import java.awt.*; import java.io.File; import java.io.IOException; import java.util.Locale; import java.util.ResourceBundle; import com.swabunga.spell.swing.autospell.*; /** This class spellchecks a JTextComponent throwing up a Dialog everytime * it encounters a misspelled word. * * @author Robert Gustavsson (robert@lindesign.se) */ public class JTextComponentSpellChecker implements SpellCheckListener { // private static final String COMPLETED="COMPLETED"; private String dialogTitle = null; private SpellChecker spellCheck = null; private JSpellDialog dlg = null; private JTextComponent textComp = null; private ResourceBundle messages; private SpellDictionary mainDict=null; private AutoSpellCheckHandler markHandler; // Constructor public JTextComponentSpellChecker(SpellDictionary dict) { this(dict, null, null); } // Convinient Constructors, for those lazy guys. public JTextComponentSpellChecker(String dictFile) throws IOException { this(dictFile, null); } public JTextComponentSpellChecker(String dictFile, String title) throws IOException { this(new SpellDictionaryHashMap(new File(dictFile)), null, title); } public JTextComponentSpellChecker(String dictFile, String phoneticFile, String title) throws IOException { this(new SpellDictionaryHashMap(new File(dictFile), new File(phoneticFile)), null, title); } public JTextComponentSpellChecker(SpellDictionary dict, SpellDictionary userDict, String title) { spellCheck = new SpellChecker(dict); mainDict=dict; spellCheck.setCache(); if(userDict!=null) spellCheck.setUserDictionary(userDict); spellCheck.addSpellCheckListener(this); dialogTitle = title; messages = ResourceBundle.getBundle("com.swabunga.spell.swing.messages", Locale.getDefault()); markHandler=new AutoSpellCheckHandler(spellCheck, messages); } // MEMBER METHODS /** * Set user dictionary (used when a word is added) */ public void setUserDictionary(SpellDictionary dictionary) { if (spellCheck != null) spellCheck.setUserDictionary(dictionary); } private void setupDialog(JTextComponent textComp) { Component comp = SwingUtilities.getRoot(textComp); // Probably the most common situation efter the first time. if (dlg != null && dlg.getOwner() == comp) return; if (comp != null && comp instanceof Window) { if (comp instanceof Frame) dlg = new JSpellDialog((Frame) comp, dialogTitle, true); if (comp instanceof Dialog) dlg = new JSpellDialog((Dialog) comp, dialogTitle, true); // Put the dialog in the middle of it's parent. if (dlg != null) { Window win = (Window) comp; int x = (int) (win.getLocation().getX() + win.getWidth() / 2 - dlg.getWidth() / 2); int y = (int) (win.getLocation().getY() + win.getHeight() / 2 - dlg.getHeight() / 2); dlg.setLocation(x, y); } } else { dlg = new JSpellDialog((Frame) null, dialogTitle, true); } } /** * This method is called to check the spelling of a JTextComponent. * * @param textComp The JTextComponent to spellcheck. * @return Either SpellChecker.SPELLCHECK_OK, SpellChecker.SPELLCHECK_CANCEL or the number of errors found. The number of errors are those that * are found BEFORE any corrections are made. */ public synchronized int spellCheck(JTextComponent textComp) { setupDialog(textComp); this.textComp = textComp; DocumentWordTokenizer tokenizer = new DocumentWordTokenizer(textComp.getDocument()); int exitStatus = spellCheck.checkSpelling(tokenizer); textComp.requestFocus(); textComp.setCaretPosition(0); this.textComp = null; try{ if(mainDict instanceof SpellDictionaryCachedDichoDisk) ((SpellDictionaryCachedDichoDisk)mainDict).saveCache(); }catch(IOException ex){ System.err.println(ex.getMessage()); } return exitStatus; } /** * * @param pane */ public void startAutoSpellCheck(JEditorPane pane){ Document doc=pane.getDocument(); pane.setEditorKit(new AutoSpellEditorKit((StyledEditorKit)pane.getEditorKit())); pane.setDocument(doc); markHandler.addJEditorPane(pane); } /** * * @param pane */ public void stopAutoSpellCheck(JEditorPane pane){ EditorKit kit; Document doc; if(pane.getEditorKit() instanceof com.swabunga.spell.swing.autospell.AutoSpellEditorKit){ doc=pane.getDocument(); kit=((com.swabunga.spell.swing.autospell.AutoSpellEditorKit)pane.getEditorKit()).getStyledEditorKit(); pane.setEditorKit(kit); pane.setDocument(doc); } markHandler.removeJEditorPane(pane); } /** * */ public void spellingError(SpellCheckEvent event) { // java.util.List suggestions = event.getSuggestions(); event.getSuggestions(); int start = event.getWordContextPosition(); int end = start + event.getInvalidWord().length(); // Mark the invalid word in TextComponent textComp.requestFocus(); textComp.setCaretPosition(0); textComp.setCaretPosition(start); textComp.moveCaretPosition(end); dlg.show(event); } } Other Jazzy examples (source code examples)Here is a short list of links related to this Jazzy JTextComponentSpellChecker.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.