26
27 import java.util.Arrays;
28 import java.util.Comparator;
29 import java.util.Iterator;
30 import java.util.Random;
31 import javafx.beans.property.DoubleProperty;
32 import javafx.beans.property.SimpleDoubleProperty;
33 import javafx.beans.value.ChangeListener;
34 import javafx.beans.value.ObservableValue;
35 import javafx.collections.FXCollections;
36 import javafx.collections.ObservableList;
37 import javafx.event.ActionEvent;
38 import javafx.event.Event;
39 import javafx.event.EventHandler;
40 import javafx.scene.Scene;
41 import javafx.scene.chart.AreaChart;
42 import javafx.scene.chart.NumberAxis;
43 import javafx.scene.chart.XYChart;
44 import javafx.scene.chart.XYChart.Series;
45 import javafx.scene.control.*;
46 import static javafx.scene.control.test.chart.apps.CommonFunctions.*;
47 import javafx.scene.control.test.utils.CommonPropertiesScene;
48 import javafx.scene.control.test.utils.ptables.PropertiesTable;
49 import javafx.scene.control.test.utils.ptables.TabPaneWithControl;
50 import javafx.scene.layout.HBox;
51 import javafx.scene.layout.VBox;
52 import test.javaclient.shared.InteroperabilityApp;
53 import test.javaclient.shared.Utils;
54
55 /**
56 * @author Alexander Kirov
57 */
58 public class NewAreaChartApp extends InteroperabilityApp implements ChartIDsInterface {
59
60 public final static String REMOVE_ITEM_POS_TEXT_FIELD_ID = "REMOVE_ITEM_POS_TEXT_FIELD_ID";
61 public final static String REMOVE_BUTTON_ID = "REMOVE_BUTTON_ID";
62 public final static String ADD_ITEM_TEXT_FIELD_ID = "ADD_ITEM_TEXT_FIELD_ID";
63 public final static String ADD_ITEM_POSITION_TEXT_FIELD_ID = "ADD_ITEM_POSITION_TEXT_FIELD_ID";
64 public final static String ADD_ITEM_BUTTON_ID = "ADD_ITEM_BUTTON_ID";
65 public final static String REMOVE_AREA_POS_TEXT_FIELD_ID = "REMOVE_AREA_POS_TEXT_FIELD_ID";
82
83 //AreaChart to be tested.
84 AreaChart testedAreaChart;
85 NumberAxis axis1;
86 NumberAxis axis2;
87 TabPaneWithControl pane;
88
89 public AreaChartScene() {
90 super("AreaChart", 1300, 800);
91 }
92
93 @Override
94 final protected void prepareScene() {
95 Utils.addBrowser(this);
96
97 axis1 = new NumberAxis(0, 100, 10);
98 axis2 = new NumberAxis(0, 100, 10);
99 testedAreaChart = getNewChart();
100 testedAreaChart.setId(TESTED_CHART_ID);
101
102 Button hardResetButton = ButtonBuilder.create().id(HARD_RESET_BUTTON_ID).text("Hard reset").build();
103 hardResetButton.setOnAction(new EventHandler<ActionEvent>() {
104 public void handle(ActionEvent t) {
105 HBox hb = (HBox) getRoot();
106 hb.getChildren().clear();
107 prepareMainSceneStructure();
108 prepareScene();
109 }
110 });
111
112 Button softResetButton = ButtonBuilder.create().id(SOFT_RESET_BUTTON_ID).text("Soft reset").build();
113 softResetButton.setOnAction(new EventHandler<ActionEvent>() {
114 public void handle(ActionEvent t) {
115 //throw new UnsupportedOperationException("Not supported yet.");
116 }
117 });
118
119 HBox resetButtonsHBox = new HBox();
120 resetButtonsHBox.getChildren().addAll(hardResetButton, softResetButton);
121
122 VBox vb = new VBox(5);
123 vb.getChildren().addAll(resetButtonsHBox, getAddAreaHBox(), getAddPointToDataDialog(), getRemovePointFromDataDialog(), getRemoveDataDialog());
124
125 pane = getPaneFor(testedAreaChart, CHART_TAB_NAME, axis1, AXIS_1_TAB_NAME, axis2, AXIS_2_TAB_NAME);
126
127 setTestedControlContainerSize(500, 500);
128 setTestedControl(testedAreaChart);
129 setPropertiesContent(pane);
130 setControllersContent(vb);
131 }
132
133 public HBox getAddPointToDataDialog() {
134 HBox hb = new HBox();
135
136 Label lb1 = new Label("To area");
137 final TextField tf1 = TextFieldBuilder.create().text("0").prefWidth(50).id(ADD_AREA_POS_TEXT_FIELD_ID).build();
138
139 Label lb2 = new Label("to index");
140 final TextField tf2 = TextFieldBuilder.create().text("0").prefWidth(50).id(ADD_INDEX_TEXT_FIELD_ID).build();
141
142 Label lb3 = new Label("value");
143 final TextField tf3 = TextFieldBuilder.create().text("0").prefWidth(50).id(ADD_VALUE_TEXT_FIELD_ID).build();
144
145 Button bt = ButtonBuilder.create().text("add point!").id(REMOVE_BUTTON_ID).build();
146 bt.setOnAction(new EventHandler() {
147 public void handle(Event t) {
148 int area = Integer.parseInt(tf1.getText());
149 int point = Integer.parseInt(tf2.getText());
150 double value = Double.parseDouble(tf3.getText());
151
152 XYChart.Data newData = new XYChart.Data();
153 newData.setXValue((((Double) ((XYChart.Data) (((Series) testedAreaChart.getData().get(area)).getData().get(point))).getXValue()) + ((Double) ((XYChart.Data) (((Series) testedAreaChart.getData().get(area)).getData().get(point - 1))).getXValue())) / 2);
154 newData.setYValue(value);
155
156 ((Series) testedAreaChart.getData().get(area)).getData().add(point, newData);
157 }
158 });
159 hb.getChildren().addAll(lb1, tf1, lb2, tf2, lb3, tf3, bt);
160 return hb;
161 }
162
163 public HBox getRemovePointFromDataDialog() {
164 HBox hb = new HBox();
165
166 Label lb1 = new Label("From area");
167 final TextField tf1 = TextFieldBuilder.create().text("0").prefWidth(50).id(REMOVE_AREA_POS_TEXT_FIELD_ID).build();
168
169 Label lb2 = new Label("From index");
170 final TextField tf2 = TextFieldBuilder.create().text("0").prefWidth(50).id(REMOVE_INDEX_TEXT_FIELD_ID).build();
171
172 Button bt = ButtonBuilder.create().text("remove point!").id(REMOVE_BUTTON_ID).build();
173 bt.setOnAction(new EventHandler() {
174 public void handle(Event t) {
175 int area = Integer.parseInt(tf1.getText());
176 int point = Integer.parseInt(tf2.getText());
177 ((Series) testedAreaChart.getData().get(area)).getData().remove(point);
178 }
179 });
180 hb.getChildren().addAll(lb1, tf1, lb2, tf2, bt);
181 return hb;
182 }
183
184 public HBox getRemoveDataDialog() {
185 HBox hb = new HBox();
186 Label lb = new Label("From index");
187 final TextField tf = TextFieldBuilder.create().text("0").prefWidth(50).id(REMOVE_AREA_INDEX_TEXTFIELD_ID).build();
188 Button bt = ButtonBuilder.create().text("remove area!").id(REMOVE_AREA_BUTTON_ID).build();
189 bt.setOnAction(new EventHandler() {
190 public void handle(Event t) {
191 int index = Integer.parseInt(tf.getText());
192 testedAreaChart.getData().remove(index);
193 }
194 });
195 hb.getChildren().addAll(lb, tf, bt);
196 return hb;
197 }
198
199 public HBox getAddAreaHBox() {
200 HBox hb = new HBox();
201 Label lb = new Label("Add series named ");
202 final TextField tf = TextFieldBuilder.create().prefWidth(50).id(ADDED_SERIES_NAME_TEXTFIELD_ID).build();
203
204 Label minLabel = new Label(" minX ");
205 final TextField minText = TextFieldBuilder.create().prefWidth(50).id(ADDED_SERIES_MIN_VALUE_TEXTFIELD_ID).build();
206
207 Label maxLabel = new Label(" maxX ");
208 final TextField maxText = TextFieldBuilder.create().prefWidth(50).id(ADDED_SERIES_MAX_VALUE_TEXTFIELD_ID).build();
209
210 Label amountLabel = new Label(" with ");
211 final TextField amountText = TextFieldBuilder.create().prefWidth(50).id(ADDED_SERIES_DOTS_COUNT_TEXTFIELD_ID).build();
212
213 Button bt = ButtonBuilder.create().text("add area!").id(ADD_SERIES_COMMAND_BUTTON_ID).build();
214 bt.setOnAction(new EventHandler() {
215 public void handle(Event t) {
216 String serieName = tf.getText();
217 double min = Double.parseDouble(minText.getText());
218 double max = Double.parseDouble(maxText.getText());
219 int amount = Integer.parseInt(amountText.getText());
220
221 ObservableList list = FXCollections.observableArrayList();
222
223 for (int i = 0; i < amount; i++) {
224 XYChart.Data newData = new XYChart.Data();
225 newData.setXValue(new Random().nextDouble() * (max - min) + min);
226 newData.setYValue(new Random().nextDouble() * (max - min) + min);
227 list.add(newData);
228 }
229 Object[] array = list.toArray();
230 Arrays.sort(array, new Comparator() {
231 public int compare(Object t, Object t1) {
232 return (int) Math.round(((Double) ((XYChart.Data) t).getXValue()) - ((Double) ((XYChart.Data) t1).getXValue()));
233 }
|
26
27 import java.util.Arrays;
28 import java.util.Comparator;
29 import java.util.Iterator;
30 import java.util.Random;
31 import javafx.beans.property.DoubleProperty;
32 import javafx.beans.property.SimpleDoubleProperty;
33 import javafx.beans.value.ChangeListener;
34 import javafx.beans.value.ObservableValue;
35 import javafx.collections.FXCollections;
36 import javafx.collections.ObservableList;
37 import javafx.event.ActionEvent;
38 import javafx.event.Event;
39 import javafx.event.EventHandler;
40 import javafx.scene.Scene;
41 import javafx.scene.chart.AreaChart;
42 import javafx.scene.chart.NumberAxis;
43 import javafx.scene.chart.XYChart;
44 import javafx.scene.chart.XYChart.Series;
45 import javafx.scene.control.*;
46 import static javafx.scene.control.test.chart.apps.ChartIDsInterface.HARD_RESET_BUTTON_ID;
47 import static javafx.scene.control.test.chart.apps.CommonFunctions.*;
48 import javafx.scene.control.test.utils.CommonPropertiesScene;
49 import javafx.scene.control.test.utils.ptables.PropertiesTable;
50 import javafx.scene.control.test.utils.ptables.TabPaneWithControl;
51 import javafx.scene.layout.HBox;
52 import javafx.scene.layout.VBox;
53 import test.javaclient.shared.InteroperabilityApp;
54 import test.javaclient.shared.Utils;
55
56 /**
57 * @author Alexander Kirov
58 */
59 public class NewAreaChartApp extends InteroperabilityApp implements ChartIDsInterface {
60
61 public final static String REMOVE_ITEM_POS_TEXT_FIELD_ID = "REMOVE_ITEM_POS_TEXT_FIELD_ID";
62 public final static String REMOVE_BUTTON_ID = "REMOVE_BUTTON_ID";
63 public final static String ADD_ITEM_TEXT_FIELD_ID = "ADD_ITEM_TEXT_FIELD_ID";
64 public final static String ADD_ITEM_POSITION_TEXT_FIELD_ID = "ADD_ITEM_POSITION_TEXT_FIELD_ID";
65 public final static String ADD_ITEM_BUTTON_ID = "ADD_ITEM_BUTTON_ID";
66 public final static String REMOVE_AREA_POS_TEXT_FIELD_ID = "REMOVE_AREA_POS_TEXT_FIELD_ID";
83
84 //AreaChart to be tested.
85 AreaChart testedAreaChart;
86 NumberAxis axis1;
87 NumberAxis axis2;
88 TabPaneWithControl pane;
89
90 public AreaChartScene() {
91 super("AreaChart", 1300, 800);
92 }
93
94 @Override
95 final protected void prepareScene() {
96 Utils.addBrowser(this);
97
98 axis1 = new NumberAxis(0, 100, 10);
99 axis2 = new NumberAxis(0, 100, 10);
100 testedAreaChart = getNewChart();
101 testedAreaChart.setId(TESTED_CHART_ID);
102
103 Button hardResetButton = new Button("Hard reset");
104 hardResetButton.setId(HARD_RESET_BUTTON_ID);
105 hardResetButton.setOnAction(new EventHandler<ActionEvent>() {
106 public void handle(ActionEvent t) {
107 HBox hb = (HBox) getRoot();
108 hb.getChildren().clear();
109 prepareMainSceneStructure();
110 prepareScene();
111 }
112 });
113
114 Button softResetButton = new Button("Soft reset");
115 softResetButton.setId(SOFT_RESET_BUTTON_ID);
116 softResetButton.setOnAction(new EventHandler<ActionEvent>() {
117 public void handle(ActionEvent t) {
118 //throw new UnsupportedOperationException("Not supported yet.");
119 }
120 });
121
122 HBox resetButtonsHBox = new HBox();
123 resetButtonsHBox.getChildren().addAll(hardResetButton, softResetButton);
124
125 VBox vb = new VBox(5);
126 vb.getChildren().addAll(resetButtonsHBox, getAddAreaHBox(), getAddPointToDataDialog(), getRemovePointFromDataDialog(), getRemoveDataDialog());
127
128 pane = getPaneFor(testedAreaChart, CHART_TAB_NAME, axis1, AXIS_1_TAB_NAME, axis2, AXIS_2_TAB_NAME);
129
130 setTestedControlContainerSize(500, 500);
131 setTestedControl(testedAreaChart);
132 setPropertiesContent(pane);
133 setControllersContent(vb);
134 }
135
136 public HBox getAddPointToDataDialog() {
137 HBox hb = new HBox();
138
139 Label lb1 = new Label("To area");
140 final TextField tf1 = new TextField("0");
141 tf1.setPrefWidth(50);
142 tf1.setId(ADD_AREA_POS_TEXT_FIELD_ID);
143
144 Label lb2 = new Label("to index");
145 final TextField tf2 = new TextField("0");
146 tf2.setPrefWidth(50);
147 tf2.setId(ADD_INDEX_TEXT_FIELD_ID);
148
149 Label lb3 = new Label("value");
150 final TextField tf3 = new TextField("0");
151 tf3.setPrefWidth(50);
152 tf3.setId(ADD_VALUE_TEXT_FIELD_ID);
153
154 Button bt = new Button("add point!");
155 bt.setId(REMOVE_BUTTON_ID);
156 bt.setOnAction(new EventHandler() {
157 public void handle(Event t) {
158 int area = Integer.parseInt(tf1.getText());
159 int point = Integer.parseInt(tf2.getText());
160 double value = Double.parseDouble(tf3.getText());
161
162 XYChart.Data newData = new XYChart.Data();
163 newData.setXValue((((Double) ((XYChart.Data) (((Series) testedAreaChart.getData().get(area)).getData().get(point))).getXValue()) + ((Double) ((XYChart.Data) (((Series) testedAreaChart.getData().get(area)).getData().get(point - 1))).getXValue())) / 2);
164 newData.setYValue(value);
165
166 ((Series) testedAreaChart.getData().get(area)).getData().add(point, newData);
167 }
168 });
169 hb.getChildren().addAll(lb1, tf1, lb2, tf2, lb3, tf3, bt);
170 return hb;
171 }
172
173 public HBox getRemovePointFromDataDialog() {
174 HBox hb = new HBox();
175
176 Label lb1 = new Label("From area");
177 final TextField tf1 = new TextField("0");
178 tf1.setPrefWidth(50);
179 tf1.setId(REMOVE_AREA_POS_TEXT_FIELD_ID);
180
181 Label lb2 = new Label("From index");
182 final TextField tf2 = new TextField("0");
183 tf2.setPrefWidth(50);
184 tf2.setId(REMOVE_INDEX_TEXT_FIELD_ID);
185
186 Button bt = new Button("remove point!");
187 bt.setId(REMOVE_BUTTON_ID);
188 bt.setOnAction(new EventHandler() {
189 public void handle(Event t) {
190 int area = Integer.parseInt(tf1.getText());
191 int point = Integer.parseInt(tf2.getText());
192 ((Series) testedAreaChart.getData().get(area)).getData().remove(point);
193 }
194 });
195 hb.getChildren().addAll(lb1, tf1, lb2, tf2, bt);
196 return hb;
197 }
198
199 public HBox getRemoveDataDialog() {
200 HBox hb = new HBox();
201 Label lb = new Label("From index");
202 final TextField tf = new TextField("0");
203 tf.setPrefWidth(50);
204 tf.setId(REMOVE_AREA_INDEX_TEXTFIELD_ID);
205 Button bt = new Button("remove area!");
206 bt.setId(REMOVE_AREA_BUTTON_ID);
207 bt.setOnAction(new EventHandler() {
208 public void handle(Event t) {
209 int index = Integer.parseInt(tf.getText());
210 testedAreaChart.getData().remove(index);
211 }
212 });
213 hb.getChildren().addAll(lb, tf, bt);
214 return hb;
215 }
216
217 public HBox getAddAreaHBox() {
218 HBox hb = new HBox();
219 Label lb = new Label("Add series named ");
220 final TextField tf = new TextField();
221 tf.setPrefWidth(50);
222 tf.setId(ADDED_SERIES_NAME_TEXTFIELD_ID);
223
224 Label minLabel = new Label(" minX ");
225 final TextField minText = new TextField();
226 minText.setPrefWidth(50);
227 minText.setId(ADDED_SERIES_MIN_VALUE_TEXTFIELD_ID);
228
229 Label maxLabel = new Label(" maxX ");
230 final TextField maxText = new TextField();
231 maxText.setPrefWidth(50);
232 maxText.setId(ADDED_SERIES_MAX_VALUE_TEXTFIELD_ID);
233
234 Label amountLabel = new Label(" with ");
235 final TextField amountText = new TextField();
236 amountText.setPrefWidth(50);
237 amountText.setId(ADDED_SERIES_DOTS_COUNT_TEXTFIELD_ID);
238
239 Button bt = new Button("add area!");
240 bt.setId(ADD_SERIES_COMMAND_BUTTON_ID);
241 bt.setOnAction(new EventHandler() {
242 public void handle(Event t) {
243 String serieName = tf.getText();
244 double min = Double.parseDouble(minText.getText());
245 double max = Double.parseDouble(maxText.getText());
246 int amount = Integer.parseInt(amountText.getText());
247
248 ObservableList list = FXCollections.observableArrayList();
249
250 for (int i = 0; i < amount; i++) {
251 XYChart.Data newData = new XYChart.Data();
252 newData.setXValue(new Random().nextDouble() * (max - min) + min);
253 newData.setYValue(new Random().nextDouble() * (max - min) + min);
254 list.add(newData);
255 }
256 Object[] array = list.toArray();
257 Arrays.sort(array, new Comparator() {
258 public int compare(Object t, Object t1) {
259 return (int) Math.round(((Double) ((XYChart.Data) t).getXValue()) - ((Double) ((XYChart.Data) t1).getXValue()));
260 }
|