-
Notifications
You must be signed in to change notification settings - Fork 5
/
StepperDefaults.java
70 lines (60 loc) · 2.7 KB
/
StepperDefaults.java
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
package org.genericsystem.reactor.modelproperties;
import org.genericsystem.reactor.Context;
import org.genericsystem.reactor.Tag;
import javafx.beans.property.Property;
import javafx.collections.ObservableList;
public interface StepperDefaults extends ContextProperty {
public static final String INDEX = "index";
public static final String INSTANCE_NAME_TAG = "instanceNameTag";
public static final String STEPPER_TAG = "steppedTag";
default Tag getInstanceNameTag(Context context) {
return this.<Tag> getProperty(INSTANCE_NAME_TAG, context).getValue();
}
default Tag getStepperTag(Context context) {
return this.<Tag> getProperty(STEPPER_TAG, context).getValue();
}
default Property<Integer> getIteratorIndexProperty(Context context) {
return getProperty(INDEX, context);
}
default void stepper(Tag switchedTag, Tag instanceNameTag) {
addPrefixBinding(context -> {
createNewInitializedProperty(INDEX, context, m -> -1);
createNewInitializedProperty(INSTANCE_NAME_TAG, context, c -> instanceNameTag);
createNewInitializedProperty(STEPPER_TAG, context, c -> switchedTag);
});
instanceNameTag.addStyle("display", "flex");
switchedTag.addPrefixBinding(context -> switchedTag.getDomNodeStyles(context).put("display", "none"));
}
default void next(Context context) {
Property<Integer> index = getIteratorIndexProperty(context);
Tag stepperTag = getStepperTag(context);
ObservableList<Context> contexts = context.getSubContexts(stepperTag);
if (contexts == null)
contexts = context.getParent().getSubContexts(stepperTag);
if (index.getValue() == -1) {
index.setValue(0);
getInstanceNameTag(context).addStyle(context, "display", "none");
stepperTag.addStyle(contexts.get(0), "display", "flex");
} else if (index.getValue() + 1 < contexts.size()) {
stepperTag.addStyle(contexts.get(index.getValue()), "display", "none");
stepperTag.addStyle(contexts.get(index.getValue() + 1), "display", "flex");
index.setValue(index.getValue() + 1);
}
}
default void prev(Context context) {
Property<Integer> index = getIteratorIndexProperty(context);
Tag stepperTag = getStepperTag(context);
ObservableList<Context> contexts = context.getSubContexts(stepperTag);
if (contexts == null)
contexts = context.getParent().getSubContexts(getStepperTag(context));
if (index.getValue() > 0) {
stepperTag.addStyle(contexts.get(index.getValue()), "display", "none");
stepperTag.addStyle(contexts.get(index.getValue() - 1), "display", "flex");
index.setValue(index.getValue() - 1);
} else if (index.getValue() == 0) {
index.setValue(-1);
getInstanceNameTag(context).addStyle(context.getParent(), "display", "flex");
stepperTag.addStyle(contexts.get(0), "display", "none");
}
}
}