forked from bsondermann/BlackboxSticksExporter3D
-
Notifications
You must be signed in to change notification settings - Fork 0
/
IFCheckBox.pde
101 lines (85 loc) · 3.15 KB
/
IFCheckBox.pde
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import processing.event.*;
public class IFCheckBox extends GUIComponent {
private int currentColor;
private boolean selected = false;
public IFCheckBox (String newLabel, int newX, int newY) {
setLabel(newLabel);
setPosition(newX, newY);
setSize(14, 14);
}
public void initWithParent () {
controller.parent.registerMethod("mouseEvent", this);
if (lookAndFeel == null)
return;
controller.userState.saveSettingsForApplet(controller.parent);
lookAndFeel.defaultGraphicsState.restoreSettingsToApplet(controller.parent);
setSize((int) Math.ceil(controller.parent.textWidth(getLabel())) + getHeight() + 5, 14);
controller.userState.restoreSettingsToApplet(controller.parent);
}
public void mouseEvent (MouseEvent e) {
if (e.getAction() == MouseEvent.PRESS) {
if (isMouseOver (e.getX(), e.getY())) {
wasClicked = true;
}
} else if (e.getAction() == MouseEvent.RELEASE) {
if (wasClicked && isMouseOver (e.getX(), e.getY())) {
if (selected) {
selected = false;
fireEventNotification(this, "Unchecked");
} else {
selected = true;
fireEventNotification(this, "Checked");
}
wasClicked = false;
}
}
}
public void keyEvent(KeyEvent e) {
if (e.getAction() == KeyEvent.TYPE && e.getKey() == ' ') {
fireEventNotification(this, "Selected");
if (selected) {
selected = false;
fireEventNotification(this, "Unchecked");
} else {
selected = true;
fireEventNotification(this, "Checked");
}
}
}
public void show () {
if (isMouseOver (controller.parent.mouseX, controller.parent.mouseY)) {
currentColor = lookAndFeel.highlightColor;
} else if (controller.getFocusStatusForComponent(this)) {
currentColor = lookAndFeel.highlightColor;
} else {
currentColor = lookAndFeel.baseColor;
}
int x = getX(), y = getY(), hgt = getHeight(), wid = getWidth();
controller.parent.fill(100);
controller.parent.stroke(0);
controller.parent.rect(x+hgt+3,y-3,-textWidth(getLabel())-13-hgt,hgt+6);
controller.parent.stroke(lookAndFeel.borderColor);
controller.parent.fill(currentColor);
controller.parent.rect(x, y, hgt, hgt);
if (selected == true) {
controller.parent.stroke (lookAndFeel.darkGrayColor);
controller.parent.line (x + 3, y + 2, hgt + x - 3, hgt + y - 4);
controller.parent.line (x + 3, y + 3, hgt + x - 4, hgt + y - 4);
controller.parent.line (x + 4, y + 2, hgt + x - 3, hgt + y - 5);
controller.parent.line (x + 3, hgt + y - 4, hgt + x - 3, y + 2);
controller.parent.line (x + 4, hgt + y - 4, hgt + x - 3, y + 3);
controller.parent.line (x + 3, hgt + y - 5, hgt + x - 4, y + 2);
}
controller.parent.fill (lookAndFeel.textColor);
controller.parent.textAlign(RIGHT);
controller.parent.text (getLabel(), x - 5, (hgt - 2) + y);
if (controller.showBounds) {
controller.parent.noFill();
controller.parent.stroke(255,0,0);
controller.parent.rect(x, y, wid, hgt);
}
}
public boolean isSelected() {
return selected;
}
}