package uk.co.mmscomputing.device.sane.option;

public class StringDesc extends Descriptor{

  protected  String value="";

  public StringDesc(
    int      handle,
    int      no,

    String   name,
    String   title,
    String   desc,
    int      type,
    int      unit,
    int      size,
    int      cap,
    String   value
  ){
    super(handle,no,name,title,desc,type,unit,size,cap);
    this.value=value;
  }

  public String getStringValue(){
    return value;
  }

  public String setStringValue(String val){
    try{
      if(isWritable()){
        value=val;
        int info=setStringControlOption(size,val);
        if((info&SANE_INFO_INEXACT)==SANE_INFO_INEXACT){
          value=getStringControlOption(size);
        }
        if((info&SANE_INFO_RELOAD_OPTIONS)==SANE_INFO_RELOAD_OPTIONS){
          signalReloadOptions();
        }
        if((info&SANE_INFO_RELOAD_PARAMS)==SANE_INFO_RELOAD_PARAMS){
          // read parameters only after scan started
        }
      }
    }catch(Exception e){
      System.err.println(getClass().getName()+".setStringValue: \n    "+e+"\n");
    }
    return value;
  }

  public String toString(){
    String s=super.toString();
    s+="\n    string= "+value;
    return s;
  }

  public DescriptorPanel getGUI(){
    gui=new StringPanel(this);
    return gui;
  }

}

