abstracted GUI to use jalview.ws.params objects (JAL-591, JAL-633)
[jalview.git] / src / jalview / ws / jws2 / dm / JabaOption.java
diff --git a/src/jalview/ws/jws2/dm/JabaOption.java b/src/jalview/ws/jws2/dm/JabaOption.java
new file mode 100644 (file)
index 0000000..27ecf85
--- /dev/null
@@ -0,0 +1,84 @@
+package jalview.ws.jws2.dm;
+
+import jalview.ws.jws2.ParameterUtils;
+import jalview.ws.params.OptionI;
+
+import java.net.URL;
+import java.util.List;
+
+import compbio.metadata.Option;
+
+public class JabaOption implements jalview.ws.params.OptionI
+{
+  public JabaOption(Option rg)
+  {
+    opt = rg;
+  }
+
+  Option opt;
+
+  @Override
+  public String getDefaultValue()
+  {
+    return opt.getDefaultValue();
+  }
+
+  @Override
+  public String getName()
+  {
+    return opt.getName();
+  }
+
+  @Override
+  public URL getFurtherDetails()
+  {
+    return opt.getFurtherDetails();
+  }
+
+  @Override
+  public boolean isRequired()
+  {
+    return opt.isRequired();
+  }
+
+  @Override
+  public String getDescription()
+  {
+    return opt.getDescription();
+  }
+
+  @Override
+  public List<String> getPossibleValues()
+  {
+    // TODO: assert typesafety
+    return opt.getPossibleValues();
+  }
+
+  @Override
+  public void setDefaultValue(String selectedItem)
+  {
+    try {
+      opt.setDefaultValue(selectedItem);
+    } catch (Exception e)
+    {
+      e.printStackTrace();
+      throw new Error("Implementation error: cannot set Jaba Option to a value outside its allowed value range!");
+    }
+  }
+
+  @Override
+  public OptionI copy()
+  {
+    return new JabaOption(ParameterUtils.copyOption(opt));
+  }
+
+  /**
+   * get the underlying Jaba option or parameter object. Note - use copy first if you want to modify the value of the option.
+   * @return
+   */
+  public Option getOption()
+  {
+    return opt;
+  }
+  
+}