package uk.co.mmscomputing.device.sane.gui;
import java.io.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.text.*;
import javax.swing.event.*;
import javax.swing.border.*;
import uk.co.mmscomputing.device.sane.*;
import uk.co.mmscomputing.device.sane.gui.*;
import uk.co.mmscomputing.device.sane.option.DescriptorPanel;
public class SaneMaxDocsPanel extends JPanel implements SaneConstants, DocumentListener{
static private String adfcountdescstr = jsane.getResource("gui.SaneMaxDocsPanel.adfcountdescstr");
protected SaneDevice scanner;
protected JTextField tf;
public SaneMaxDocsPanel(SaneDevice scanner){
this.scanner=scanner;
setLayout(new BorderLayout());
tf=new JTextField(10);
tf.setHorizontalAlignment(SwingConstants.RIGHT);
tf.setText(""+scanner.getADFCount());
Document td=tf.getDocument();
td.addDocumentListener(this);
JPanel p=new JPanel();
p.setLayout(new BorderLayout());
p.add(tf,BorderLayout.CENTER);
p.setBorder(new TitledBorder(DescriptorPanel.valstr));
add(p,BorderLayout.NORTH);
add(newDescriptionPanel(adfcountdescstr),BorderLayout.CENTER);
}
private JComponent newDescriptionPanel(String desc){
JTextArea ta=new JTextArea(desc);
ta.setLineWrap(true);
ta.setWrapStyleWord(true);
JScrollPane sp=new JScrollPane(ta);
JPanel p=new JPanel();
p.setLayout(new BorderLayout());
p.setBorder(new TitledBorder(DescriptorPanel.descstr));
p.add(sp);
return p;
}
public void changedUpdate(DocumentEvent e){ commit(e);}
public void insertUpdate(DocumentEvent e){ commit(e);}
public void removeUpdate(DocumentEvent e){ commit(e);}
protected void commit(DocumentEvent de){
int count=-1;
Document d=de.getDocument();
try{
String value=d.getText(d.getStartPosition().getOffset(),d.getEndPosition().getOffset()).trim();
count=Integer.parseInt(value);
if(count<1){ throw new IllegalArgumentException();}
}catch(Exception ex){
count=-1;
try{
d.remove(0,d.getLength());
}catch(Exception ble){}
}
if(count>1){scanner.setADFMode(true);}
scanner.setADFCount(count);
}
}