/*
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
*/
/*
* put your module comment here
* formatted with JxBeauty (c) johann.langhofer@nextra.at
*/
package com.swabunga.spell.examples;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.WindowConstants;
import com.swabunga.spell.engine.SpellDictionary;
import com.swabunga.spell.engine.SpellDictionaryHashMap;
import com.swabunga.spell.swing.JTextComponentSpellChecker;
/**
* This class shows an example of how to use the spell checking capability on a JTextComponent.
*
* @author Robert Gustavsson (robert@lindesign.se)
*/
public class TextPaneMarkingExample extends JFrame {
private static final String englishDictionary = "dict/dict.sv";
private static final String englishPhonetic = "dict/phonet.sv";
protected SpellDictionary dictionary;
JTextPane text = null;
JButton spell = null;
JTextComponentSpellChecker sc = null;
public TextPaneMarkingExample(String dictPath, String phonetPath) {
File dictFile = null, phonetFile = null;
// INIT DICTIONARY
if (dictPath == null) {
dictFile = new File(englishDictionary);
} else {
dictFile = new File(dictPath);
}
if (phonetPath != null) {
phonetFile = new File(phonetPath);
}
try {
dictionary = new SpellDictionaryHashMap(dictFile, phonetFile);
// dictionary = new SpellDictionaryDisk(dictFile, phonetFile, true);
// dictionary = new GenericSpellDictionary(dictFile, phonetFile);
} catch (Exception ex) {
ex.printStackTrace();
}
// INIT GUI
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
System.exit(0);
}
});
initGUI();
pack();
}
private void initGUI() {
Container frame = getContentPane();
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
frame.setLayout(gridbag);
c.anchor = GridBagConstraints.CENTER;
c.fill = GridBagConstraints.BOTH;
c.insets = new Insets(5, 5, 5, 5);
c.weightx = 1.0;
c.weighty = 1.0;
text = new JTextPane();
text.setPreferredSize(new Dimension(300, 150));
sc = new JTextComponentSpellChecker(dictionary);
sc.startAutoSpellCheck(text);
addToFrame(frame, new JScrollPane(text), gridbag, c, 0, 1, 1, 1);
JMenuBar menuBar = new JMenuBar();
JMenu menu = null;
int menuCount = 0;
Action[] actions = text.getEditorKit().getActions();
for (int i = 0; i < actions.length; i++) {
if (i % 20 == 0) {
menu = new JMenu("Actions " + menuCount);
menuCount++;
menuBar.add(menu);
}
menu.add(actions[i]);
}
setJMenuBar(menuBar);
}
// Helps build gridbaglayout.
private void addToFrame(Container f, Component c, GridBagLayout gbl, GridBagConstraints gbc, int x, int y, int w, int h) {
gbc.gridx = x;
gbc.gridy = y;
gbc.gridwidth = w;
gbc.gridheight = h;
gbl.setConstraints(c, gbc);
f.add(c);
}
public static void main(String[] args) {
String dictPath = null, phonetPath = null;
if (args.length > 0) {
dictPath = args[0];
}
if (args.length > 1) {
phonetPath = args[1];
}
TextPaneMarkingExample d = new TextPaneMarkingExample(dictPath, phonetPath);
d.show();
}
}