Merge branch 'develop' into features/mchmmer
[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 public class LogarithmicParameter extends Option implements ParameterI
13 {
14   final double defval;
15
16   final double min;
17
18   final double max;
19
20   @Override
21   public ValueConstrainI getValidValue()
22   {
23     return new ValueConstrainI()
24     {
25
26       @Override
27       public ValueType getType()
28       {
29         return ValueType.Double;
30       }
31
32       @Override
33       public Number getMin()
34       {
35         return min < max ? min : null;
36       }
37
38       @Override
39       public Number getMax()
40       {
41         return min < max ? max : null;
42       }
43     };
44   }
45
46   public LogarithmicParameter(LogarithmicParameter parm)
47   {
48     super(parm);
49     max = parm.max;
50     min = parm.min;
51     defval = 0D;
52   }
53
54   public LogarithmicParameter(String name, String description,
55           boolean required, Double defValue, double min, double max)
56   {
57     super(name, description, required, String.valueOf(defValue), null, null,
58             null);
59     defval = defValue;
60     this.min = min;
61     this.max = max;
62   }
63
64   public LogarithmicParameter(String name, String description,
65           boolean required, Double defValue, double value, double min,
66           double max)
67   {
68     super(name, description, required, String.valueOf(defValue),
69             String.valueOf(value), null, null);
70     defval = defValue;
71     this.min = min;
72     this.max = max;
73   }
74
75   @Override
76   public LogarithmicParameter copy()
77   {
78     return new LogarithmicParameter(this);
79   }
80 }