96 } catch (NumberFormatException ex) { 97 } 98 99 Utils.launch(NewScrollPaneApp.class, args); 100 } 101 102 @Override 103 protected Scene getScene() { 104 Utils.setTitleToStage(stage, "ScrollPaneTestApp"); 105 return new ScrollPaneScene(); 106 } 107 108 class ScrollPaneScene extends CommonPropertiesScene { 109 110 private PropertiesTable tb; 111 //ScrollPane to be tested. 112 private ScrollPane testedScrollPane; 113 114 public ScrollPaneScene() { 115 super("ScrollPane", 800, 600); 116 117 prepareScene(); 118 } 119 120 @Override 121 protected final void prepareScene() { 122 Utils.addBrowser(this); 123 testedScrollPane = ScrollPaneBuilder.create().id(TESTED_SCROLLPANE_ID).build(); 124 final Node content = setCustomContent(customContentHeight, customContentWidth); 125 126 final ContentMotion cm = new ContentMotion(); 127 testedScrollPane.setContent(content); 128 cm.applyTransition(content); 129 130 tb = new PropertiesTable(testedScrollPane); 131 PropertyTablesFactory.explorePropertiesList(testedScrollPane, tb); 132 SpecialTablePropertiesProvider.provideForControl(testedScrollPane, tb); 133 134 if ((scrollPaneWidth > 0) && (scrollPaneHeight > 0)) { 135 testedScrollPane.setPrefViewportWidth(scrollPaneWidth); 136 testedScrollPane.setPrefViewportHeight(scrollPaneHeight); 137 } 138 139 Button changeContentButton = ButtonBuilder.create().id(CHANGE_CONTENT_BUTTON_ID).text("ChangeContent").build(); 140 changeContentButton.setOnAction(new EventHandler<ActionEvent>() { 141 public void handle(ActionEvent t) { 142 changeContent(); 143 cm.applyTransition(content); 144 } 145 }); 146 147 Button addPrefWidthAndHeightButton = ButtonBuilder.create().id(ADD_SIZE_BUTTON_ID).text("Add pref sizes").build(); 148 addPrefWidthAndHeightButton.setOnAction(new EventHandler<ActionEvent>() { 149 public void handle(ActionEvent t) { 150 tb.addDoublePropertyLine(testedScrollPane.prefWidthProperty(), -100, 200, 100); 151 tb.addDoublePropertyLine(testedScrollPane.prefHeightProperty(), -100, 200, 100); 152 } 153 }); 154 155 Button setTextAreaAsContentButton = ButtonBuilder.create().id(CHANGE_CONTENT_TO_RESIZABLE_BUTTON_ID).text("Set blue pane as content").build(); 156 setTextAreaAsContentButton.setOnAction(new EventHandler<ActionEvent>() { 157 public void handle(ActionEvent t) { 158 setResizableContent(); 159 Pane pane = (Pane) testedScrollPane.getContent(); 160 tb.addDoublePropertyLine(pane.prefWidthProperty(), 0, 300, 100); 161 tb.addDoublePropertyLine(pane.prefHeightProperty(), 0, 300, 100); 162 } 163 }); 164 165 Button setCustomContentButton = ButtonBuilder.create().id(CHANGE_CONTENT_TO_CUSTOM_BUTTON_ID).text("Set custom content").build(); 166 setCustomContentButton.setOnAction(new EventHandler<ActionEvent>() { 167 public void handle(ActionEvent t) { 168 setCustomContent(); 169 } 170 }); 171 172 Button buttonStart = ButtonBuilder.create().id(START_MOTION_BUTTON_ID).text("Start motion").build(); 173 buttonStart.setOnAction(new EventHandler<ActionEvent>() { 174 public void handle(ActionEvent t) { 175 cm.getTimeline().play(); 176 } 177 }); 178 179 Button rotateButton = ButtonBuilder.create().id(ROTATE_BUTTON_ID).text("Rotate on 30deg").build(); 180 rotateButton.setOnAction(new EventHandler<ActionEvent>() { 181 public void handle(ActionEvent t) { 182 content.setRotate(content.getRotate() + 30); 183 } 184 }); 185 186 Button rotateScrollPaneButton = ButtonBuilder.create().id(ROTATE_SCROLLPANE_BUTTON_ID).text("Rotate scrollpane on 30deg").build(); 187 rotateScrollPaneButton.setOnAction(new EventHandler<ActionEvent>() { 188 public void handle(ActionEvent t) { 189 testedScrollPane.setRotate(testedScrollPane.getRotate() + 30); 190 } 191 }); 192 193 Button increaseScaleButton = ButtonBuilder.create().id(INCREASE_SCALE_BUTTON_ID).text("Increase scale").build(); 194 increaseScaleButton.setOnAction(new EventHandler<ActionEvent>() { 195 public void handle(ActionEvent t) { 196 content.setScaleX(content.getScaleX() + 0.15); 197 content.setScaleY(content.getScaleY() + 0.15); 198 } 199 }); 200 201 Button decreaseScaleButton = ButtonBuilder.create().id(DECREASE_SCALE_BUTTON_ID).text("Decrease scale").build(); 202 decreaseScaleButton.setOnAction(new EventHandler<ActionEvent>() { 203 public void handle(ActionEvent t) { 204 content.setScaleX(content.getScaleX() - 0.15); 205 content.setScaleY(content.getScaleY() - 0.15); 206 } 207 }); 208 209 Button increaseScrollPaneScaleButton = ButtonBuilder.create().id(INCREASE_SCROLLPANE_SCALE_BUTTON_ID).text("Increase ScrollPane scale").build(); 210 increaseScrollPaneScaleButton.setOnAction(new EventHandler<ActionEvent>() { 211 public void handle(ActionEvent t) { 212 testedScrollPane.setScaleX(testedScrollPane.getScaleX() + 0.15); 213 testedScrollPane.setScaleY(testedScrollPane.getScaleY() + 0.15); 214 } 215 }); 216 217 Button decreaseScrollPaneScaleButton = ButtonBuilder.create().id(DECREASE_SCROLLPANE_SCALE_BUTTON_ID).text("Decrease ScrollPane scale").build(); 218 decreaseScrollPaneScaleButton.setOnAction(new EventHandler<ActionEvent>() { 219 public void handle(ActionEvent t) { 220 testedScrollPane.setScaleX(testedScrollPane.getScaleX() - 0.15); 221 testedScrollPane.setScaleY(testedScrollPane.getScaleY() - 0.15); 222 } 223 }); 224 225 Button resetButton = ButtonBuilder.create().id(RESET_BUTTON_ID).text("Reset").build(); 226 resetButton.setOnAction(new EventHandler<ActionEvent>() { 227 public void handle(ActionEvent t) { 228 HBox hb = (HBox) getRoot(); 229 hb.getChildren().clear(); 230 prepareMainSceneStructure(); 231 prepareScene(); 232 } 233 }); 234 235 setTestedControl(testedScrollPane); 236 237 VBox vb = new VBox(); 238 vb.setSpacing(5); 239 vb.getChildren().addAll(changeContentButton, setCustomContentButton, setTextAreaAsContentButton, 240 buttonStart, rotateButton, rotateScrollPaneButton, 241 increaseScrollPaneScaleButton, decreaseScrollPaneScaleButton, getAddGridPaneForm(), 242 increaseScaleButton, decreaseScaleButton, resetButton, addPrefWidthAndHeightButton); 243 setControllersContent(vb); 244 245 setPropertiesContent(tb); 246 } 247 248 private Node getAddGridPaneForm() { 249 final TextField dimension = TextFieldBuilder.create().id(GRID_DIMENSION_TEXTFIELD_ID).promptText("int-dimension").maxWidth(50).build(); 250 Button addButton = ButtonBuilder.create().id(ADD_GRID_BUTTON_ID).text("Add grid").build(); 251 addButton.setOnAction(new EventHandler<ActionEvent>() { 252 public void handle(ActionEvent t) { 253 int c = Integer.parseInt(dimension.getText()); 254 255 GridPane gridPane = new GridPane(); 256 for (int i = 0; i < c; i++) { 257 for (int j = 0; j < c; j++) { 258 final String name = "B-" + String.valueOf(i) + "-" + String.valueOf(j); 259 gridPane.add(ButtonBuilder.create().text(name).id(name).minHeight(10 * i).minWidth(10 * j).build(), i, j); 260 } 261 } 262 testedScrollPane.setContent(gridPane); 263 } 264 }); 265 266 HBox hb = new HBox(5); 267 hb.getChildren().addAll(dimension, addButton); 268 return hb; 269 } 270 271 private void setResizableContent() { 272 Pane canvas = new Pane(); 273 canvas.setStyle("-fx-background-color: blue;"); 274 testedScrollPane.setContent(canvas); 275 276 277 canvas.setPrefHeight(100); 278 canvas.setPrefWidth(100); 279 } 280 281 private Group setCustomContent(int height, int width) { 282 Group g = ComponentsFactory.createCustomContent(height, width); 283 g.setId(CUSTOM_CONTENT_ID); 284 testedScrollPane.setContent(g); 285 return g; 286 } 287 288 private Group setCustomContent() { 289 return setCustomContent(200, 200); 290 } 291 292 private void changeContent() { 293 VBox vb = new VBox(); 294 Button button = ButtonBuilder.create().id(CONTENT_BUTTON).text("Press me").build(); 295 final TextField tf1 = TextFieldBuilder.create().id(CONTENT_TEXT_FIELD_ID).text("0").build(); 296 button.setOnAction(new EventHandler<ActionEvent>() { 297 public void handle(ActionEvent t) { 298 tf1.setText(String.valueOf(Integer.parseInt(tf1.getText()) + 1)); 299 } 300 }); 301 TextArea tf2 = TextAreaBuilder.create().prefHeight(100).id(CONTENT_TEXT_AREA_ID).build(); 302 for (int i = 0; i < 15; i++) { 303 tf2.appendText("text" + i + "\n"); 304 } 305 Button empty = ButtonBuilder.create().text("This is empty-action button").id(WITHOUT_ACTION_BUTTON).build(); 306 307 vb.getChildren().addAll(button, tf1, tf2, empty); 308 vb.setStyle("-fx-border-color: blue;"); 309 310 testedScrollPane.setContent(vb); 311 } 312 } 313 } | 96 } catch (NumberFormatException ex) { 97 } 98 99 Utils.launch(NewScrollPaneApp.class, args); 100 } 101 102 @Override 103 protected Scene getScene() { 104 Utils.setTitleToStage(stage, "ScrollPaneTestApp"); 105 return new ScrollPaneScene(); 106 } 107 108 class ScrollPaneScene extends CommonPropertiesScene { 109 110 private PropertiesTable tb; 111 //ScrollPane to be tested. 112 private ScrollPane testedScrollPane; 113 114 public ScrollPaneScene() { 115 super("ScrollPane", 800, 600); 116 } 117 118 @Override 119 protected final void prepareScene() { 120 Utils.addBrowser(this); 121 testedScrollPane = new ScrollPane(); 122 testedScrollPane.setId(TESTED_SCROLLPANE_ID); 123 final Node content = setCustomContent(customContentHeight, customContentWidth); 124 125 final ContentMotion cm = new ContentMotion(); 126 testedScrollPane.setContent(content); 127 cm.applyTransition(content); 128 129 tb = new PropertiesTable(testedScrollPane); 130 PropertyTablesFactory.explorePropertiesList(testedScrollPane, tb); 131 SpecialTablePropertiesProvider.provideForControl(testedScrollPane, tb); 132 133 if ((scrollPaneWidth > 0) && (scrollPaneHeight > 0)) { 134 testedScrollPane.setPrefViewportWidth(scrollPaneWidth); 135 testedScrollPane.setPrefViewportHeight(scrollPaneHeight); 136 } 137 138 Button changeContentButton = new Button("ChangeContent"); 139 changeContentButton.setId(CHANGE_CONTENT_BUTTON_ID); 140 changeContentButton.setOnAction(new EventHandler<ActionEvent>() { 141 public void handle(ActionEvent t) { 142 changeContent(); 143 cm.applyTransition(content); 144 } 145 }); 146 147 Button addPrefWidthAndHeightButton = new Button("Add pref sizes"); 148 addPrefWidthAndHeightButton.setId(ADD_SIZE_BUTTON_ID); 149 addPrefWidthAndHeightButton.setOnAction(new EventHandler<ActionEvent>() { 150 public void handle(ActionEvent t) { 151 tb.addDoublePropertyLine(testedScrollPane.prefWidthProperty(), -100, 200, 100); 152 tb.addDoublePropertyLine(testedScrollPane.prefHeightProperty(), -100, 200, 100); 153 } 154 }); 155 156 Button setTextAreaAsContentButton = new Button("Set blue pane as content"); 157 setTextAreaAsContentButton.setId(CHANGE_CONTENT_TO_RESIZABLE_BUTTON_ID); 158 setTextAreaAsContentButton.setOnAction(new EventHandler<ActionEvent>() { 159 public void handle(ActionEvent t) { 160 setResizableContent(); 161 Pane pane = (Pane) testedScrollPane.getContent(); 162 tb.addDoublePropertyLine(pane.prefWidthProperty(), 0, 300, 100); 163 tb.addDoublePropertyLine(pane.prefHeightProperty(), 0, 300, 100); 164 } 165 }); 166 167 Button setCustomContentButton = new Button("Set custom content"); 168 setCustomContentButton.setId(CHANGE_CONTENT_TO_CUSTOM_BUTTON_ID); 169 setCustomContentButton.setOnAction(new EventHandler<ActionEvent>() { 170 public void handle(ActionEvent t) { 171 setCustomContent(); 172 } 173 }); 174 175 Button buttonStart = new Button("Start motion"); 176 buttonStart.setId(START_MOTION_BUTTON_ID); 177 buttonStart.setOnAction(new EventHandler<ActionEvent>() { 178 public void handle(ActionEvent t) { 179 cm.getTimeline().play(); 180 } 181 }); 182 183 Button rotateButton = new Button("Rotate on 30deg"); 184 rotateButton.setId(ROTATE_BUTTON_ID); 185 rotateButton.setOnAction(new EventHandler<ActionEvent>() { 186 public void handle(ActionEvent t) { 187 content.setRotate(content.getRotate() + 30); 188 } 189 }); 190 191 Button rotateScrollPaneButton = new Button("Rotate scrollpane on 30deg"); 192 rotateScrollPaneButton.setId(ROTATE_SCROLLPANE_BUTTON_ID); 193 rotateScrollPaneButton.setOnAction(new EventHandler<ActionEvent>() { 194 public void handle(ActionEvent t) { 195 testedScrollPane.setRotate(testedScrollPane.getRotate() + 30); 196 } 197 }); 198 199 Button increaseScaleButton = new Button("Increase scale"); 200 increaseScaleButton.setId(INCREASE_SCALE_BUTTON_ID); 201 increaseScaleButton.setOnAction(new EventHandler<ActionEvent>() { 202 public void handle(ActionEvent t) { 203 content.setScaleX(content.getScaleX() + 0.15); 204 content.setScaleY(content.getScaleY() + 0.15); 205 } 206 }); 207 208 Button decreaseScaleButton = new Button("Decrease scale"); 209 decreaseScaleButton.setId(DECREASE_SCALE_BUTTON_ID); 210 decreaseScaleButton.setOnAction(new EventHandler<ActionEvent>() { 211 public void handle(ActionEvent t) { 212 content.setScaleX(content.getScaleX() - 0.15); 213 content.setScaleY(content.getScaleY() - 0.15); 214 } 215 }); 216 217 Button increaseScrollPaneScaleButton = new Button("Increase ScrollPane scale"); 218 increaseScrollPaneScaleButton.setId(INCREASE_SCROLLPANE_SCALE_BUTTON_ID); 219 increaseScrollPaneScaleButton.setOnAction(new EventHandler<ActionEvent>() { 220 public void handle(ActionEvent t) { 221 testedScrollPane.setScaleX(testedScrollPane.getScaleX() + 0.15); 222 testedScrollPane.setScaleY(testedScrollPane.getScaleY() + 0.15); 223 } 224 }); 225 226 Button decreaseScrollPaneScaleButton = new Button("Decrease ScrollPane scale"); 227 decreaseScrollPaneScaleButton.setId(DECREASE_SCROLLPANE_SCALE_BUTTON_ID); 228 decreaseScrollPaneScaleButton.setOnAction(new EventHandler<ActionEvent>() { 229 public void handle(ActionEvent t) { 230 testedScrollPane.setScaleX(testedScrollPane.getScaleX() - 0.15); 231 testedScrollPane.setScaleY(testedScrollPane.getScaleY() - 0.15); 232 } 233 }); 234 235 Button resetButton = new Button("Reset"); 236 resetButton.setId(RESET_BUTTON_ID); 237 resetButton.setOnAction(new EventHandler<ActionEvent>() { 238 public void handle(ActionEvent t) { 239 HBox hb = (HBox) getRoot(); 240 hb.getChildren().clear(); 241 prepareMainSceneStructure(); 242 prepareScene(); 243 } 244 }); 245 246 setTestedControl(testedScrollPane); 247 248 VBox vb = new VBox(); 249 vb.setSpacing(5); 250 vb.getChildren().addAll(changeContentButton, setCustomContentButton, setTextAreaAsContentButton, 251 buttonStart, rotateButton, rotateScrollPaneButton, 252 increaseScrollPaneScaleButton, decreaseScrollPaneScaleButton, getAddGridPaneForm(), 253 increaseScaleButton, decreaseScaleButton, resetButton, addPrefWidthAndHeightButton); 254 setControllersContent(vb); 255 256 setPropertiesContent(tb); 257 } 258 259 private Node getAddGridPaneForm() { 260 final TextField dimension = new TextField(); 261 dimension.setId(GRID_DIMENSION_TEXTFIELD_ID); 262 dimension.setPromptText("int-dimension"); 263 dimension.setMaxWidth(50); 264 Button addButton = new Button("Add grid"); 265 addButton.setId(ADD_GRID_BUTTON_ID); 266 addButton.setOnAction(new EventHandler<ActionEvent>() { 267 public void handle(ActionEvent t) { 268 int c = Integer.parseInt(dimension.getText()); 269 270 GridPane gridPane = new GridPane(); 271 for (int i = 0; i < c; i++) { 272 for (int j = 0; j < c; j++) { 273 final String name = "B-" + String.valueOf(i) + "-" + String.valueOf(j); 274 Button temp = new Button(name); 275 temp.setId(name); 276 temp.setMinHeight(10 * i); 277 temp.setMinWidth(10 * j); 278 gridPane.add(temp, i, j); 279 } 280 } 281 testedScrollPane.setContent(gridPane); 282 } 283 }); 284 285 HBox hb = new HBox(5); 286 hb.getChildren().addAll(dimension, addButton); 287 return hb; 288 } 289 290 private void setResizableContent() { 291 Pane canvas = new Pane(); 292 canvas.setStyle("-fx-background-color: blue;"); 293 testedScrollPane.setContent(canvas); 294 295 296 canvas.setPrefHeight(100); 297 canvas.setPrefWidth(100); 298 } 299 300 private Group setCustomContent(int height, int width) { 301 Group g = ComponentsFactory.createCustomContent(height, width); 302 g.setId(CUSTOM_CONTENT_ID); 303 testedScrollPane.setContent(g); 304 return g; 305 } 306 307 private Group setCustomContent() { 308 return setCustomContent(200, 200); 309 } 310 311 private void changeContent() { 312 VBox vb = new VBox(); 313 Button button = new Button("Press me"); 314 button.setId(CONTENT_BUTTON); 315 final TextField tf1 = new TextField("0"); 316 tf1.setId(CONTENT_TEXT_FIELD_ID); 317 button.setOnAction(new EventHandler<ActionEvent>() { 318 public void handle(ActionEvent t) { 319 tf1.setText(String.valueOf(Integer.parseInt(tf1.getText()) + 1)); 320 } 321 }); 322 TextArea tf2 = new TextArea(); 323 tf2.setPrefHeight(100); 324 tf2.setId(CONTENT_TEXT_AREA_ID); 325 for (int i = 0; i < 15; i++) { 326 tf2.appendText("text" + i + "\n"); 327 } 328 Button empty = new Button("This is empty-action button"); 329 empty.setId(WITHOUT_ACTION_BUTTON); 330 331 vb.getChildren().addAll(button, tf1, tf2, empty); 332 vb.setStyle("-fx-border-color: blue;"); 333 334 testedScrollPane.setContent(vb); 335 } 336 } 337 } |