package uk.co.mmscomputing.device.sane.gui;
import java.beans.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import uk.co.mmscomputing.util.*;
import uk.co.mmscomputing.device.scanner.*;
import uk.co.mmscomputing.device.sane.*;
public class SanePanel extends JComponent implements ScannerListener {
Scanner scanner =null;
JButton acqbutton=null;
JButton selbutton=null;
JCheckBox guicheckbox=null;
public SanePanel(Scanner scanner,int mode){
this.scanner=scanner;
String selectstr = jsane.getResource("gui.SanePanel.selectstr");
String acquirestr = jsane.getResource("gui.SanePanel.acquirestr");
String guienablestr = jsane.getResource("gui.SanePanel.guienablestr");
switch(mode){
case 0:
acqbutton=new JButton(acquirestr);
selbutton=new JButton(selectstr);
setLayout(new GridLayout(0,1));
break;
case 1:
acqbutton=new JButton(acquirestr);
selbutton=new JButton(selectstr);
setLayout(new GridLayout(1,0));
break;
case 2:
acqbutton=new JButton(acquirestr,new JarImageIcon(getClass(),"16x16/scanner.png"));
selbutton=new JButton(selectstr,new JarImageIcon(getClass(),"16x16/list.png"));
setLayout(new GridLayout(0,1));
break;
case 3:
acqbutton=new JButton(acquirestr,new JarImageIcon(getClass(),"16x16/scanner.png"));
selbutton=new JButton(selectstr,new JarImageIcon(getClass(),"16x16/list.png"));
setLayout(new GridLayout(1,0));
break;
case 4:
acqbutton=new JButton(acquirestr,new JarImageIcon(getClass(),"32x32/scanner.png"));
selbutton=new JButton(selectstr,new JarImageIcon(getClass(),"32x32/list.png"));
setLayout(new GridLayout(0,1));
break;
case 5:
acqbutton=new JButton(acquirestr,new JarImageIcon(getClass(),"32x32/scanner.png"));
selbutton=new JButton(selectstr,new JarImageIcon(getClass(),"32x32/list.png"));
setLayout(new GridLayout(1,0));
break;
}
acqbutton.addActionListener((ActionListener)EventHandler.create(ActionListener.class, this, "acquire"));
add(acqbutton);
/*
guicheckbox = new JCheckBox("Enable GUI");
guicheckbox.setSelected(true);
JPanel p=new JPanel();
p.setBorder(BorderFactory.createEtchedBorder());
p.add(guicheckbox);
add(p);
*/
guicheckbox = new JCheckBox(guienablestr);
guicheckbox.setSelected(true);
add(guicheckbox);
selbutton.addActionListener((ActionListener)EventHandler.create(ActionListener.class, this, "select"));
add(selbutton);
scanner.addListener(this);
}
public void acquire(){ // acquire BufferedImage from selected/default sane device
try{
scanner.acquire();
}catch(ScannerIOException e){
scanner.fireExceptionUpdate(e);
}
}
public void select(){ // select sane device
try{
scanner.select();
}catch(ScannerIOException e){
scanner.fireExceptionUpdate(e);
}
}
public void update(ScannerIOMetadata.Type type, final ScannerIOMetadata md){
if(type.equals(ScannerIOMetadata.NEGOTIATE)){
try{
ScannerDevice source=md.getDevice();
source.setShowUserInterface(guicheckbox.isSelected()); // then use checkbox value
}catch(Exception e){}
}else if(type.equals(ScannerIOMetadata.STATECHANGE)){
if(md.isFinished()){
acqbutton.setEnabled(true);
selbutton.setEnabled(true);
guicheckbox.setEnabled(true);
}else{
acqbutton.setEnabled(false);
selbutton.setEnabled(false);
guicheckbox.setEnabled(false);
}
}
}
}