1 /*
2 Copyright (C) 2007 Dirk Huenniger
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with this library; if not, write to the Free Software
16 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18
19 package org.indi.objects;
20
21 /**
22 * A single indi number
23 *
24 * @author Dirk Hünniger
25 *
26 */
27 public class Number extends Element {
28
29 /**
30 *
31 */
32 private static final long serialVersionUID = 1L;
33 /**
34 * the format string used by the client to display the number
35 */
36 private String format = "%f";
37 /**
38 * the minimum value of the number
39 */
40 private double min = 0;
41 /**
42 * the maximum value of the number
43 */
44 private double max = 0;
45 /**
46 * the step in with the gui may increase decrease the number
47 */
48 private double step = 0;
49
50 /**
51 * class constructor
52 *
53 * @param name
54 * the name of the Number
55 * @param label
56 * the label of the Number (to be used for display in the
57 * GUI)
58 * @param format
59 * the format string used by the client to display the number
60 * @param min
61 * the minimum value of the number
62 * @param max
63 * the maximum value of the number
64 * @param step
65 * the step in with the gui may increase decrease the number
66 * @param value
67 * the value of the number
68 */
69 public Number(String name, String label, String format, double min,
70 double max, double step, double value) {
71 super(name, label, String.valueOf(value));
72 this.format = format;
73 this.min = min;
74 this.max = max;
75 this.step = step;
76 }
77
78 /**
79 * class constructor
80 *
81 * @param name
82 * the name of the Number
83 * @param value
84 * the value of the number
85 */
86 public Number(String name, String value) {
87 super(name, null, value);
88 }
89
90 /**
91 * return the value of the number as double
92 *
93 * @return
94 */
95 public double getDouble() {
96 return Double.valueOf(this.value);
97 }
98
99 /**
100 * set the value of the number by a double
101 *
102 * @param d
103 * the new value to be set
104 */
105 public void setDouble(double d) {
106 this.value = Double.toString(d);
107 }
108
109 /**
110 * add a double to the current value
111 *
112 * @param d
113 * the value to be added
114 */
115 public void addDouble(double d) {
116 this.value = Double.toString(d + getDouble());
117 }
118
119 /**
120 * subtract a double from the current value
121 *
122 * @param d
123 * the value to be subtracted
124 */
125 public void subtractDouble(double d) {
126 this.value = Double.toString(getDouble() - d);
127 }
128
129 @Override
130 public String getStartTag(TransferType type) {
131 switch (type) {
132 case Def:
133 return "<def" + getType() + " name=\"" + this.name + "\" label=\""
134 + this.label + "\" format=\"" + this.format + "\" min=\""
135 + String.valueOf(this.min) + "\" max=\""
136 + String.valueOf(this.max) + "\" step=\""
137 + String.valueOf(this.step) + "\"> ";
138 default:
139 return super.getStartTag(type);
140 }
141 }
142
143 @Override
144 protected String getType() {
145 return "Number";
146 }
147 }