import java.awt.*;
import java.awt.event.*;
import java.io.*;

import com.wildcrest.JTextPrinter;

import com.sun.java.swing.*;
import com.sun.java.swing.text.*; 
import com.sun.java.swing.text.rtf.*;
import com.sun.java.swing.text.html.*;


/**
 * A basic JFC based application.
 */
public class JTextPrinterTestApplication extends com.sun.java.swing.JFrame
{
	public JTextPrinterTestApplication()
	{
		// This code is automatically generated by Visual Cafe when you add
		// components to the visual environment. It instantiates and initializes
		// the components. To modify the code, only use code syntax that matches
		// what Visual Cafe can generate, or Visual Cafe may be unable to back
		// parse your Java file into its visual environment.
		//{{INIT_CONTROLS
		setJMenuBar(JMenuBar1);
		setTitle("JTextPrinterTestApplication");
		setDefaultCloseOperation(com.sun.java.swing.JFrame.HIDE_ON_CLOSE);
		getContentPane().setLayout(new BorderLayout(0,0));
		getContentPane().setBackground(new java.awt.Color(223,223,223));
		setSize(600,440);
		setVisible(false);
		saveFileDialog.setMode(FileDialog.SAVE);
		saveFileDialog.setTitle("Save");
		//$$ saveFileDialog.move(24,336);
		openFileDialog.setMode(FileDialog.LOAD);
		openFileDialog.setTitle("Open");
		//$$ openFileDialog.move(0,336);
		JPanelTextPane1.setLayout(new BorderLayout(0,0));
		getContentPane().add("Center",JPanelTextPane1);
		JPanelTextPane1.setBounds(0,0,600,439);
		JScrollPane1.setOpaque(true);
		JPanelTextPane1.add("Center",JScrollPane1);
		JScrollPane1.setBounds(0,0,600,439);
		JScrollPane1.getViewport().add(JTextPane1);
		JTextPane1.setBounds(0,0,597,436);
		JTextPrinter1.setLeftHeader("JTextPrinter 1.0, EVALUATION USE ONLY");
		JTextPrinter1.setRightFooter("|||hh:mm:ss a zzz|||");
		JTextPrinter1.setCenterFooter("|||EEE, MMM d, yyyy|||");
		JTextPrinter1.setGapBetweenColumns(0.2);
		//$$ JMenuBar1.move(168,312);
		fileMenu.setText("File");
		fileMenu.setActionCommand("File");
		fileMenu.setMnemonic((int)'F');
		JMenuBar1.add(fileMenu);
		newItem.setHorizontalTextPosition(com.sun.java.swing.SwingConstants.RIGHT);
		newItem.setText("New");
		newItem.setActionCommand("New");
		newItem.setAccelerator(com.sun.java.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, Event.CTRL_MASK));
		newItem.setMnemonic((int)'N');
		fileMenu.add(newItem);
		openItem.setHorizontalTextPosition(com.sun.java.swing.SwingConstants.RIGHT);
		openItem.setText("Open...");
		openItem.setActionCommand("Open...");
		openItem.setMnemonic((int)'O');
		fileMenu.add(openItem);
		saveItem.setHorizontalTextPosition(com.sun.java.swing.SwingConstants.RIGHT);
		saveItem.setText("Save");
		saveItem.setActionCommand("Save");
		saveItem.setAccelerator(com.sun.java.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, Event.CTRL_MASK));
		saveItem.setMnemonic((int)'S');
		fileMenu.add(saveItem);
		saveAsItem.setText("Save As...");
		saveAsItem.setActionCommand("Save As...");
		saveAsItem.setMnemonic((int)'A');
		fileMenu.add(saveAsItem);
		fileMenu.add(JSeparator1);
		pageSetupItem.setText("Page Setup...");
		pageSetupItem.setActionCommand("Exit");
		pageSetupItem.setMnemonic((int)'X');
		fileMenu.add(pageSetupItem);
		printItem.setText("Print");
		printItem.setActionCommand("Exit");
		printItem.setAccelerator(com.sun.java.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_P, Event.CTRL_MASK));
		printItem.setMnemonic((int)'X');
		fileMenu.add(printItem);
		printWithTitleSectionItem.setText("Print With Title Section...");
		printWithTitleSectionItem.setActionCommand("Exit");
		printWithTitleSectionItem.setMnemonic((int)'X');
		fileMenu.add(printWithTitleSectionItem);
		fileMenu.add(JSeparator2);
		exitItem.setText("Exit");
		exitItem.setActionCommand("Exit");
		exitItem.setMnemonic((int)'X');
		fileMenu.add(exitItem);
		editMenu.setText("Edit");
		editMenu.setActionCommand("Edit");
		editMenu.setMnemonic((int)'E');
		JMenuBar1.add(editMenu);
		cutItem.setHorizontalTextPosition(com.sun.java.swing.SwingConstants.RIGHT);
		cutItem.setText("Cut");
		cutItem.setActionCommand("Cut");
		cutItem.setAccelerator(com.sun.java.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X, Event.CTRL_MASK));
		cutItem.setMnemonic((int)'T');
		editMenu.add(cutItem);
		copyItem.setHorizontalTextPosition(com.sun.java.swing.SwingConstants.RIGHT);
		copyItem.setText("Copy");
		copyItem.setActionCommand("Copy");
		copyItem.setAccelerator(com.sun.java.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, Event.CTRL_MASK));
		copyItem.setMnemonic((int)'C');
		editMenu.add(copyItem);
		pasteItem.setHorizontalTextPosition(com.sun.java.swing.SwingConstants.RIGHT);
		pasteItem.setText("Paste");
		pasteItem.setActionCommand("Paste");
		pasteItem.setAccelerator(com.sun.java.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_V, Event.CTRL_MASK));
		pasteItem.setMnemonic((int)'P');
		editMenu.add(pasteItem);
		fontMenu.setText("Font");
		fontMenu.setActionCommand("Help");
		fontMenu.setMnemonic((int)'H');
		JMenuBar1.add(fontMenu);
		serifItem.setText("Serif");
		serifItem.setActionCommand("Serif");
		serifItem.setSelected(true);
		serifItem.setAccelerator(com.sun.java.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_E, Event.CTRL_MASK));
		fontMenu.add(serifItem);
		sansSerifItem.setText("SansSerif");
		sansSerifItem.setActionCommand("SansSerif");
		sansSerifItem.setAccelerator(com.sun.java.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, Event.CTRL_MASK));
		fontMenu.add(sansSerifItem);
		monospacedItem.setText("Monospaced");
		monospacedItem.setActionCommand("Monospaced");
		monospacedItem.setAccelerator(com.sun.java.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, Event.CTRL_MASK));
		fontMenu.add(monospacedItem);
		sizeMenu.setText("Size");
		sizeMenu.setActionCommand("Help");
		sizeMenu.setMnemonic((int)'H');
		JMenuBar1.add(sizeMenu);
		size8Item.setText("8");
		size8Item.setActionCommand("About...");
		sizeMenu.add(size8Item);
		size10Item.setText("10");
		size10Item.setActionCommand("About...");
		size10Item.setAccelerator(com.sun.java.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_0, Event.CTRL_MASK));
		sizeMenu.add(size10Item);
		size12Item.setText("12");
		size12Item.setActionCommand("About...");
		size12Item.setSelected(true);
		size12Item.setAccelerator(com.sun.java.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_2, Event.CTRL_MASK));
		sizeMenu.add(size12Item);
		size14Item.setText("14");
		size14Item.setActionCommand("About...");
		size14Item.setAccelerator(com.sun.java.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_4, Event.CTRL_MASK));
		sizeMenu.add(size14Item);
		size18Item.setText("18");
		size18Item.setActionCommand("About...");
		size18Item.setAccelerator(com.sun.java.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_8, Event.CTRL_MASK));
		sizeMenu.add(size18Item);
		size20Item.setText("20");
		size20Item.setActionCommand("About...");
		sizeMenu.add(size20Item);
		size24Item.setText("24");
		size24Item.setActionCommand("About...");
		sizeMenu.add(size24Item);
		styleMenu.setText("Style");
		styleMenu.setActionCommand("Help");
		styleMenu.setMnemonic((int)'H');
		JMenuBar1.add(styleMenu);
		plainItem.setText("Plain");
		plainItem.setActionCommand("About...");
		plainItem.setSelected(true);
		plainItem.setAccelerator(com.sun.java.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_P, Event.CTRL_MASK));
		styleMenu.add(plainItem);
		boldItem.setText("Bold");
		boldItem.setActionCommand("About...");
		boldItem.setAccelerator(com.sun.java.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_B, Event.CTRL_MASK));
		styleMenu.add(boldItem);
		italicItem.setText("Italic");
		italicItem.setActionCommand("About...");
		italicItem.setAccelerator(com.sun.java.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_T, Event.CTRL_MASK));
		styleMenu.add(italicItem);
		underlineItem.setText("Underline");
		underlineItem.setActionCommand("About...");
		underlineItem.setAccelerator(com.sun.java.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_U, Event.CTRL_MASK));
		styleMenu.add(underlineItem);
		colorMenu.setText("Color");
		colorMenu.setActionCommand("Help");
		colorMenu.setMnemonic((int)'H');
		JMenuBar1.add(colorMenu);
		blackItem.setText("Black");
		blackItem.setActionCommand("About...");
		blackItem.setSelected(true);
		blackItem.setAccelerator(com.sun.java.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_K, Event.CTRL_MASK));
		colorMenu.add(blackItem);
		blueItem.setText("Blue");
		blueItem.setActionCommand("About...");
		blueItem.setForeground(java.awt.Color.blue);
		colorMenu.add(blueItem);
		redItem.setText("Red");
		redItem.setActionCommand("About...");
		redItem.setForeground(new java.awt.Color(128,0,0));
		colorMenu.add(redItem);
		greenItem.setText("Green");
		greenItem.setActionCommand("About...");
		greenItem.setForeground(new java.awt.Color(0,128,0));
		greenItem.setAccelerator(com.sun.java.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_G, Event.CTRL_MASK));
		colorMenu.add(greenItem);
		alignMenu.setText("Align");
		alignMenu.setActionCommand("Help");
		alignMenu.setMnemonic((int)'H');
		JMenuBar1.add(alignMenu);
		leftMenu.setText("Left");
		leftMenu.setActionCommand("About...");
		leftMenu.setSelected(true);
		leftMenu.setAccelerator(com.sun.java.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_L, Event.CTRL_MASK));
		alignMenu.add(leftMenu);
		centerMenu.setText("Center");
		centerMenu.setActionCommand("About...");
		alignMenu.add(centerMenu);
		rightMenu.setText("Right");
		rightMenu.setActionCommand("About...");
		rightMenu.setAccelerator(com.sun.java.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_R, Event.CTRL_MASK));
		alignMenu.add(rightMenu);
		justifiedMenu.setText("Justified");
		justifiedMenu.setActionCommand("About...");
		alignMenu.add(justifiedMenu);
		insertMenu.setText("Insert");
		insertMenu.setActionCommand("Help");
		insertMenu.setMnemonic((int)'H');
		JMenuBar1.add(insertMenu);
		imageItem.setHorizontalTextPosition(com.sun.java.swing.SwingConstants.RIGHT);
		imageItem.setText("Insert Image...");
		imageItem.setActionCommand("About...");
		insertMenu.add(imageItem);
		pagebreakItem.setHorizontalTextPosition(com.sun.java.swing.SwingConstants.RIGHT);
		pagebreakItem.setText("Insert Page Break");
		pagebreakItem.setActionCommand("About...");
		insertMenu.add(pagebreakItem);
		helpMenu.setText("Help");
		helpMenu.setActionCommand("Help");
		helpMenu.setMnemonic((int)'H');
		JMenuBar1.add(helpMenu);
		aboutItem.setHorizontalTextPosition(com.sun.java.swing.SwingConstants.RIGHT);
		aboutItem.setText("About...");
		aboutItem.setActionCommand("About...");
		aboutItem.setMnemonic((int)'A');
		helpMenu.add(aboutItem);
		JTextPrinter1.setLayout(null);
		getContentPane().add("South",JTextPrinter1);
		JTextPrinter1.setBounds(0,439,600,1);
		//}}
		
		setLocation(10,10);

		//{{INIT_MENUS
		//}}

		//{{REGISTER_LISTENERS
		SymWindow aSymWindow = new SymWindow();
		this.addWindowListener(aSymWindow);
		SymAction lSymAction = new SymAction();
		openItem.addActionListener(lSymAction);
		saveItem.addActionListener(lSymAction);
		exitItem.addActionListener(lSymAction);
		aboutItem.addActionListener(lSymAction);
		printItem.addActionListener(lSymAction);
		newItem.addActionListener(lSymAction);
		serifItem.addActionListener(lSymAction);
		sansSerifItem.addActionListener(lSymAction);
		monospacedItem.addActionListener(lSymAction);
		pageSetupItem.addActionListener(lSymAction);
		saveAsItem.addActionListener(lSymAction);
		cutItem.addActionListener(lSymAction);
		copyItem.addActionListener(lSymAction);
		pasteItem.addActionListener(lSymAction);
		SymCaret lSymCaret = new SymCaret();
		JTextPane1.addCaretListener(lSymCaret);
		size10Item.addActionListener(lSymAction);
		size12Item.addActionListener(lSymAction);
		size14Item.addActionListener(lSymAction);
		size18Item.addActionListener(lSymAction);
		size20Item.addActionListener(lSymAction);
		size24Item.addActionListener(lSymAction);
		blackItem.addActionListener(lSymAction);
		blueItem.addActionListener(lSymAction);
		redItem.addActionListener(lSymAction);
		greenItem.addActionListener(lSymAction);
		leftMenu.addActionListener(lSymAction);
		centerMenu.addActionListener(lSymAction);
		rightMenu.addActionListener(lSymAction);
		boldItem.addActionListener(lSymAction);
		italicItem.addActionListener(lSymAction);
		underlineItem.addActionListener(lSymAction);
		imageItem.addActionListener(lSymAction);
		pagebreakItem.addActionListener(lSymAction);
		printWithTitleSectionItem.addActionListener(lSymAction);
		size8Item.addActionListener(lSymAction);
		plainItem.addActionListener(lSymAction);
		justifiedMenu.addActionListener(lSymAction);
		//}}
		
        initPane();
		
	}

    /**
     * Creates a new instance of JFrame1 with the given title.
     * @param sTitle the title for the new frame.
     * @see #JFrame1()
     */
	public JTextPrinterTestApplication(String sTitle)
	{
		this();
		setTitle(sTitle);
	}
	
	/**
	 * The entry point for this application.
	 * Sets the Look and Feel to the System Look and Feel.
	 * Creates a new JFrame1 and makes it visible.
	 */
	static public void main(String args[])
	{
		try {
		    // Add the following code if you want the Look and Feel
		    // to be set to the Look and Feel of the native system.
		    /*
		    try {
		        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		    } 
		    catch (Exception e) { 
		    }
		    */

			//Create a new instance of our application's frame, and make it visible.
			(new JTextPrinterTestApplication()).setVisible(true);
		} 
		catch (Throwable t) {
			t.printStackTrace();
			//Ensure the application exits with an error condition.
			System.exit(1);
		}
	}

    /**
     * Notifies this component that it has been added to a container
     * This method should be called by <code>Container.add</code>, and 
     * not by user code directly.
     * Overridden here to adjust the size of the frame if needed.
     * @see java.awt.Container#removeNotify
     */
	public void addNotify()
	{
		// Record the size of the window prior to calling parents addNotify.
		Dimension size = getSize();
		
		super.addNotify();
		
		if (frameSizeAdjusted)
			return;
		frameSizeAdjusted = true;
		
		// Adjust size of frame according to the insets and menu bar
		com.sun.java.swing.JMenuBar menuBar = getRootPane().getJMenuBar();
		int menuBarHeight = 0;
		if (menuBar != null)
		    menuBarHeight = menuBar.getPreferredSize().height;
		Insets insets = getInsets();
		setSize(insets.left + insets.right + size.width, insets.top + insets.bottom + size.height + menuBarHeight);
	}

	// Used by addNotify
	boolean frameSizeAdjusted = false;

	//{{DECLARE_CONTROLS
	java.awt.FileDialog saveFileDialog = new java.awt.FileDialog(this);
	java.awt.FileDialog openFileDialog = new java.awt.FileDialog(this);
	com.sun.java.swing.JPanel JPanelTextPane1 = new com.sun.java.swing.JPanel();
	com.sun.java.swing.JScrollPane JScrollPane1 = new com.sun.java.swing.JScrollPane();
	com.sun.java.swing.JTextPane JTextPane1 = new com.sun.java.swing.JTextPane();
	com.wildcrest.JTextPrinter JTextPrinter1 = new com.wildcrest.JTextPrinter();
	com.sun.java.swing.JMenuBar JMenuBar1 = new com.sun.java.swing.JMenuBar();
	com.sun.java.swing.JMenu fileMenu = new com.sun.java.swing.JMenu();
	com.sun.java.swing.JMenuItem newItem = new com.sun.java.swing.JMenuItem();
	com.sun.java.swing.JMenuItem openItem = new com.sun.java.swing.JMenuItem();
	com.sun.java.swing.JMenuItem saveItem = new com.sun.java.swing.JMenuItem();
	com.sun.java.swing.JMenuItem saveAsItem = new com.sun.java.swing.JMenuItem();
	com.sun.java.swing.JSeparator JSeparator1 = new com.sun.java.swing.JSeparator();
	com.sun.java.swing.JMenuItem pageSetupItem = new com.sun.java.swing.JMenuItem();
	com.sun.java.swing.JMenuItem printItem = new com.sun.java.swing.JMenuItem();
	com.sun.java.swing.JMenuItem printWithTitleSectionItem = new com.sun.java.swing.JMenuItem();
	com.sun.java.swing.JSeparator JSeparator2 = new com.sun.java.swing.JSeparator();
	com.sun.java.swing.JMenuItem exitItem = new com.sun.java.swing.JMenuItem();
	com.sun.java.swing.JMenu editMenu = new com.sun.java.swing.JMenu();
	com.sun.java.swing.JMenuItem cutItem = new com.sun.java.swing.JMenuItem();
	com.sun.java.swing.JMenuItem copyItem = new com.sun.java.swing.JMenuItem();
	com.sun.java.swing.JMenuItem pasteItem = new com.sun.java.swing.JMenuItem();
	com.sun.java.swing.JMenu fontMenu = new com.sun.java.swing.JMenu();
	com.sun.java.swing.JCheckBoxMenuItem serifItem = new com.sun.java.swing.JCheckBoxMenuItem();
	com.sun.java.swing.JCheckBoxMenuItem sansSerifItem = new com.sun.java.swing.JCheckBoxMenuItem();
	com.sun.java.swing.JCheckBoxMenuItem monospacedItem = new com.sun.java.swing.JCheckBoxMenuItem();
	com.sun.java.swing.JMenu sizeMenu = new com.sun.java.swing.JMenu();
	com.sun.java.swing.JCheckBoxMenuItem size8Item = new com.sun.java.swing.JCheckBoxMenuItem();
	com.sun.java.swing.JCheckBoxMenuItem size10Item = new com.sun.java.swing.JCheckBoxMenuItem();
	com.sun.java.swing.JCheckBoxMenuItem size12Item = new com.sun.java.swing.JCheckBoxMenuItem();
	com.sun.java.swing.JCheckBoxMenuItem size14Item = new com.sun.java.swing.JCheckBoxMenuItem();
	com.sun.java.swing.JCheckBoxMenuItem size18Item = new com.sun.java.swing.JCheckBoxMenuItem();
	com.sun.java.swing.JCheckBoxMenuItem size20Item = new com.sun.java.swing.JCheckBoxMenuItem();
	com.sun.java.swing.JCheckBoxMenuItem size24Item = new com.sun.java.swing.JCheckBoxMenuItem();
	com.sun.java.swing.JMenu styleMenu = new com.sun.java.swing.JMenu();
	com.sun.java.swing.JCheckBoxMenuItem plainItem = new com.sun.java.swing.JCheckBoxMenuItem();
	com.sun.java.swing.JCheckBoxMenuItem boldItem = new com.sun.java.swing.JCheckBoxMenuItem();
	com.sun.java.swing.JCheckBoxMenuItem italicItem = new com.sun.java.swing.JCheckBoxMenuItem();
	com.sun.java.swing.JCheckBoxMenuItem underlineItem = new com.sun.java.swing.JCheckBoxMenuItem();
	com.sun.java.swing.JMenu colorMenu = new com.sun.java.swing.JMenu();
	com.sun.java.swing.JCheckBoxMenuItem blackItem = new com.sun.java.swing.JCheckBoxMenuItem();
	com.sun.java.swing.JCheckBoxMenuItem blueItem = new com.sun.java.swing.JCheckBoxMenuItem();
	com.sun.java.swing.JCheckBoxMenuItem redItem = new com.sun.java.swing.JCheckBoxMenuItem();
	com.sun.java.swing.JCheckBoxMenuItem greenItem = new com.sun.java.swing.JCheckBoxMenuItem();
	com.sun.java.swing.JMenu alignMenu = new com.sun.java.swing.JMenu();
	com.sun.java.swing.JCheckBoxMenuItem leftMenu = new com.sun.java.swing.JCheckBoxMenuItem();
	com.sun.java.swing.JCheckBoxMenuItem centerMenu = new com.sun.java.swing.JCheckBoxMenuItem();
	com.sun.java.swing.JCheckBoxMenuItem rightMenu = new com.sun.java.swing.JCheckBoxMenuItem();
	com.sun.java.swing.JCheckBoxMenuItem justifiedMenu = new com.sun.java.swing.JCheckBoxMenuItem();
	com.sun.java.swing.JMenu insertMenu = new com.sun.java.swing.JMenu();
	com.sun.java.swing.JMenuItem imageItem = new com.sun.java.swing.JMenuItem();
	com.sun.java.swing.JMenuItem pagebreakItem = new com.sun.java.swing.JMenuItem();
	com.sun.java.swing.JMenu helpMenu = new com.sun.java.swing.JMenu();
	com.sun.java.swing.JMenuItem aboutItem = new com.sun.java.swing.JMenuItem();
	//}}
		
    String fontFamily;
    int fontSize;
    boolean fontBold, fontItalic, fontUnderline;
    Color fontColor;
    int fontAlign;
    boolean firstTime = true;    
	
	//{{DECLARE_MENUS
	//}}

	void exitApplication()
	{
		try {
	    	// Beep
	    	Toolkit.getDefaultToolkit().beep();
	    	// Show a confirmation dialog
	    	int reply = JOptionPane.showConfirmDialog(this, 
	    	                                          "Do you really want to exit?", 
	    	                                          "JFC Application - Exit" , 
	    	                                          JOptionPane.YES_NO_OPTION, 
	    	                                          JOptionPane.QUESTION_MESSAGE);
			// If the confirmation was affirmative, handle exiting.
			if (reply == JOptionPane.YES_OPTION)
			{
		    	this.setVisible(false);    // hide the Frame
		    	this.dispose();            // free the system resources
		    	System.exit(0);            // close the application
			}
		} catch (Exception e) {
		}
	}

	class SymWindow extends java.awt.event.WindowAdapter
	{
		public void windowClosing(java.awt.event.WindowEvent event)
		{
			Object object = event.getSource();
			if (object == JTextPrinterTestApplication.this)
				JTextPrinterTestApplication_windowClosing(event);
		}
	}

	void JTextPrinterTestApplication_windowClosing(java.awt.event.WindowEvent event)
	{
		// to do: code goes here.
			 
		JTextPrinterTestApplication_windowClosing_Interaction1(event);
	}

	void JTextPrinterTestApplication_windowClosing_Interaction1(java.awt.event.WindowEvent event) {
		try {
			this.exitApplication();
		} catch (Exception e) {
		}
	}

	class SymAction implements java.awt.event.ActionListener
	{
		public void actionPerformed(java.awt.event.ActionEvent event)
		{
			Object object = event.getSource();
			if (object == openItem)
				openItem_actionPerformed(event);
			else if (object == saveItem)
				saveItem_actionPerformed(event);
			else if (object == exitItem)
				exitItem_actionPerformed(event);
			else if (object == aboutItem)
				aboutItem_actionPerformed(event);
			if (object == printItem)
				printItem_actionPerformed(event);
			else if (object == newItem)
				newItem_actionPerformed(event);
			if (object == serifItem)
				serifItem_actionPerformed(event);
			else if (object == sansSerifItem)
				sansSerifItem_actionPerformed(event);
			else if (object == monospacedItem)
				monospacedItem_actionPerformed(event);
			else if (object == pageSetupItem)
				pageSetupItem_actionPerformed(event);
			else if (object == saveAsItem)
				saveAsItem_actionPerformed(event);
			else if (object == cutItem)
				cutItem_actionPerformed(event);
			else if (object == copyItem)
				copyItem_actionPerformed(event);
			else if (object == pasteItem)
				pasteItem_actionPerformed(event);
			if (object == size10Item)
				size10Item_actionPerformed(event);
			else if (object == size12Item)
				size12Item_actionPerformed(event);
			else if (object == size14Item)
				size14Item_actionPerformed(event);
			else if (object == size18Item)
				size18Item_actionPerformed(event);
			else if (object == size20Item)
				size20Item_actionPerformed(event);
			else if (object == size24Item)
				size24Item_actionPerformed(event);
			else if (object == blackItem)
				blackItem_actionPerformed(event);
			else if (object == blueItem)
				blueItem_actionPerformed(event);
			else if (object == redItem)
				redItem_actionPerformed(event);
			else if (object == greenItem)
				greenItem_actionPerformed(event);
			else if (object == leftMenu)
				leftMenu_actionPerformed(event);
			else if (object == centerMenu)
				centerMenu_actionPerformed(event);
			else if (object == rightMenu)
				rightMenu_actionPerformed(event);
			else if (object == boldItem)
				boldItem_actionPerformed(event);
			else if (object == italicItem)
				italicItem_actionPerformed(event);
			else if (object == underlineItem)
				underlineItem_actionPerformed(event);
			else if (object == imageItem)
				imageItem_actionPerformed(event);
			else if (object == pagebreakItem)
				pagebreakItem_actionPerformed(event);
			else if (object == printWithTitleSectionItem)
				printWithTitleSectionItem_actionPerformed(event);
			else if (object == size8Item)
				size8Item_actionPerformed(event);
			else if (object == plainItem)
				plainItem_actionPerformed(event);
			else if (object == justifiedMenu)
				justifiedMenu_actionPerformed(event);						
		}
	}

	void openItem_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		openItem_actionPerformed_Interaction1(event);
	}

	void openItem_actionPerformed_Interaction1(java.awt.event.ActionEvent event) {
		try {
			// openFileDialog Show the FileDialog
			openFileDialog.setVisible(true);
		} catch (Exception e) { }
		
        String fileName = openFileDialog.getDirectory() + openFileDialog.getFile();
        if (fileName.equals("nullnull")) return;
        
        if (fileName.toLowerCase().endsWith(".ssd")) {      // read "Serialized StyledDocument"
            EditorKit editorKit = new StyledEditorKit();
            JTextPane1.setEditorKit(editorKit);
            try {
                FileInputStream fis = new FileInputStream(fileName);
                ObjectInputStream ois = new ObjectInputStream(fis);
                StyledDocument doc = (StyledDocument) ois.readObject();
                ois.close();
                JTextPane1.setStyledDocument(doc);
                validate();
                return;
            }
            catch (Exception e) { System.out.println(e); }
        }
        
        else if (fileName.toLowerCase().endsWith(".html") || fileName.toLowerCase().endsWith(".htm")) {
            JTextPane1.setContentType("text/html");
            try {
                java.net.URL url = new java.net.URL("file",null,fileName);
                JTextPane1.setPage(url);
                return;
            }
            catch (Exception e) {System.out.println("Exception reading URL: " + e.getMessage()); }
            
        }
        else if (fileName.toLowerCase().endsWith(".rtf")) {
            /* alternate implementation, works on Swing 1.0.3 but not Swing 1.1 (get erroneous "RTF is an 8-bit format" excetion)
            JTextPane1.setContentType("text/rtf");
            try {
                java.net.URL url = new java.net.URL("file",null,fileName);
                JTextPane1.setPage(url);
            }
            catch (Exception e) {System.out.println("Exception reading URL: " + e.getMessage()); }
            */
            
            EditorKit editorKit = new RTFEditorKit();
            JTextPane1.setEditorKit(editorKit);
            try {
                editorKit.read(new FileInputStream(fileName), JTextPane1.getStyledDocument(),0);
            }
            catch (Exception e) { System.out.println("Error reading file as rtf: " + e); }
            
            return;
        }
        else {      // treat as plain text
        
            /* alternate implementation 1, works on Swing 1.0.3
               but file doesn't read under Swing 1.1 (can't avoid "StyledEditorKit required" exception)
            JTextPane1.setContentType("text/plain");
            try {
                java.net.URL url = new java.net.URL("file",null,fileName);
                JTextPane1.setPage(url);
            }
            catch (Exception e) {System.out.println("Exception reading URL: " + e.getMessage()); }
            */
            
            /* alternate implementation 2, also works in Swing 1.0.3,
               but while Swing 1.1 reads it OK, it mangles the resulting plain text document so it can't
               be processed by JTextPrinter; however, reading into a temporary JTextPane and copying the
               text to the desired JTextPane does work, so that's what we'll use (see alternate
               implementation 3 below)
            EditorKit editorKit = new StyledEditorKit();
            JTextPane1.setEditorKit(editorKit);
            try {
                editorKit.read(new FileInputStream(fileName), JTextPane1.getStyledDocument(),0);
            }
            catch (Exception e) { System.out.println(e); }
            */
            
            // alternate implementation 3 for reading plain text, works in both Swing 1.0 and Swing 1.1
            JTextPane jtp = new JTextPane();
            EditorKit editorKit = new StyledEditorKit();
            jtp.setEditorKit(editorKit);
            try {
                editorKit.read(new FileInputStream(fileName), jtp.getStyledDocument(),0);
            }
            catch (Exception e) { System.out.println("Error reading file as plain text: " + e); }
            initPane();
            JTextPane1.replaceSelection(jtp.getText());

            return;
            
        }
        
	}
	

	void saveItem_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		saveItem_actionPerformed_Interaction1(event);
	}

	void saveItem_actionPerformed_Interaction1(java.awt.event.ActionEvent event) {
		try {
			// saveFileDialog Show the FileDialog
			saveFileDialog.setVisible(true);
		} catch (Exception e) {
		}
        String fileName = saveFileDialog.getDirectory() + saveFileDialog.getFile();
        if (fileName.equals("nullnull")) return;
        if (!fileName.endsWith(".ssd")) fileName = fileName + ".ssd";
        try {
		    FileOutputStream fos = new FileOutputStream(fileName);
		    ObjectOutputStream oos = new ObjectOutputStream(fos);
		    oos.writeObject(JTextPane1.getStyledDocument());
		    oos.flush();
		    oos.close();
		}
		catch (Exception e) {}
		
	}

	void exitItem_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		exitItem_actionPerformed_Interaction1(event);
	}

	void exitItem_actionPerformed_Interaction1(java.awt.event.ActionEvent event) {
		try {
			this.exitApplication();
		} catch (Exception e) {
		}
	}

	void aboutItem_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		aboutItem_actionPerformed_Interaction1(event);
	}

	void aboutItem_actionPerformed_Interaction1(java.awt.event.ActionEvent event) {
		try {
			// JAboutDialog Create with owner and show as modal
			{
				JAboutDialog JAboutDialog1 = new JAboutDialog(this);
				JAboutDialog1.setModal(true);
				JAboutDialog1.show();
			}
		} catch (Exception e) {
		}
	}

	void printItem_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		printItem_actionPerformed_Interaction1(event);
	}

	void printItem_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			JTextPrinter1.print(JTextPane1);
   		} catch (Exception e) {
		}
	}

	void newItem_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		newItem_actionPerformed_Interaction1(event);
	}

	void newItem_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
        initPane();
    }

    private void initPane() {
		JTextPane1.selectAll();
		JTextPane1.cut();
	    SimpleAttributeSet attribute = new SimpleAttributeSet();          
        StyleConstants.setFontFamily(attribute, "Serif");
        StyleConstants.setFontSize(attribute, 12);
        StyleConstants.setBold(attribute, false);
        StyleConstants.setItalic(attribute, false);
        StyleConstants.setUnderline(attribute, false);
        StyleConstants.setAlignment(attribute, StyleConstants.ALIGN_LEFT);
        StyleConstants.setForeground(attribute, Color.black);
	    JTextPane1.setCharacterAttributes(attribute,true);
	    JTextPane1.setParagraphAttributes(attribute,true);
	}
	
    // utility method to check the selected menu item uncheck all the other menu items
    private void checkMeUncheckRest(String thisItem, JMenu m) {
        for (int i=0; i<m.getItemCount(); i++) {
           // System.out.println(thisItem + " " + m.getItem(i).getActionC
            if (thisItem.equals(m.getItem(i).getText()))
                ((JCheckBoxMenuItem) m.getItem(i)).setSelected(true);
            else
                ((JCheckBoxMenuItem) m.getItem(i)).setSelected(false);
        }
    }
	
	
	void serifItem_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		serifItem_actionPerformed_Interaction1(event);
	}

	void serifItem_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			this.checkMeUncheckRest(event.getActionCommand(), fontMenu);
		} catch (Exception e) {
		}
	fontFamily = "Serif";
    SimpleAttributeSet attribute = new SimpleAttributeSet();          
    StyleConstants.setFontFamily(attribute, fontFamily);
	JTextPane1.setCharacterAttributes(attribute,false);
	}

	void sansSerifItem_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		sansSerifItem_actionPerformed_Interaction1(event);
	}

	void sansSerifItem_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			this.checkMeUncheckRest(event.getActionCommand(), fontMenu);
		} catch (Exception e) {
		}
	fontFamily = "SansSerif";
    SimpleAttributeSet attribute = new SimpleAttributeSet();          
    StyleConstants.setFontFamily(attribute, fontFamily);
	JTextPane1.setCharacterAttributes(attribute,false);
	}

	void monospacedItem_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		monospacedItem_actionPerformed_Interaction1(event);
	}

	void monospacedItem_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			this.checkMeUncheckRest(event.getActionCommand(), fontMenu);
		} catch (Exception e) {
		}
	fontFamily = "Monospaced";
    SimpleAttributeSet attribute = new SimpleAttributeSet();          
    StyleConstants.setFontFamily(attribute, fontFamily);
	JTextPane1.setCharacterAttributes(attribute,false);
	}
	
	
	private void insertImage() {
		try {
			// openFileDialog Show the FileDialog
			openFileDialog.setVisible(true);
		} catch (Exception e) { }
		
        String fileName = openFileDialog.getDirectory() + openFileDialog.getFile();
        if (fileName.equals("nullnull")) return;
	    JTextPane1.insertIcon(new com.sun.java.swing.ImageIcon(fileName));
	}	
		

	void pageSetupItem_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		pageSetupItem_actionPerformed_Interaction1(event);
	}

	void pageSetupItem_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			// JPageSetupDialog Create with title, show as modal
			{
				JPageSetupDialog JPageSetupDialog1 = new JPageSetupDialog(JTextPrinter1);
				JPageSetupDialog1.setModal(true);
				JPageSetupDialog1.setTitle("Page Setup");
				JPageSetupDialog1.show();
			}
		} catch (Exception e) {
		}
	}

	void saveAsItem_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		saveAsItem_actionPerformed_Interaction1(event);
	}

	void saveAsItem_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			this.saveItem_actionPerformed_Interaction1(event);
		} catch (Exception e) {
		}
	}

	void cutItem_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		cutItem_actionPerformed_Interaction1(event);
	}

	void cutItem_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			JTextPane1.cut();
		} catch (Exception e) {
		}
	}

	void copyItem_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		copyItem_actionPerformed_Interaction1(event);
	}

	void copyItem_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			JTextPane1.copy();
		} catch (Exception e) {
		}
	}

	void pasteItem_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		pasteItem_actionPerformed_Interaction1(event);
	}

	void pasteItem_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			JTextPane1.paste();
		} catch (Exception e) {
		}
	}


	class SymCaret implements com.sun.java.swing.event.CaretListener
	{
		public void caretUpdate(com.sun.java.swing.event.CaretEvent event)
		{
			Object object = event.getSource();
			if (object == JTextPane1)
				JTextPane1_caretUpdate(event);
		}
	}

	void JTextPane1_caretUpdate(com.sun.java.swing.event.CaretEvent event)
	{
		// to do: code goes here.
			 
		JTextPane1_caretUpdate_Interaction1(event);
	}

	void JTextPane1_caretUpdate_Interaction1(com.sun.java.swing.event.CaretEvent event)
	{
		try {
			AttributeSet sasC = JTextPane1.getCharacterAttributes();
			AttributeSet sasP = JTextPane1.getParagraphAttributes();
			fontFamily=StyleConstants.getFontFamily(sasC); checkMeUncheckRest(fontFamily,fontMenu);
			fontSize=StyleConstants.getFontSize(sasC); checkMeUncheckRest(new Integer(fontSize).toString(),sizeMenu);
			fontBold=StyleConstants.isBold(sasC); 
			fontItalic=StyleConstants.isItalic(sasC);  
			fontUnderline=StyleConstants.isUnderline(sasC); 
			updateStyleMenu();
			fontColor=StyleConstants.getForeground(sasC); checkMeUncheckRest(colorName(fontColor),colorMenu);
			fontAlign=StyleConstants.getAlignment(sasP); checkMeUncheckRest(alignName(fontAlign),alignMenu);
		} catch (Exception e) {
		}
	}
	
	    void updateStyleMenu() {
        boldItem.setSelected(fontBold);
        italicItem.setSelected(fontItalic);
        underlineItem.setSelected(fontUnderline);
        if (fontBold|fontItalic|fontUnderline) plainItem.setSelected(false);
        else plainItem.setSelected(true);
    }    
        
	
	private String alignName(int align) {
	    if (align==StyleConstants.ALIGN_LEFT) return "Left";
	    if (align==StyleConstants.ALIGN_CENTER) return "Center";
	    if (align==StyleConstants.ALIGN_RIGHT) return "Right";
	    if (align==StyleConstants.ALIGN_JUSTIFIED) return "Justified";
	    return "Left";
	}
	
	private String colorName(Color color) {
	    if (color.equals(Color.black)) return "Black";
	    if (color.equals(Color.blue)) return "Blue";
	    if (color.equals(Color.red)) return "Red";
	    if (color.equals(Color.green)) return "Green";
	    return "Black";
	}


	void size8Item_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		size8Item_actionPerformed_Interaction1(event);
	}

	void size8Item_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			this.checkMeUncheckRest("8", sizeMenu);
		} catch (Exception e) {
		}
    fontSize = 8;
	SimpleAttributeSet attribute = new SimpleAttributeSet();          
    StyleConstants.setFontSize(attribute, fontSize);
	JTextPane1.setCharacterAttributes(attribute,false);
	}
	
	
	void size10Item_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		size10Item_actionPerformed_Interaction1(event);
	}

	void size10Item_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			// convert class java.lang.Object->class java.lang.String
			this.checkMeUncheckRest((sizeMenu).toString(), sizeMenu);
		} catch (Exception e) {
		}
    fontSize = 10;
	SimpleAttributeSet attribute = new SimpleAttributeSet();          
    StyleConstants.setFontSize(attribute, fontSize);
	JTextPane1.setCharacterAttributes(attribute,false);
	}

	void size12Item_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		size12Item_actionPerformed_Interaction1(event);
	}

	void size12Item_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			this.checkMeUncheckRest("12", sizeMenu);
		} catch (Exception e) {
		}
    fontSize = 12;
	SimpleAttributeSet attribute = new SimpleAttributeSet();          
    StyleConstants.setFontSize(attribute, fontSize);
	JTextPane1.setCharacterAttributes(attribute,false);
	}

	void size14Item_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		size14Item_actionPerformed_Interaction1(event);
	}

	void size14Item_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			this.checkMeUncheckRest("14", sizeMenu);
		} catch (Exception e) {
		}
    fontSize = 14;
	SimpleAttributeSet attribute = new SimpleAttributeSet();          
    StyleConstants.setFontSize(attribute, fontSize);
	JTextPane1.setCharacterAttributes(attribute,false);
	}

	void size18Item_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		size18Item_actionPerformed_Interaction1(event);
	}

	void size18Item_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			this.checkMeUncheckRest("18", sizeMenu);
		} catch (Exception e) {
		}
    fontSize = 18;
	SimpleAttributeSet attribute = new SimpleAttributeSet();          
    StyleConstants.setFontSize(attribute, fontSize);
	JTextPane1.setCharacterAttributes(attribute,false);
	}

	void size20Item_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		size20Item_actionPerformed_Interaction1(event);
	}

	void size20Item_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			this.checkMeUncheckRest("20", sizeMenu);
		} catch (Exception e) {
		}
    fontSize = 20;
	SimpleAttributeSet attribute = new SimpleAttributeSet();          
    StyleConstants.setFontSize(attribute, fontSize);
	JTextPane1.setCharacterAttributes(attribute,false);
	}

	void size24Item_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		size24Item_actionPerformed_Interaction1(event);
	}

	void size24Item_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			this.checkMeUncheckRest("24", sizeMenu);
		} catch (Exception e) {
		}
    fontSize = 24;
	SimpleAttributeSet attribute = new SimpleAttributeSet();          
    StyleConstants.setFontSize(attribute, fontSize);
	JTextPane1.setCharacterAttributes(attribute,false);
	}

	void blackItem_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		blackItem_actionPerformed_Interaction1(event);
	}

	void blackItem_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			this.checkMeUncheckRest("Black", colorMenu);
		} catch (Exception e) {
		}
	fontColor = Color.black;
	SimpleAttributeSet attribute = new SimpleAttributeSet();          
    StyleConstants.setForeground(attribute, fontColor);
	JTextPane1.setCharacterAttributes(attribute,false);
	}

	void blueItem_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		blueItem_actionPerformed_Interaction1(event);
	}

	void blueItem_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			this.checkMeUncheckRest("Blue", colorMenu);
		} catch (Exception e) {
		}
	fontColor = Color.blue;
	SimpleAttributeSet attribute = new SimpleAttributeSet();          
    StyleConstants.setForeground(attribute, fontColor);
	JTextPane1.setCharacterAttributes(attribute,false);
	}

	void redItem_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		redItem_actionPerformed_Interaction1(event);
	}

	void redItem_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			this.checkMeUncheckRest("Red", colorMenu);
		} catch (Exception e) {
		}
	fontColor = Color.red;
	SimpleAttributeSet attribute = new SimpleAttributeSet();          
    StyleConstants.setForeground(attribute, fontColor);
	JTextPane1.setCharacterAttributes(attribute,false);
	}

	void greenItem_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		greenItem_actionPerformed_Interaction1(event);
	}

	void greenItem_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			this.checkMeUncheckRest("Green", colorMenu);
		} catch (Exception e) {
		}
	fontColor = Color.green;
	SimpleAttributeSet attribute = new SimpleAttributeSet();          
    StyleConstants.setForeground(attribute, fontColor);
	JTextPane1.setCharacterAttributes(attribute,false);
	}

	void justifiedMenu_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		justifiedMenu_actionPerformed_Interaction1(event);
	}

	void justifiedMenu_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			this.checkMeUncheckRest("Justified", alignMenu);
		} catch (Exception e) {
		}
	fontAlign = StyleConstants.ALIGN_JUSTIFIED;
	SimpleAttributeSet attribute = new SimpleAttributeSet();          
    StyleConstants.setAlignment(attribute, fontAlign);
	JTextPane1.setParagraphAttributes(attribute,false);
	}
	
	void leftMenu_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		leftMenu_actionPerformed_Interaction1(event);
	}

	void leftMenu_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			this.checkMeUncheckRest("Left", alignMenu);
		} catch (Exception e) {
		}
	fontAlign = StyleConstants.ALIGN_LEFT;
	SimpleAttributeSet attribute = new SimpleAttributeSet();          
    StyleConstants.setAlignment(attribute, fontAlign);
	JTextPane1.setParagraphAttributes(attribute,false);
	}

	void centerMenu_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		centerMenu_actionPerformed_Interaction1(event);
	}

	void centerMenu_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			this.checkMeUncheckRest("Center", alignMenu);
		} catch (Exception e) {
		}
	fontAlign = StyleConstants.ALIGN_CENTER;
	SimpleAttributeSet attribute = new SimpleAttributeSet();          
    StyleConstants.setAlignment(attribute, fontAlign);
	JTextPane1.setParagraphAttributes(attribute,false);
	}

	void rightMenu_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		rightMenu_actionPerformed_Interaction1(event);
	}

	void rightMenu_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			this.checkMeUncheckRest("Right", alignMenu);
		} catch (Exception e) {
		}
	fontAlign = StyleConstants.ALIGN_RIGHT;
	SimpleAttributeSet attribute = new SimpleAttributeSet();          
    StyleConstants.setAlignment(attribute, fontAlign);
	JTextPane1.setParagraphAttributes(attribute,false);
	}

	void plainItem_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		plainItem_actionPerformed_Interaction1(event);
	}

	void plainItem_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			this.checkMeUncheckRest(event.getActionCommand(), styleMenu);
		} catch (Exception e) {
		}
	    fontBold = false;
	    fontItalic = false;
	    fontUnderline = false;
	    SimpleAttributeSet attribute = new SimpleAttributeSet();          
        StyleConstants.setBold(attribute, fontBold);
        StyleConstants.setItalic(attribute, fontItalic);
        StyleConstants.setUnderline(attribute, fontUnderline);
	    JTextPane1.setCharacterAttributes(attribute,false);
        updateStyleMenu();
	}
	
	void boldItem_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		boldItem_actionPerformed_Interaction1(event);
	}

	void boldItem_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
	    fontBold = boldItem.isSelected();
	    SimpleAttributeSet attribute = new SimpleAttributeSet();          
        StyleConstants.setBold(attribute, fontBold);
	    JTextPane1.setCharacterAttributes(attribute,false);
        updateStyleMenu();
	}

	void italicItem_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		italicItem_actionPerformed_Interaction1(event);
	}

	void italicItem_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
	    fontItalic = italicItem.isSelected();
	    SimpleAttributeSet attribute = new SimpleAttributeSet();          
        StyleConstants.setItalic(attribute, fontItalic);
	    JTextPane1.setCharacterAttributes(attribute,false);
        updateStyleMenu();
	}

	void underlineItem_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		underlineItem_actionPerformed_Interaction1(event);
	}

	void underlineItem_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
	    fontUnderline = underlineItem.isSelected();
	    SimpleAttributeSet attribute = new SimpleAttributeSet();          
        StyleConstants.setUnderline(attribute, fontUnderline);
	    JTextPane1.setCharacterAttributes(attribute,false);
        updateStyleMenu();
	}

	void imageItem_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		imageItem_actionPerformed_Interaction1(event);
	}

	void imageItem_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			this.insertImage();
		} catch (Exception e) {
		}
	}

	void pagebreakItem_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			JTextPane1.replaceSelection("\f");
		} catch (Exception e) {
		}
	}

	void pagebreakItem_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		pagebreakItem_actionPerformed_Interaction1(event);
	}

	void printWithTitleSectionItem_actionPerformed(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
			 
		printWithTitleSectionItem_actionPerformed_Interaction1(event);
	}

	void printWithTitleSectionItem_actionPerformed_Interaction1(java.awt.event.ActionEvent event)
	{
		try {
			// openFileDialog Show the FileDialog
			openFileDialog.setTitle("Open document for title section");
			openFileDialog.setVisible(true);
		} catch (Exception e) { }
		
		JTextPane titleSection = new JTextPane();
        String fileName = openFileDialog.getDirectory() + openFileDialog.getFile();
        if (fileName.equals("nullnull")) return;
        if (fileName.toLowerCase().endsWith(".html") || fileName.toLowerCase().endsWith(".htm"))
            titleSection.setContentType("text/html");
        else if (fileName.toLowerCase().endsWith(".rtf"))
            titleSection.setContentType("text/rtf");
        else if (fileName.toLowerCase().endsWith(".ssd")) {
            try {
                FileInputStream fis = new FileInputStream(fileName);
                ObjectInputStream ois = new ObjectInputStream(fis);
                StyledDocument doc = (StyledDocument) ois.readObject();
                ois.close();
                titleSection.setStyledDocument(doc);
                validate();
            }
            catch (Exception e) {}
        }
        else {
            titleSection.setContentType("text/plain");               
            try {
                java.net.URL url = new java.net.URL("file",null,fileName);
                titleSection.setPage(url);
            }
            catch (Exception e) {System.out.println("Exception reading URL: " + e.getMessage()); }
        }
        
	    JTextPrinter1.print(titleSection,JTextPane1);
	}
	

}

