/* * JaxbDemoFrame.java * * Created on 2002Äê11ÔÂ10ÈÕ, ÏÂÎç5:32 */ //package jaxbdemo; import java.awt.*; import java.awt.event.*; //from jaxb import java.math.*; import java.util.*; import javax.xml.bind.*; import epri.jaxb.*; import java.io.*; /** * * @author wangyu */ public class JaxbDemoFrame extends Frame{ // Variables declaration private MyCanvas canvas; private Menu fileMenu; private MenuItem exitMenuItem; private MenuItem redMenuItem; private MenuItem saveAsMenuItem; private MenuItem saveMenuItem; private Menu graphMenu; private MenuItem openMenuItem; private MenuBar menuBar; private MenuItem circleMenuItem; private MenuItem greenMenuItem; private MenuItem rectMenuItem; private Menu colorMenu; private String filename="notset"; private Marshaller m; private Unmarshaller u; private ShapeContainer myContainer; // End of variables declaration /** Creates a new instance of JaxbDemoFrame */ public JaxbDemoFrame() { super("Jaxb demo"); setSize(700,500); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { System.exit(0); } }); //inital menu canvas = new MyCanvas(); menuBar = new MenuBar(); fileMenu = new Menu("File"); openMenuItem = new MenuItem("Open"); saveMenuItem = new MenuItem("Save"); saveAsMenuItem = new MenuItem("Save As..."); exitMenuItem = new MenuItem("Exit"); colorMenu = new Menu("Color"); greenMenuItem = new MenuItem("Green"); redMenuItem = new MenuItem("Red"); graphMenu = new Menu("Graph"); circleMenuItem = new MenuItem("Circle"); rectMenuItem = new MenuItem("Rect"); openMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { openFile(); } }); fileMenu.add(openMenuItem); saveMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { saveFile(); } }); fileMenu.add(saveMenuItem); saveAsMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { saveAsFile(); } }); fileMenu.add(saveAsMenuItem); exitMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { System.exit(0); } }); fileMenu.add(exitMenuItem); menuBar.add(fileMenu); greenMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { canvas.setColor("green"); } }); colorMenu.add(greenMenuItem); redMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { canvas.setColor("red"); } }); colorMenu.add(redMenuItem); menuBar.add(colorMenu); circleMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { canvas.setGraph("circle"); } }); graphMenu.add(circleMenuItem); rectMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { canvas.setGraph("rect"); } }); graphMenu.add(rectMenuItem); menuBar.add(graphMenu); setMenuBar(menuBar); //init jaxb try { JAXBContext jc = JAXBContext.newInstance( "epri.jaxb" ); ObjectFactory objFactory = new ObjectFactory(); myContainer = objFactory.createShapeContainer(); canvas.setObjectFactory(objFactory); canvas.setShapeContainer(myContainer); m = jc.createMarshaller(); u = jc.createUnmarshaller(); m.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE ); } catch( JAXBException je ) { je.printStackTrace(); } add(canvas); } private void openFile() { FileDialog open = new FileDialog(this,"open file..",FileDialog.LOAD); open.setVisible(true); filename = open.getDirectory()+open.getFile(); try { myContainer =(ShapeContainer)u.unmarshal( new FileInputStream(filename)); this.canvas.setShapeContainer(myContainer); this.canvas.repaint(); } catch( JAXBException je ) { je.printStackTrace(); } catch (FileNotFoundException fe) { System.out.println("file not found!"); } } private void saveFile() { if (filename.equals("notset")){ FileDialog open = new FileDialog(this,"save as..",FileDialog.LOAD); open.setVisible(true); filename = open.getDirectory()+open.getFile(); } try { m.marshal(myContainer, new FileOutputStream(filename)); } catch( JAXBException je ) { je.printStackTrace(); } catch (FileNotFoundException fe) { System.out.println("file not found!"); } } private void saveAsFile() { FileDialog open = new FileDialog(this,"save as..",FileDialog.LOAD); open.setVisible(true); String filename = open.getDirectory()+open.getFile(); try { m.marshal(myContainer, new FileOutputStream(filename)); } catch( JAXBException je ) { je.printStackTrace(); } catch (FileNotFoundException fe) { System.out.println("file not found!"); } } /** * @param args the command line arguments */ public static void main(String[] args) { JaxbDemoFrame f = new JaxbDemoFrame(); f.setVisible(true); } }