package uk.co.mmscomputing.device.scanner; import java.io.*; import java.awt.image.*; abstract public class ScannerIOMetadata{ static public class Type{} static public Type INFO=new Type(); static public Type EXCEPTION=new Type(); // static public Type SELECTED=new Type(); static public Type ACQUIRED=new Type(); static public Type FILE=new Type(); static public Type MEMORY=new Type(); static public Type NEGOTIATE=new Type(); static public Type STATECHANGE=new Type(); private int laststate=0,state=0; private boolean cancel=false; // if true application wants scan engine to abort scan as soon as possible private BufferedImage image=null; private File file=null; private String info=""; private Exception exception=null; public void setState(int s){laststate=state;state=s;} public int getLastState(){ return laststate;} public int getState(){ return state;} public String getStateStr(){ return "State "+state;} public boolean isState(int state){ return this.state==state;} public void setImage(BufferedImage image){ this.image=image;this.file=null;} public BufferedImage getImage(){return image;} public void setFile(File file){ this.image=null;this.file=file;} public File getFile(){return file;} public void setInfo(String info){ this.info=info;} public String getInfo(){ return info;} public void setException(Exception ex){ this.exception=ex;} public Exception getException(){ return exception;} public boolean getCancel(){return cancel;} public void setCancel(boolean cancel){this.cancel=cancel;} abstract public boolean isFinished(); // only valid when state changes! abstract public ScannerDevice getDevice(); // use only during negotiation }