-
Notifications
You must be signed in to change notification settings - Fork 5
/
CarColorApp3.java
146 lines (133 loc) · 7.17 KB
/
CarColorApp3.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
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package org.genericsystem.extendedcarcolor.app;
import org.genericsystem.carcolor.app.CCInheritStyle;
import org.genericsystem.carcolor.app.UserGuide;
import org.genericsystem.common.Generic;
import org.genericsystem.common.Root;
import org.genericsystem.extendedcarcolor.app.CarColorApp3.CarColorScript2;
import org.genericsystem.extendedcarcolor.app.CarColorApp3.GroupDiv;
import org.genericsystem.extendedcarcolor.app.CarColorApp3.GroupDiv2;
import org.genericsystem.extendedcarcolor.app.CarColorApp3.UserGuideButtonDiv;
import org.genericsystem.extendedcarcolor.model.Airbag;
import org.genericsystem.extendedcarcolor.model.Bike;
import org.genericsystem.extendedcarcolor.model.Car;
import org.genericsystem.extendedcarcolor.model.Color;
import org.genericsystem.extendedcarcolor.model.Energy;
import org.genericsystem.extendedcarcolor.model.Mileage;
import org.genericsystem.extendedcarcolor.model.MileageUnit;
import org.genericsystem.extendedcarcolor.model.Power;
import org.genericsystem.extendedcarcolor.model.Price;
import org.genericsystem.extendedcarcolor.model.SideCar;
import org.genericsystem.extendedcarcolor.model.Transmission;
import org.genericsystem.extendedcarcolor.model.UsedCar;
import org.genericsystem.extendedcarcolor.model.Vehicle;
import org.genericsystem.extendedcarcolor.model.VehicleColor;
import org.genericsystem.extendedcarcolor.model.VehicleEnergy;
import org.genericsystem.extendedcarcolor.model.VehicleEngine;
import org.genericsystem.extendedcarcolor.model.VehicleVehicleEngine;
import org.genericsystem.reactor.annotations.Children;
import org.genericsystem.reactor.annotations.CustomAnnotations;
import org.genericsystem.reactor.annotations.DependsOnModel;
import org.genericsystem.reactor.annotations.DirectSelect;
import org.genericsystem.reactor.annotations.RunScript;
import org.genericsystem.reactor.annotations.SetText;
import org.genericsystem.reactor.annotations.Style;
import org.genericsystem.reactor.annotations.Style.FlexDirectionStyle;
import org.genericsystem.reactor.appserver.ApplicationServer;
import org.genericsystem.reactor.appserver.Script;
import org.genericsystem.reactor.gscomponents.AppHeader;
import org.genericsystem.reactor.gscomponents.FlexDirection;
import org.genericsystem.reactor.gscomponents.GSApp;
import org.genericsystem.reactor.gscomponents.GSComposite;
import org.genericsystem.reactor.gscomponents.GSDiv;
import org.genericsystem.reactor.gscomponents.InstancesTable;
import org.genericsystem.reactor.gscomponents.Monitor;
import org.genericsystem.reactor.gscomponents.Responsive;
import org.genericsystem.reactor.gscomponents.AppHeader.Logo;
import org.genericsystem.reactor.gscomponents.AppHeader.TitleDiv;
import org.genericsystem.reactor.gscomponents.DivWithTitle.TitledInstancesTable;
import org.genericsystem.reactor.gscomponents.Modal.ModalEditor;
import org.genericsystem.reactor.htmltag.HtmlButton;
import org.genericsystem.reactor.htmltag.HtmlH1;
@CustomAnnotations(CCInheritStyle.class)
@RunScript(CarColorScript2.class)
@DependsOnModel({ Car.class, Power.class, Color.class, Airbag.class, Bike.class, Energy.class, Mileage.class, MileageUnit.class, Price.class, SideCar.class, Transmission.class, UsedCar.class, VehicleColor.class, Vehicle.class, VehicleEngine.class,
VehicleEnergy.class, VehicleVehicleEngine.class })
@Style(name = "background-color", value = "#00afeb")
@Style(path = { Responsive.class, TitledInstancesTable.class, InstancesTable.class, GSComposite.class }, name = "flex", value = "0 1 auto")
@Children({ ModalEditor.class, AppHeader.class, Responsive.class, Monitor.class })
@Children(path = Responsive.class, value = { TitledInstancesTable.class, GroupDiv.class, GroupDiv2.class, TitledInstancesTable.class })
@Children(path = AppHeader.class, value = { Logo.class, TitleDiv.class, UserGuideButtonDiv.class })
@SetText(path = { AppHeader.class, TitleDiv.class, HtmlH1.class }, value = "Reactor Live Demo")
@DirectSelect(path = { Responsive.class, TitledInstancesTable.class }, value = { Vehicle.class, VehicleEngine.class })
public class CarColorApp3 extends GSApp {
public static void main(String[] mainArgs) {
ApplicationServer.startSimpleGenericApp(mainArgs, CarColorApp3.class, "cars2");
}
public CarColorApp3() {
addPrefixBinding(context -> getAdminModeProperty(context).setValue(true));
}
@Children({ TitledInstancesTable.class, TitledInstancesTable.class })
@DirectSelect(path = TitledInstancesTable.class, value = { Bike.class, Car.class })
@Style(name = "flex", value = "1")
@Style(path = { TitledInstancesTable.class, InstancesTable.class }, name = "flex", value = "0 1 auto")
@Style(path = { TitledInstancesTable.class, InstancesTable.class, GSComposite.class }, name = "flex", value = "0 1 auto")
public static class GroupDiv extends GSDiv {
}
@FlexDirectionStyle(FlexDirection.ROW)
@Children({ TitledInstancesTable.class, TitledInstancesTable.class })
@DirectSelect(path = TitledInstancesTable.class, value = { Color.class, Energy.class })
@Style(name = "flex", value = "1")
@Style(path = { TitledInstancesTable.class, InstancesTable.class }, name = "flex", value = "0 1 auto")
@Style(path = { TitledInstancesTable.class, GSComposite.class }, name = "flex", value = "0 1 auto")
public static class GroupDiv2 extends GSDiv {
}
@Style(name = "justify-content", value = "center")
@Style(name = "align-items", value = "center")
@Style(name = "flex", value = "1")
@Children({ UserGuide.class, GuideButton.class })
public static class UserGuideButtonDiv extends GSDiv {
}
@SetText("User Guide")
@Style(name = "flex", value = "0 1 auto")
@CCInheritStyle("background-color")
public static class GuideButton extends HtmlButton {
@Override
public void init() {
bindAction(model -> getParent().find(UserGuide.class).getDisplayProperty(model).setValue("flex"));
}
}
public static class CarColorScript2 implements Script {
@Override
public void run(Root engine) {
Generic car = engine.find(Car.class);
Generic power = engine.find(Power.class);
Generic vehicleColor = engine.find(VehicleColor.class);
Generic color = engine.find(Color.class);
Generic red = color.setInstance("Red");
Generic black = color.setInstance("Black");
Generic green = color.setInstance("Green");
color.setInstance("Blue");
color.setInstance("Orange");
color.setInstance("White");
color.setInstance("Yellow");
Generic audiS4 = car.setInstance("Audi S4");
audiS4.setHolder(power, 333);
System.out.println(engine.find(Vehicle.class).isAncestorOf(audiS4));
// audiS4.setLink(vehicleColor, "Audi S4 Green", green);
Generic bmwM3 = car.setInstance("BMW M3");
bmwM3.setHolder(power, 450);
// bmwM3.setLink(vehicleColor, "BMW M3 Red", red);
Generic ferrariF40 = car.setInstance("Ferrari F40");
ferrariF40.setHolder(power, 478);
// ferrariF40.setLink(vehicleColor, "Ferrari F40 red", red);
Generic miniCooper = car.setInstance("Mini Cooper");
miniCooper.setHolder(power, 175);
// miniCooper.setLink(vehicleColor, "Mini Cooper", black);
car.setInstance("Audi A4 3.0 TDI").setHolder(power, 233);
car.setInstance("Peugeot 106 GTI").setHolder(power, 120);
car.setInstance("Peugeot 206 S16").setHolder(power, 136);
// power.enableRequiredConstraint(ApiStatics.BASE_POSITION);
engine.getCurrentCache().flush();
}
}
}