package uk.co.mmscomputing.device.sane.option; import java.io.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.event.*; import javax.swing.border.*; import uk.co.mmscomputing.device.sane.*; import uk.co.mmscomputing.device.sane.gui.*; public class DescriptorPanel extends JPanel implements SaneConstants, ActionListener, ChangeListener{ static public String descstr = jsane.getResource("option.DescriptorPanel.descstr"); static public String valstr = jsane.getResource("option.DescriptorPanel.valstr"); protected Descriptor od = null; public DescriptorPanel(Descriptor od){ this.od=od; setLayout(new BorderLayout()); add(newDescriptionPanel(od.desc+"\n\n"+od.toString()),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(descstr)); p.add(sp); return p; } protected void addValuePanel(JComponent component){ String valstr=this.valstr; JPanel p=new JPanel(); p.setLayout(new BorderLayout()); p.add(component,BorderLayout.CENTER); if(od.unit!=0){ valstr+=" in ["+SANE_UNIT[od.unit]+"]";} p.setBorder(new TitledBorder(valstr)); add(p,BorderLayout.NORTH); } // call from Descriptor : PreviewPanel value has changed void signalNewValue(){ System.err.println(getClass().getName()+".signalNewValue()\n I shouldn't be here!"); } void reloadOptions(){ Container p=getParent(); while(p!=null){ if(p instanceof SaneAcquirePanel){ ((SaneAcquirePanel)p).buildTab(); break; } p=p.getParent(); } } public void actionPerformed(ActionEvent e){} public void stateChanged(ChangeEvent e){} protected void checkCapabilities(JComponent cmp){ if((od.cap&SANE_CAP_INACTIVE)==SANE_CAP_INACTIVE){ cmp.setEnabled(false); }else{ if((od.cap&SANE_CAP_SOFT_SELECT)==SANE_CAP_SOFT_SELECT){ cmp.setEnabled(true); }else{ cmp.setEnabled(false); } } } }