kafenio.org - Kafenio.editor
hexidec codex : Java : Ekit
JXHTMLedit | Download JXHTMLedit software for free at SourceForge.net
import java.io.IOException;
import java.io.InputStream;
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import net.atlanticbb.tantlinger.io.IOUtils;
/**
*
* @author Bob Tantlinger
*/
public class Demo {
public Demo() {
HTMLEditorPane editor = new HTMLEditorPane();
InputStream in = Demo.class.getResourceAsStream("/net/atlanticbb/tantlinger/shef/htmlsnip.txt");
try{
editor.setText(IOUtils.read(in));
}catch(IOException ex) {
ex.printStackTrace();
} finally {
IOUtils.close(in);
}
JFrame frame = new JFrame();
JMenuBar menuBar = new JMenuBar();
menuBar.add(editor.getEditMenu());
menuBar.add(editor.getFormatMenu());
menuBar.add(editor.getInsertMenu());
frame.setJMenuBar(menuBar);
frame.setTitle("HTML Editor Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 600);
frame.getContentPane().add(editor);
frame.setVisible(true);
}
public static void main(String args[]) {
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
} catch(Exception ex){}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Demo();
}
});
}
}
/*
GNU Lesser General Public License
Ekit - Java Swing HTML Editor & Viewer
Copyright (C) 2000 Howard Kistler
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.File;
import java.io.FileWriter;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JToolBar;
import com.hexidec.ekit.EkitCore;
import com.hexidec.ekit.EkitCoreSpell;
/** Ekit
* App for editing and saving HTML in a Java text component
*
* @author Howard Kistler
* @version 1.5
*
* REQUIREMENTS
* Java 2 (JDK 1.5 or higher)
* Swing Library
*/
public class Ekit extends JFrame implements WindowListener
{
private EkitCore ekitCore;
private File currentFile = (File)null;
/** Master Constructor
* @param sDocument [String] A text or HTML document to load in the editor upon startup.
* @param sStyleSheet [String] A CSS stylesheet to load in the editor upon startup.
* @param sRawDocument [String] A document encoded as a String to load in the editor upon startup.
* @param urlStyleSheet [URL] A URL reference to the CSS style sheet.
* @param includeToolBar [boolean] Specifies whether the app should include the toolbar.
* @param showViewSource [boolean] Specifies whether or not to show the View Source window on startup.
* @param showMenuIcons [boolean] Specifies whether or not to show icon pictures in menus.
* @param editModeExclusive [boolean] Specifies whether or not to use exclusive edit mode (recommended on).
* @param sLanguage [String] The language portion of the Internationalization Locale to run Ekit in.
* @param sCountry [String] The country portion of the Internationalization Locale to run Ekit in.
* @param base64 [boolean] Specifies whether the raw document is Base64 encoded or not.
* @param debugMode [boolean] Specifies whether to show the Debug menu or not.
* @param useSpellChecker [boolean] Specifies whether to include the spellchecker or not.
* @param multiBar [boolean] Specifies whether to use multiple toolbars or one big toolbar.
* @param enterBreak [boolean] Specifies whether the ENTER key should insert breaks instead of paragraph tags.
*/
public Ekit(String sDocument, String sStyleSheet, String sRawDocument, URL urlStyleSheet, boolean includeToolBar, boolean showViewSource, boolean showMenuIcons, boolean editModeExclusive, String sLanguage, String sCountry, boolean base64, boolean debugMode, boolean useSpellChecker, boolean multiBar, boolean enterBreak)
{
if(useSpellChecker)
{
ekitCore = new EkitCoreSpell(false, sDocument, sStyleSheet, sRawDocument, null, urlStyleSheet, includeToolBar, showViewSource, showMenuIcons, editModeExclusive, sLanguage, sCountry, base64, debugMode, true, multiBar, (multiBar ? EkitCore.TOOLBAR_DEFAULT_MULTI : EkitCore.TOOLBAR_DEFAULT_SINGLE), enterBreak);
}
else
{
ekitCore = new EkitCore(false, sDocument, sStyleSheet, sRawDocument, null, urlStyleSheet, includeToolBar, showViewSource, showMenuIcons, editModeExclusive, sLanguage, sCountry, base64, debugMode, false, multiBar, (multiBar ? EkitCore.TOOLBAR_DEFAULT_MULTI : EkitCore.TOOLBAR_DEFAULT_SINGLE), enterBreak);
}
ekitCore.setFrame(this);
/* Add the components to the app */
if(includeToolBar)
{
if(multiBar)
{
this.getContentPane().setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.anchor = GridBagConstraints.NORTH;
gbc.gridheight = 1;
gbc.gridwidth = 1;
gbc.weightx = 1.0;
gbc.weighty = 0.0;
gbc.gridx = 1;
gbc.gridy = 1;
this.getContentPane().add(ekitCore.getToolBarMain(includeToolBar), gbc);
gbc.gridy = 2;
this.getContentPane().add(ekitCore.getToolBarFormat(includeToolBar), gbc);
gbc.gridy = 3;
this.getContentPane().add(ekitCore.getToolBarStyles(includeToolBar), gbc);
gbc.anchor = GridBagConstraints.SOUTH;
gbc.fill = GridBagConstraints.BOTH;
gbc.weighty = 1.0;
gbc.gridy = 4;
this.getContentPane().add(ekitCore, gbc);
}
else
{
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(ekitCore, BorderLayout.CENTER);
this.getContentPane().add(ekitCore.getToolBar(includeToolBar), BorderLayout.NORTH);
}
}
else
{
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(ekitCore, BorderLayout.CENTER);
}
this.setJMenuBar(ekitCore.getMenuBar());
this.addWindowListener(this);
this.updateTitle();
this.pack();
this.setVisible(true);
}
public Ekit()
{
this(null, null, null, null, true, false, true, true, null, null, false, false, false, true, false);
}
/* WindowListener methods */
public void windowClosing(WindowEvent we)
{
this.dispose();
System.exit(0);
}
public void windowOpened(WindowEvent we) { ; }
public void windowClosed(WindowEvent we) { ; }
public void windowActivated(WindowEvent we) { ; }
public void windowDeactivated(WindowEvent we) { ; }
public void windowIconified(WindowEvent we) { ; }
public void windowDeiconified(WindowEvent we) { ; }
/** Convenience method for updating the application title bar
*/
private void updateTitle()
{
this.setTitle(ekitCore.getAppName() + (currentFile == null ? "" : " - " + currentFile.getName()));
}
/** Usage method
*/
public static void usage()
{
System.out.println("usage: com.hexidec.ekit.Ekit [-t|t+|T] [-s|S] [-m|M] [-x|X] [-b|B] [-v|V] [-p|P] [-fFILE] [-cCSS] [-rRAW] [-uURL] [-lLANG] [-d|D] [-h|H|?]");
System.out.println(" Each option contained in [] brackets is optional,");
System.out.println(" and can be one of the values separated be the | pipe.");
System.out.println(" Each option must be proceeded by a - hyphen.");
System.out.println(" The options are:");
System.out.println(" -t|t+|T : -t = single toolbar, -t+ = multiple toolbars, -T = no toolbar");
System.out.println(" -s|S : -s = show source window on startup, -S = hide source window");
System.out.println(" -m|M : -m = show icons on menus, -M = no menu icons");
System.out.println(" -x|X : -x = exclusive document/source windows, -X = use split window");
System.out.println(" -b|B : -b = use Base64 document encoding, -B = use regular encoding");
System.out.println(" -v|V : -v = include spell checker, -V = omit spell checker");
System.out.println(" -p|P : -p = ENTER key inserts paragraph, -P = inserts break");
System.out.println(" -fFILE : load HTML document on startup (replace FILE with file name)");
System.out.println(" -cCSS : load CSS stylesheet on startup (replace CSS with file name)");
System.out.println(" -rRAW : load raw document on startup (replace RAW with file name)");
System.out.println(" -uURL : load document at URL on startup (replace URL with file URL)");
System.out.println(" -lLANG : specify the starting language (defaults to your locale)");
System.out.println(" replace LANG with xx_XX format (e.g., US English is en_US)");
System.out.println(" -d|D : -d = DEBUG mode on, -D = DEBUG mode off (developers only)");
System.out.println(" -h|H|? : print out this help information");
System.out.println(" ");
System.out.println("The defaults settings are equivalent to: -t+ -S -m -x -B -V -p -D");
System.out.println(" ");
System.out.println("For further information, read the README file.");
}
/** Main method
*/
public static void main(String[] args)
{
String sDocument = null;
String sStyleSheet = null;
String sRawDocument = null;
URL urlStyleSheet = null;
boolean includeToolBar = true;
boolean multibar = true;
boolean includeViewSource = false;
boolean includeMenuIcons = true;
boolean modeExclusive = true;
String sLang = null;
String sCtry = null;
boolean base64 = false;
boolean debugOn = false;
boolean spellCheck = false;
boolean enterBreak = false;
for(int i = 0; i < args.length; i++)
{
if (args[i].equals("-h") ||
args[i].equals("-H") ||
args[i].equals("-?")) { usage(); }
else if(args[i].equals("-t")) { includeToolBar = true; multibar = false; }
else if(args[i].equals("-t+")) { includeToolBar = true; multibar = true; }
else if(args[i].equals("-T")) { includeToolBar = false; multibar = false; }
else if(args[i].equals("-s")) { includeViewSource = true; }
else if(args[i].equals("-S")) { includeViewSource = false; }
else if(args[i].equals("-m")) { includeMenuIcons = true; }
else if(args[i].equals("-M")) { includeMenuIcons = false; }
else if(args[i].equals("-x")) { modeExclusive = true; }
else if(args[i].equals("-X")) { modeExclusive = false; }
else if(args[i].equals("-b")) { base64 = true; }
else if(args[i].equals("-B")) { base64 = false; }
else if(args[i].startsWith("-f")) { sDocument = args[i].substring(2, args[i].length()); }
else if(args[i].startsWith("-c")) { sStyleSheet = args[i].substring(2, args[i].length()); }
else if(args[i].startsWith("-r")) { sRawDocument = args[i].substring(2, args[i].length()); }
else if(args[i].equals("-v")) { spellCheck = true; }
else if(args[i].equals("-V")) { spellCheck = false; }
else if(args[i].equals("-p")) { enterBreak = false; }
else if(args[i].equals("-P")) { enterBreak = true; }
else if(args[i].startsWith("-u"))
{
try
{
urlStyleSheet = new URL(args[i].substring(2, args[i].length()));
}
catch(MalformedURLException murle)
{
murle.printStackTrace(System.err);
}
}
else if(args[i].startsWith("-l"))
{
if(args[i].indexOf('_') == 4 && args[i].length() >= 7)
{
sLang = args[i].substring(2, args[i].indexOf('_'));
sCtry = args[i].substring(args[i].indexOf('_') + 1, args[i].length());
}
}
else if(args[i].equals("-d")) { debugOn = true; }
else if(args[i].equals("-D")) { debugOn = false; }
}
Ekit ekit = new Ekit(sDocument, sStyleSheet, sRawDocument, urlStyleSheet, includeToolBar, includeViewSource, includeMenuIcons, modeExclusive, sLang, sCtry, base64, debugOn, spellCheck, multibar, enterBreak);
}
}
import java.awt.BorderLayout;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.File;
import java.net.URL;
import java.lang.reflect.Constructor;
import javax.swing.JPanel;
import javax.swing.JFrame;
import de.xeinfach.kafenio.interfaces.KafenioContainerInterface;
import de.xeinfach.kafenio.interfaces.KafenioPanelConfigurationInterface;
import de.xeinfach.kafenio.interfaces.KafenioPanelInterface;
import de.xeinfach.kafenio.util.LeanLogger;
/**
* Demo Implementation to run KafenioPanel as standalone application.
* @author Karsten Pawlik
*/
public class Kafenio extends JFrame implements WindowListener, KafenioContainerInterface {
private KafenioPanelConfigurationInterface config;
private KafenioPanelInterface kafenioPanel;
private File currentFile = (File)null;
private SplashScreen splash;
private static LeanLogger log = new LeanLogger("Kafenio.class");
/**
* creates a new Kafenio Editor Window object using the given parameters.
* @param conf the configuration for this object.
*/
public Kafenio(KafenioPanelConfigurationInterface iConfiguration) {
super();
showSplash();
config = iConfiguration;
config.setKafenioParent(this);
try {
//What follows is more complicated than necessary in order to demonstrate
//plugin-like employment of Kafenio. Easy, non plugin way, would be: kafenioPanel = new KafenioPanel(config);
Class kafenioPanelClass = Class.forName("de.xeinfach.kafenio.KafenioPanel");
Class[] constructorParameterTyping = { KafenioPanelConfigurationInterface.class };
Constructor kafenioPanelContructor = kafenioPanelClass.getConstructor( constructorParameterTyping );
kafenioPanel =(KafenioPanelInterface)kafenioPanelContructor.newInstance(new Object[]{ config });
}
catch (Exception ex) { // Probably class not found exception
ex.printStackTrace();
return;
}
/* Add the components to the app */
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add((JPanel)kafenioPanel, BorderLayout.CENTER);
//Example of use - remove bevels around buttons in Java1.4.2:
// kafenioPanel.getJToolBar1().setRollover(true);
// kafenioPanel.getJToolBar2().setRollover(true);
this.addWindowListener(this);
this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
this.updateTitle();
this.pack();
this.show();
splash.destroy();
}
/**
* main method.
* @param args commandline arguments.
* <UL>
* <LI>-t | -T = turn on/off toolbars</LI>
* <LI>-s | -S = turn on/off sourceview on startup</LI>
* <LI>-m | -M = turn on/off show menu icons</LI>
* <LI>-x | -X = turn on/off exclusive edit mode</LI>
* <LI>-b | -B = turn on/off base64 decoding of raw-document</LI>
* <LI>-8 = turn on unicode export of document text</LI>
* <LI>-f = html document filepath to load</LI>
* <LI>-c = css-file to load</LI>
* <LI>-r = raw document filepath to load</LI>
* <LI>-u = stylesheet URL</LI>
* <LI>-l = language setting (i.e.: de_DE for german/germany)</LI>
* <LI>-d | -D = turn on/off debug mode</LI>
* </UL>
*/
public static void main(String[] args) {
KafenioPanelConfigurationInterface newConfig = null;
try {
newConfig = (KafenioPanelConfigurationInterface)
Class.forName("de.xeinfach.kafenio.KafenioPanelConfiguration").newInstance();
} catch (Exception ex) {}
newConfig.setImageDir("file://");
// Example of how to show only selected submenus and tool bar items:
// boolean restrictMenus = false;
// if (restrictMenus) {
// newConfig.setCustomMenuItems("edit view font format insert table forms search tools help");
// newConfig.setCustomToolBar1("save cut copy paste bold italic underline left center right justify");
// }
if (args.length > 0) {
for(int i = 0; i < args.length; i++) {
if (args[i].equals("-t")) {
newConfig.setShowToolbar(true);
newConfig.setShowToolbar2(true);
} else if(args[i].equals("-T")) {
newConfig.setShowToolbar(false);
newConfig.setShowToolbar2(false);
} else if(args[i].equals("-s")) {
newConfig.setShowViewSource(true);
} else if(args[i].equals("-S")) {
newConfig.setShowViewSource(false);
} else if(args[i].equals("-m")) {
newConfig.setShowMenuIcons(true);
} else if(args[i].equals("-M")) {
newConfig.setShowMenuIcons(false);
} else if(args[i].equals("-b")) {
newConfig.setBase64(true);
} else if(args[i].equals("-B")) {
newConfig.setBase64(false);
} else if(args[i].equals("-8")) {
newConfig.setUnicode(true);
} else if(args[i].startsWith("-f")) {
newConfig.setDocument(args[i].substring(2, args[i].length()));
} else if(args[i].startsWith("-c")) {
newConfig.setStyleSheet(args[i].substring(2, args[i].length()));
} else if(args[i].startsWith("-r")) {
newConfig.setRawDocument(args[i].substring(2, args[i].length()));
} else if(args[i].startsWith("-u")) {
try {
newConfig.setUrlStyleSheet(new URL(args[i].substring(2, args[i].length())));
} catch(Throwable e) {
log.warn("Exception caught while trying to setURLStylesheet: " + e.fillInStackTrace());
}
} else if(args[i].startsWith("-l")) {
if(args[i].indexOf('_') > -1) {
newConfig.setLanguage(args[i].substring(2, args[i].indexOf('_')));
newConfig.setCountry(args[i].substring(args[i].indexOf('_') + 1, args[i].length()));
}
} else if(args[i].equals("-d")) {
newConfig.setDebugMode(true);
} else if(args[i].equals("-D")) {
newConfig.setDebugMode(false);
}
}
}
new Kafenio(newConfig);
}
/**
* Convenience method for updating the application title bar
*/
private void updateTitle() {
this.setTitle(kafenioPanel.getAppName() + (currentFile == null ? "" : " - " + currentFile.getName()));
}
/** (non-Javadoc)
* @see java.awt.event.WindowListener#windowActivated(java.awt.event.WindowEvent)
*/
public void windowActivated(WindowEvent e) {}
/** (non-Javadoc)
* @see java.awt.event.WindowListener#windowClosed(java.awt.event.WindowEvent)
*/
public void windowClosed(WindowEvent e) {}
/** (non-Javadoc)
* @see java.awt.event.WindowListener#windowClosing(java.awt.event.WindowEvent)
*/
public void windowClosing(WindowEvent e) {
kafenioPanel.quitApp();
}
/** (non-Javadoc)
* @see java.awt.event.WindowListener#windowDeactivated(java.awt.event.WindowEvent)
*/
public void windowDeactivated(WindowEvent e) {}
/** (non-Javadoc)
* @see java.awt.event.WindowListener#windowDeiconified(java.awt.event.WindowEvent)
*/
public void windowDeiconified(WindowEvent e) {}
/** (non-Javadoc)
* @see java.awt.event.WindowListener#windowIconified(java.awt.event.WindowEvent)
*/
public void windowIconified(WindowEvent e) {}
/** (non-Javadoc)
* @see java.awt.event.WindowListener#windowOpened(java.awt.event.WindowEvent)
*/
public void windowOpened(WindowEvent e) {}
/**
* not an applet - no need to use pop-out functionality. do nothing.
*/
public void detachFrame() {}
private void showSplash() {
splash = new SplashScreen(30);
log.info("Info: Displaying splash image for max. 30 seconds.");
new Thread(splash).start();
}
}
javac -classpath <Pfad zum Jar> Main.java
java -classpath <Pfad zum Jar>
MainKlasse.main(new String[0])
public class HTMLEditor {
public HTMLEditor(){
HTMLEditorPane editor = new HTMLEditorPane();
InputStream in = HTMLEditor.class.getResourceAsStream("/net/atlanticbb/tantlinger/shef/htmlsnip.txt");
try{
editor.setText(IOUtils.read(in));
}catch(IOException ex) {
gui.Gui.getInstance().makeErrorMessage(ex.toString());
} finally {
IOUtils.close(in);
}
JFrame frame = new JFrame();
JMenuBar menuBar = new JMenuBar();
menuBar.add(editor.getEditMenu());
menuBar.add(editor.getFormatMenu());
menuBar.add(editor.getInsertMenu());
frame.setJMenuBar(menuBar);
frame.setTitle("HTML Editor Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 600);
frame.getContentPane().add(editor);
frame.setVisible(true);
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new HTMLEditor();
}
});
Exception occurred during event dispatching:
java.lang.NoClassDefFoundError: novaworx/textpane/SyntaxTextPane
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at gui.HTMLEditor.<init>(HTMLEditor.java:21)
at gui.Gui$29.run(Gui.java:1561)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
at java.awt.Dialog$1.run(Dialog.java:1046)
at java.awt.Dialog$3.run(Dialog.java:1098)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1096)
at java.awt.Component.show(Component.java:1563)
at java.awt.Component.setVisible(Component.java:1515)
at java.awt.Window.setVisible(Window.java:842)
at java.awt.Dialog.setVisible(Dialog.java:986)
at gui.Gui.jButtonArtikelBearbeitenActionPerformed(Gui.java:1425)
at gui.Gui.access$1700(Gui.java:38)
at gui.Gui$22.actionPerformed(Gui.java:1155)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.ClassNotFoundException: novaworx.textpane.SyntaxTextPane
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 56 more