//------------------------------------------------------ // mainWindow.java -- implementation of mainWindow class //------------------------------------------------------ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.media.opengl.*; import java.lang.String; public class mainWindow implements Runnable { static Thread disp_thread = new Thread(new mainWindow()); static boolean quit = false; static glWidget gl_listener; static String currentMode = "None"; // draw lines static GLJPanel canvas; public static void main(String[] args) { disp_thread.start(); // starts the thread and calls run() } public void run() { JFrame frame = new JFrame("Example Drawing App(Java Implementation)"); // create menu bar JMenuBar menubar = new JMenuBar(); // create menus JMenu fileMenu = new JMenu("File"); JMenuItem quitItem = new JMenuItem("Quit"); quitItem.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e) { System.exit(0); } }); fileMenu.add(quitItem); JMenu drawMenu = new JMenu("Draw"); JMenuItem drawLineItem = new JMenuItem("Draw Line"); drawLineItem.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e) { changeMode ("Draw Line"); } }); JMenuItem drawFreeItem = new JMenuItem("Draw Freehand"); drawFreeItem.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e) { changeMode ("Draw Freehand"); } }); JMenuItem drawImageItem = new JMenuItem("Draw Image"); drawImageItem.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e) { changeMode ("Draw Image"); } }); JMenuItem clearItem = new JMenuItem("Clear Canvas"); clearItem.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e) { changeMode ("Clear Canvas"); } }); // add the menu items to draw menu drawMenu.add(drawLineItem); drawMenu.add(drawFreeItem); drawMenu.add(drawImageItem); drawMenu.add(clearItem); // add menus to the menubar menubar.add(fileMenu); menubar.add(drawMenu); // add menubar to the frame frame.setJMenuBar(menubar); // create the gl canvas canvas = new GLJPanel(); // create the listeners for various events gl_listener = new glWidget(this, canvas); canvas.addGLEventListener(gl_listener); canvas.addMouseListener((MouseListener)gl_listener); canvas.addMouseMotionListener((MouseMotionListener)gl_listener); // add canvas, set frame geometry frame.add(canvas); frame.setSize(700, 500); frame.setLocation(250, 250); // terminate thread if window is closed frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { quit = true; } } ); frame.setVisible(true); canvas.requestFocus(); if (!quit) canvas.display(); } public void changeMode(String m) { currentMode = m; gl_listener.changeMode(m); if (m == "Clear Canvas") canvas.display(); } public String getCurrentMode() { return currentMode; } }