summaryrefslogtreecommitdiff
path: root/src/ext/plantuml/com/ctreber/aclib/gui/MODouble.java
blob: 722a5db950b9aacfb933c718e71e2f27e2fbcc46 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package ext.plantuml.com.ctreber.aclib.gui;

/**
 * <p></p>
 *
 * <p>&copy; 2002 Christian Treber, ct@ctreber.com</p>
 * @author Christian Treber, ct@ctreber.com
 *
 */
public class MODouble extends MonitoredObject
{
  private double fDouble;
  private boolean fCheckRange = false;
  private double fMin;
  private double fMax;

  public MODouble()
  {
  }

  public MODouble(double pDouble)
  {
    fDouble = pDouble;
  }

  public MODouble(double pDouble, double pMin, double pMax)
  {
    fMin = pMin;
    fMax = pMax;
    fCheckRange = true;
    set(pDouble);
  }

  public void set(double pDouble)
  {
    if(!checkRange(pDouble))
    {
      throw new IllegalArgumentException("Argument '" + pDouble +
        "' out of range [" + niceFormat(fMin) + "; " + niceFormat(fMax) + "]");
    }
    fDouble = pDouble;
    fireValueChanged();
  }

  private static String niceFormat(double pDouble)
  {
    if(pDouble == Double.MAX_VALUE)
    {
      return "Infinity";
    }

    if(pDouble == Double.MIN_VALUE)
    {
      return "-Infinity";
    }

    return Double.toString(pDouble);
  }

  public double get()
  {
    return fDouble;
  }

  private boolean checkRange(double pDouble)
  {
    return !fCheckRange || (fMin <= pDouble) && (pDouble <= fMax);
  }

  public boolean checkRange()
  {
    return checkRange(fDouble);
  }
}