JAL-2629 choice of hmm profile now a parameter not a selection, apis simplified
[jalview.git] / src / jalview / ws / params / simple / LogarithmicParameter.java
1 package jalview.ws.params.simple;
2
3 import jalview.ws.params.ParameterI;
4 import jalview.ws.params.ValueConstrainI;
5
6 /**
7  * A model for a numeric-valued parameter which should be displayed using a
8  * logarithmic scale
9  * 
10  * @author TZVanaalten
11  *
12  */
13 public class LogarithmicParameter extends Option implements ParameterI
14 {
15   public static final double LOGSLIDERSCALE = 1000000D;
16
17   final double defval;
18
19   final double min;
20
21   final double max;
22
23   final double base;
24
25   @Override
26   public ValueConstrainI getValidValue()
27   {
28     return new ValueConstrainI()
29     {
30
31       @Override
32       public ValueType getType()
33       {
34         return ValueType.Double;
35       }
36
37       @Override
38       public Number getMin()
39       {
40         return min < max ? min : null;
41       }
42
43       @Override
44       public Number getMax()
45       {
46         return min < max ? max : null;
47       }
48     };
49   }
50
51   public LogarithmicParameter(LogarithmicParameter parm)
52   {
53     super(parm);
54     max = parm.max;
55     min = parm.min;
56     defval = 0D;
57     base = parm.base;
58   }
59
60   public LogarithmicParameter(String name, String description,
61           boolean required, double defValue, double min, double max,
62           double base)
63   {
64     super(name, description, required, String.valueOf(defValue), null, null,
65             null);
66     defval = defValue;
67     this.min = min;// * LOGSLIDERSCALE;
68     this.max = max;// * LOGSLIDERSCALE;
69     this.base = base;
70   }
71
72   public LogarithmicParameter(String name, String description,
73           boolean required, double defValue, double value, double min,
74           double max, double base)
75   {
76     super(name, description, required, String.valueOf(defValue),
77             String.valueOf(value), null, null);
78     defval = defValue;
79     this.min = min;// * LOGSLIDERSCALE;
80     this.max = max;// * LOGSLIDERSCALE;
81     this.base = base;
82   }
83
84   @Override
85   public LogarithmicParameter copy()
86   {
87     return new LogarithmicParameter(this);
88   }
89
90   public double getBase()
91   {
92     return base;
93   }
94 }