-
Notifications
You must be signed in to change notification settings - Fork 89
Expand file tree
/
Copy pathIntControl.java
More file actions
75 lines (64 loc) · 2.44 KB
/
IntControl.java
File metadata and controls
75 lines (64 loc) · 2.44 KB
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
75
package nodebox.client.parameter;
import nodebox.client.DraggableNumber;
import nodebox.node.Parameter;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.NumberFormat;
public class IntControl extends AbstractParameterControl implements ChangeListener, ActionListener {
private DraggableNumber draggable;
public IntControl(Parameter parameter) {
super(parameter);
setLayout(new FlowLayout(FlowLayout.LEADING, 0, 0));
draggable = new DraggableNumber();
draggable.addChangeListener(this);
NumberFormat intFormat = NumberFormat.getNumberInstance();
intFormat.setMinimumFractionDigits(0);
intFormat.setMaximumFractionDigits(0);
draggable.setNumberFormat(intFormat);
// Set bounding
if (parameter.getBoundingMethod() == Parameter.BoundingMethod.HARD) {
Float minimumValue = parameter.getMinimumValue();
if (minimumValue != null)
draggable.setMinimumValue(minimumValue);
Float maximumValue = parameter.getMaximumValue();
if (maximumValue != null)
draggable.setMaximumValue(maximumValue);
}
add(draggable);
setPreferredSize(draggable.getPreferredSize());
setValueForControl(parameter.getValue());
}
@Override
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
draggable.setEnabled(enabled);
}
public void setValueForControl(Object v) {
int value = (Integer) v;
draggable.setValue(value);
}
public void stateChanged(ChangeEvent e) {
setValueFromControl();
}
public void actionPerformed(ActionEvent e) {
setValueFromControl();
}
private void setValueFromControl() {
double doubleValue = draggable.getValue();
if (parameter.getBoundingMethod() == Parameter.BoundingMethod.HARD) {
if (parameter.getMinimumValue() != null) {
doubleValue = Math.max(parameter.getMinimumValue(), doubleValue);
}
if (parameter.getMaximumValue() != null) {
doubleValue = Math.min(parameter.getMaximumValue(), doubleValue);
}
}
int intValue = (int) doubleValue;
if (intValue != parameter.asInt()) {
setParameterValue(intValue);
}
}
}