package examples; import javafx.application.Application; import javafx.collections.FXCollections; import javafx.geometry.HPos; import javafx.geometry.Insets; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.control.ComboBox; import javafx.scene.control.Label; import javafx.scene.control.Spinner; import javafx.scene.layout.BorderPane; import javafx.scene.layout.FlowPane; import javafx.scene.layout.GridPane; import javafx.scene.layout.Pane; import javafx.stage.Stage; import syntheticafx.base.RootPane; import syntheticafx.base.SearchField; import syntheticafx.base.SearchField.SearchMode; import syntheticafx.base.SyntheticaFX; import syntheticafx.base.TitledBorderPane; public class SearchFieldDemo extends Application { public Parent createContent() { Pane centerPane = new FlowPane(4, 0); centerPane.setStyle("-fx-padding: 10"); SearchField field = new SearchField("JohnDoe"); field.setPromptText("Username"); //field.setOptionButtonPosition(HPos.RIGHT); field.setSearchMode(SearchMode.AUTO); field.setOnAction((evt) -> System.out.println("Action")); field.setPrefWidth(250); centerPane.getChildren().add(field); BorderPane content = new BorderPane(); content.setCenter(centerPane); content.setRight(createOptionPane(field)); return content; } public Pane createOptionPane(SearchField field) { GridPane grid = new GridPane(); grid.setVgap(10); grid.setHgap(10); grid.setPadding(new Insets(5)); int row = 0; grid.add(new Label("SearchButtonPosition"), 0, row); ComboBox combo = new ComboBox<>(); combo.setItems(FXCollections.observableArrayList(HPos.values())); combo.getItems().remove(HPos.CENTER); combo.setValue(field.optionButtonPositionProperty().get()); field.optionButtonPositionProperty().addListener((o, ov, nv) -> combo.setValue(nv)); combo.valueProperty().addListener((o, ov, nv) -> field.setOptionButtonPosition(nv)); grid.add(combo, 1, row); row++; grid.add(new Label("ClearButtonPosition"), 0, row); ComboBox combo2 = new ComboBox<>(); combo2.setItems(FXCollections.observableArrayList(HPos.values())); combo2.getItems().remove(HPos.CENTER); combo2.setValue(field.clearButtonPositionProperty().get()); field.clearButtonPositionProperty().addListener((o, ov, nv) -> combo2.setValue(nv)); combo2.valueProperty().addListener((o, ov, nv) -> field.setClearButtonPosition(nv)); grid.add(combo2, 1, row); row++; grid.add(new Label("SearchMode"), 0, row); ComboBox combo3 = new ComboBox<>(); combo3.setItems(FXCollections.observableArrayList(SearchMode.values())); combo3.setValue(field.searchModeProperty().get()); field.searchModeProperty().addListener((o, ov, nv) -> combo3.setValue(nv)); combo3.valueProperty().addListener((o, ov, nv) -> field.setSearchMode(nv)); grid.add(combo3, 1, row); row++; grid.add(new Label("SearchDelay"), 0, row); Spinner spinner = new Spinner<>(0, Integer.MAX_VALUE, field.getSearchDelay()); spinner.setEditable(true); spinner.valueProperty().addListener((o, ov, nv) -> field.setSearchDelay(nv)); grid.add(spinner, 1, row); return new TitledBorderPane("Options", grid); } @Override public void start(Stage primaryStage) throws Exception { SyntheticaFX.init("syntheticafx.theme.modena.SyntheticaFXModena"); //SyntheticaFX.init("syntheticafx.theme.standard.SyntheticaFXStandard"); primaryStage.setScene(new Scene(new RootPane(primaryStage, createContent()))); primaryStage.setTitle(getClass().getSimpleName()); primaryStage.show(); } public static void main(String[] args) { launch(args); } }