package uk.co.mmscomputing.device.sane.applet; import java.awt.Button; import java.awt.GridLayout; import java.applet.Applet; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import uk.co.mmscomputing.device.scanner.Scanner; import uk.co.mmscomputing.device.scanner.ScannerDevice; import uk.co.mmscomputing.device.scanner.ScannerListener; import uk.co.mmscomputing.device.scanner.ScannerIOMetadata; import uk.co.mmscomputing.device.scanner.ScannerIOException; import javax.swing.JFrame; public class SaneAppletExample extends Applet implements ActionListener, ScannerListener{ String filename; Scanner scanner; Button acquireButton,selectButton,cancelButton; public SaneAppletExample(){} public SaneAppletExample(String title, String[] argv){ JFrame.setDefaultLookAndFeelDecorated(true); JFrame frame=new JFrame(title); // frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent ev) { stop();System.exit(0); } }); init(); frame.getContentPane().add(this); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); start(); } public void init(){ setLayout(new GridLayout(1,3)); selectButton = new Button("select"); add(selectButton); selectButton.addActionListener(this); acquireButton = new Button("acquire"); add(acquireButton); acquireButton.addActionListener(this); cancelButton = new Button("cancel next scan"); add(cancelButton); cancelButton.addActionListener(this); filename=System.getProperty("user.home")+"/test.jpg"; scanner=Scanner.getDevice(); scanner.addListener(this); } public void actionPerformed(ActionEvent evt){ try{ if(evt.getSource()==acquireButton){ scanner.acquire(); }else if(evt.getSource()==selectButton){ scanner.select(); }else if(evt.getSource()==cancelButton){ scanner.setCancel(true); } }catch(ScannerIOException sioe){ sioe.printStackTrace(); } } public void update(ScannerIOMetadata.Type type, ScannerIOMetadata metadata){ if(type.equals(ScannerIOMetadata.ACQUIRED)){ BufferedImage image=metadata.getImage(); System.out.println("Have an image now!"); try{ File file = new File(filename); System.out.println("Image Path: "+file.getAbsolutePath()); ImageIO.write(image, "jpg", file); }catch(Exception e){ e.printStackTrace(); } }else if(type.equals(ScannerIOMetadata.NEGOTIATE)){ ScannerDevice device=metadata.getDevice(); /* try{ // device.setShowUserInterface(false); device.setShowProgressBar(true); device.setRegionOfInterest(20,40,300,200); device.setResolution(100.0); }catch(Exception e){ e.printStackTrace(); } */ }else if(type.equals(ScannerIOMetadata.STATECHANGE)){ System.err.println(metadata.getStateStr()); }else if(type.equals(ScannerIOMetadata.EXCEPTION)){ metadata.getException().printStackTrace(); } } public static void main(String[] argv){ try{ SaneAppletExample app = new SaneAppletExample("Sane Applet Example [2007-11-19]", argv); }catch(Exception e){ e.printStackTrace(); } } }