functional/FXCssTests/src/test/css/controls/ControlPage.java

Print this page




   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 package test.css.controls;
  26 
  27 import com.sun.javafx.collections.ObservableListWrapper;
  28 import javafx.css.CssMetaData;
  29 import com.sun.javafx.scene.control.skin.CellSkinBase;
  30 import com.sun.javafx.scene.control.skin.ColorPickerSkin;
  31 import com.sun.javafx.scene.control.skin.PaginationSkin;
  32 import com.sun.javafx.scene.control.skin.ProgressIndicatorSkin;
  33 import com.sun.javafx.scene.control.skin.TableColumnHeader;
  34 import com.sun.javafx.scene.control.skin.TextInputControlSkin;
  35 import com.sun.javafx.scene.control.skin.TreeCellSkin;
  36 import java.lang.reflect.Constructor;
  37 import java.lang.reflect.Method;
  38 import java.time.LocalDate;
  39 import java.time.Month;


  40 import java.util.*;
  41 import javafx.application.ConditionalFeature;
  42 import javafx.application.Platform;
  43 import javafx.beans.property.SimpleObjectProperty;
  44 import javafx.beans.value.ObservableValue;
  45 import javafx.collections.FXCollections;
  46 import javafx.collections.ObservableList;

  47 import javafx.css.Styleable;
  48 import javafx.geometry.HPos;
  49 import javafx.geometry.Pos;
  50 import javafx.scene.Node;
  51 import javafx.scene.chart.BarChart;
  52 import javafx.scene.chart.CategoryAxis;
  53 import javafx.scene.chart.LineChart;
  54 import javafx.scene.chart.NumberAxis;
  55 import javafx.scene.chart.PieChart;
  56 import javafx.scene.chart.XYChart;
  57 import javafx.scene.control.Accordion;
  58 import javafx.scene.control.Button;
  59 import javafx.scene.control.ButtonBuilder;
  60 import javafx.scene.control.CheckBox;
  61 import javafx.scene.control.CheckBoxBuilder;
  62 import javafx.scene.control.ChoiceBox;
  63 import javafx.scene.control.ColorPicker;
  64 import javafx.scene.control.ComboBox;
  65 import javafx.scene.control.Control;
  66 import javafx.scene.control.DatePicker;
  67 import javafx.scene.control.Hyperlink;
  68 import javafx.scene.control.HyperlinkBuilder;
  69 import javafx.scene.control.Label;
  70 import javafx.scene.control.LabelBuilder;
  71 import javafx.scene.control.ListView;
  72 import javafx.scene.control.Menu;
  73 import javafx.scene.control.MenuBar;
  74 import javafx.scene.control.MenuItem;
  75 import javafx.scene.control.Pagination;
  76 import javafx.scene.control.PasswordField;
  77 import javafx.scene.control.PasswordFieldBuilder;
  78 import javafx.scene.control.ProgressBar;
  79 import javafx.scene.control.ProgressBarBuilder;
  80 import javafx.scene.control.ProgressIndicator;
  81 import javafx.scene.control.ProgressIndicatorBuilder;
  82 import javafx.scene.control.RadioButton;
  83 import javafx.scene.control.RadioButtonBuilder;
  84 import javafx.scene.control.ScrollBar;
  85 import javafx.scene.control.ScrollBarBuilder;
  86 import javafx.scene.control.ScrollPane;
  87 import javafx.scene.control.Separator;
  88 import javafx.scene.control.SeparatorBuilder;
  89 import javafx.scene.control.Slider;
  90 import javafx.scene.control.SliderBuilder;
  91 import javafx.scene.control.SplitMenuButton;
  92 import javafx.scene.control.SplitMenuButtonBuilder;
  93 import javafx.scene.control.SplitPane;
  94 import javafx.scene.control.SplitPaneBuilder;
  95 import javafx.scene.control.Tab;
  96 import javafx.scene.control.TabPane;
  97 import javafx.scene.control.TableColumn;
  98 import javafx.scene.control.TableColumn.CellDataFeatures;
  99 import javafx.scene.control.TableView;
 100 import javafx.scene.control.TextField;
 101 import javafx.scene.control.TextFieldBuilder;
 102 import javafx.scene.control.TitledPane;
 103 import javafx.scene.control.ToggleButton;
 104 import javafx.scene.control.ToggleButtonBuilder;
 105 import javafx.scene.control.ToolBar;
 106 import javafx.scene.control.TreeItem;
 107 import javafx.scene.control.TreeView;
 108 import javafx.scene.image.Image;
 109 import javafx.scene.image.ImageView;
 110 import javafx.scene.layout.FlowPane;
 111 import javafx.scene.layout.HBox;
 112 import javafx.scene.layout.StackPaneBuilder;
 113 import javafx.scene.layout.TilePane;
 114 import javafx.scene.layout.VBox;
 115 import javafx.scene.paint.Color;
 116 import javafx.scene.shape.Circle;
 117 import javafx.scene.shape.Rectangle;
 118 import javafx.scene.text.Text;
 119 import javafx.util.Callback;
 120 import javafx.util.StringConverter;
 121 import java.time.format.DateTimeFormatter;
 122 import java.time.format.DateTimeFormatterBuilder;
 123 
 124 /**
 125  *
 126  * @author sergey.lugovoy@oracle.com
 127  */
 128 public enum ControlPage {
 129     Accordions(Accordion.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 130         public Node createControl() {
 131             TitledPane pane1 = new TitledPane();
 132             pane1.setText("title 1\nLong text long text");
 133             pane1.setContent(new Rectangle(100, 40, Color.SKYBLUE));
 134             pane1.setFocusTraversable(false);
 135             TitledPane pane2 = new TitledPane();
 136             pane2.setText("title 2\nLong text long text");
 137             pane2.setContent(new Rectangle(100, 40, Color.BLUEVIOLET));
 138             Accordion acc = new Accordion();
 139             acc.getPanes().addAll(pane1, pane2);
 140             acc.setExpandedPane(pane2);
 141             pane2.setAnimated(false);
 142             pane2.setFocusTraversable(false);
 143             acc.setFocusTraversable(false);
 144             return acc;
 145         }
 146     }, 200), Buttons(Button.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 147         public Control createControl() {
 148             return ButtonBuilder.create().text("Button the first line" + "\nthe sec long line" + "\nthe third line").focusTraversable(false).graphic(new Rectangle(10, 10, Color.RED)).build();



 149         }
 150     }, 200, 100), ChoiceBoxes(ChoiceBox.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 151         public Control createControl() {
 152             return new ChoiceBox() {
 153                 {
 154                     getItems().addAll(Arrays.asList("one", "two", "three"));
 155                     this.getSelectionModel().select(0);
 156                     setFocusTraversable(false);
 157                 }
 158             };
 159         }
 160     }), CheckBoxes(CheckBox.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 161         public Control createControl() {
 162             return CheckBoxBuilder.create().text("Check box the first line" + "\nthe sec long line" + "\nthe third line").graphic(new Rectangle(20, 20, Color.web("lightblue"))).focusTraversable(false).build();



 163         }
 164     }, 200, 100), ComboBoxes(ComboBox.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 165         @Override
 166         public Control createControl() {
 167             return new ComboBox() {
 168                 {
 169                     getItems().addAll(Arrays.asList("one", "two", "three"));
 170                     getSelectionModel().select(0);
 171                     setFocusTraversable(false);
 172                 }
 173             };
 174         }
 175     }), Hyperlinks(Hyperlink.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 176         public Control createControl() {
 177             return HyperlinkBuilder.create().text("Hyperlink the first line" + "\nthe sec long line" + "\nthe third line").focusTraversable(false).graphic(new Circle(10, Color.BLUE)).build();



 178         }
 179     }, 200, 100), Labels(new ArrayList<CssMetaData<? extends Styleable, ?>>(Label.getClassCssMetaData()) {
 180         {
 181             addAll(Text.getClassCssMetaData());
 182         }
 183     }, new ControlsCSSApp.ControlFactory() {
 184         public Control createControl() {
 185             return LabelBuilder.create().text("Label the first line" + "\nthe sec longlong line" + "\nthe third line").focusTraversable(false).graphic(new Rectangle(20, 20, Color.web("lightblue"))).build();



 186         }
 187     }, 200), ListViews(ListView.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 188         public Node createControl() {
 189             ListView list = new ListView();
 190             ObservableListWrapper<String> items = new ObservableListWrapper<String>(Arrays.asList("One", "Two", "Three", "Four", "Five", "Six", "long line long line long line long line"));
 191             list.setItems(items);
 192             list.setPrefWidth(100);
 193             list.setPrefHeight(100);
 194             list.setFocusTraversable(false);
 195             return list;
 196         }
 197     }, 150), PasswordFields(PasswordField.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 198         public Control createControl() {
 199             return PasswordFieldBuilder.create().promptText("Password box the first line" + "\nthe sec long line" + "\nthe third line").focusTraversable(false).build();



 200         }
 201     }), PressedToggleButtons(ToggleButton.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 202         public Control createControl() {
 203             return ToggleButtonBuilder.create().selected(true).text("Button the first line" + "\nthe sec long line" + "\nthe third line").focusTraversable(false).graphic(new Rectangle(10, 10, Color.RED)).build();




 204         }
 205     }, 200, 120), ProgressIndicators(new ArrayList<CssMetaData<? extends Styleable, ?>>(ProgressIndicator.getClassCssMetaData()) {
 206         {
 207             addAll(ProgressIndicatorSkin.getClassCssMetaData());
 208         }
 209     }, new ControlsCSSApp.ControlFactory() {
 210         public Node createControl() {
 211             return ProgressIndicatorBuilder.create().progress(0.85).prefHeight(100).prefWidth(100).focusTraversable(false).build();



 212         }
 213     }), ProgressBars(ProgressBar.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 214         public Node createControl() {
 215             return ProgressBarBuilder.create().progress(0.25).focusTraversable(false).build();


 216         }
 217     }, 200, 100), RadioButtons(RadioButton.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 218         public Control createControl() {
 219             return RadioButtonBuilder.create().text("Radio the first line" + "\nthe sec long line" + "\nthe third line").graphic(new Rectangle(20, 20, Color.web("lightblue"))).focusTraversable(false).build();



 220         }
 221     }, 200, 100), TextFields(new ArrayList<CssMetaData<? extends Styleable, ?>>(TextField.getClassCssMetaData()) {
 222         {
 223             addAll(TextInputControlSkin.getClassCssMetaData());
 224         }
 225     }, new ControlsCSSApp.ControlFactory() {
 226         public Control createControl() {
 227             return TextFieldBuilder.create().text("Text box the first line" + "\nthe sec long line" + "\nthe third line").focusTraversable(false).build();


 228         }
 229     }), Sliders(Slider.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 230         public Control createControl() {
 231             return SliderBuilder.create().min(0).max(100).value(20).focusTraversable(false).build();





 232         }
 233     }, 200), Separators(Separator.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 234         public Control createControl() {
 235             Separator sep = SeparatorBuilder.create().halignment(HPos.CENTER).build();

 236             sep.setPrefWidth(80);
 237             return sep;
 238         }
 239     }, 150), ScrollBars(ScrollBar.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 240         public Control createControl() {
 241             return ScrollBarBuilder.create().value(45).min(0).max(100).focusTraversable(false).build();





 242         }
 243     }, 150), ScrollPanes(ScrollPane.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 244         public Node createControl() {
 245             ScrollPane pane = new ScrollPane();
 246             HBox hbox = new HBox(30);
 247             VBox vbox1 = new VBox(10);
 248             vbox1.getChildren().addAll(new Label("one"), new Button("two"), new CheckBox("three"), new RadioButton("four"), new Label("five"));
 249             VBox vbox2 = new VBox(10);
 250             vbox2.getChildren().addAll(new Label("one"), new Button("two"), new CheckBox("three"), new RadioButton("four"), new Label("five"));
 251             hbox.getChildren().addAll(vbox1, vbox2);
 252             pane.setContent(hbox);
 253             pane.setFocusTraversable(false);
 254             return pane;
 255         }
 256     }, 150), UnPressedToggleButtons(ToggleButton.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 257         public Control createControl() {
 258             return ToggleButtonBuilder.create().selected(false).text("Button the first line" + "\nthe sec long line" + "\nthe third line").focusTraversable(false).graphic(new Rectangle(10, 10, Color.RED)).build();




 259         }
 260     }, 200, 120), Toolbars(ToolBar.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 261         public Node createControl() {
 262             ToolBar toolbar = new ToolBar();
 263             toolbar.getItems().addAll(new Button("One"), new Button("Two"), new Separator(), SplitMenuButtonBuilder.create().text("three").build());


 264             toolbar.setFocusTraversable(false);
 265             return toolbar;
 266         }
 267     }, 250, 150), Menubars(MenuBar.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 268         public Node createControl() {
 269             MenuBar menubar = new MenuBar();
 270             Menu firstMenu = new Menu("File");
 271             MenuItem firstMenuFirstItem = new MenuItem("Save");
 272             MenuItem firstMenuSecondItem = new MenuItem("Open");
 273             MenuItem firstMenuThirdItem = new MenuItem("Exit");
 274             firstMenu.getItems().addAll(firstMenuFirstItem, firstMenuSecondItem, firstMenuThirdItem);
 275             Menu secondMenu = new Menu("Edit");
 276             MenuItem secondMenuFirstItem = new MenuItem("Undo");
 277             MenuItem secondMenuSecondItem = new MenuItem("Cut");
 278             MenuItem secondMenuThirdItem = new MenuItem("Copy");
 279             secondMenu.getItems().addAll(secondMenuFirstItem, secondMenuSecondItem, secondMenuThirdItem);
 280             Menu thirdMenu = new Menu("Help");
 281             MenuItem thirdMenuFirstItem = new MenuItem("Help Contents");
 282             MenuItem thirdMenuSecondItem = new MenuItem("About");
 283             thirdMenu.getItems().addAll(thirdMenuFirstItem, thirdMenuSecondItem);
 284             menubar.getMenus().addAll(firstMenu, secondMenu, thirdMenu);
 285             menubar.setFocusTraversable(false);
 286             return menubar;
 287         }
 288     }, 250, 150), SplitMenuButtons(SplitMenuButton.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 289         public Node createControl() {
 290             SplitMenuButton smb = SplitMenuButtonBuilder.create().text("Split box the first line" + "\nthe sec long line" + "\nthe third line").items(new MenuItem("Split box the first line" + "\nthe sec long line" + "\nthe third line", new Rectangle(10, 10, Color.BLUE))).graphic(new Rectangle(10, 10, Color.RED)).build();


 291             smb.setFocusTraversable(false);
 292             return smb;
 293         }
 294     }, 200, 120), TabPanes(TabPane.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 295         public Node createControl() {
 296             TabPane pane = new TabPane();
 297             Tab tab = new Tab();
 298             tab.setText("tab 1");
 299             HBox content1 = new HBox(10);
 300             content1.getChildren().addAll(new Button("Button"), new Label("Label"), new Rectangle(40, 40, Color.TOMATO));
 301             tab.setContent(content1);
 302             Tab tab2 = new Tab();
 303             tab2.setText("tab 2");
 304             tab2.setContent(new Circle(40, Color.RED));
 305             pane.getTabs().addAll(tab, tab2);
 306             pane.setFocusTraversable(false);
 307             return pane;
 308         }
 309     }, 200), TitledPanes(TitledPane.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 310         public Node createControl() {


 358         }
 359     }, new ControlsCSSApp.ControlFactory() {
 360         public Node createControl() {
 361             TreeItem<String> root = new TreeItem<String>("ROOT", new Rectangle(20, 20, Color.CHOCOLATE));
 362             root.setExpanded(true);
 363             TreeItem<String> firstBrunch = new TreeItem<String>("brunch 1");
 364             firstBrunch.setExpanded(true);
 365             firstBrunch.getChildren().addAll(new TreeItem<String>("first item"), new TreeItem<String>("second item", new Rectangle(20, 20, Color.DARKGREY)));
 366             root.getChildren().addAll(firstBrunch);
 367             TreeItem<String> secondBrunch = new TreeItem<String>("brunch 2");
 368             secondBrunch.getChildren().addAll(new TreeItem<String>("first item"), new TreeItem<String>("second item", new Rectangle(20, 20, Color.DARKGREY)));
 369             root.getChildren().addAll(secondBrunch);
 370             TreeView tree = new TreeView(root);
 371             tree.setFocusTraversable(false);
 372             tree.setMinSize(147, 127);
 373             tree.setPrefSize(160, 140);
 374             return tree;
 375         }
 376     }, 200, 300), SplitPanes(SplitPane.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 377         public Node createControl() {
 378             SplitPane pane = SplitPaneBuilder.create().items(StackPaneBuilder.create().children(new Rectangle(40, 40, Color.WHITESMOKE)).build(), StackPaneBuilder.create().children(new Rectangle(40, 40, Color.BLUE)).build(), StackPaneBuilder.create().children(new Rectangle(40, 40, Color.RED)).build()).prefWidth(150).prefHeight(150).build();




 379             pane.setDividerPositions(0.33, 0.67);
 380             pane.setFocusTraversable(false);
 381             return pane;
 382         }
 383     }, 250), Paginations(new ArrayList<CssMetaData<? extends Styleable, ?>>(Pagination.getClassCssMetaData()) {
 384         {
 385             addAll(PaginationSkin.getClassCssMetaData());
 386         }
 387     }, new ControlsCSSApp.ControlFactory() {
 388         public Node createControl() {
 389             Pagination node = new Pagination(47);
 390             node.setMaxPageIndicatorCount(5);
 391             node.getStyleClass().add(Pagination.STYLE_CLASS_BULLET);
 392             return node;
 393         }
 394     }, 350, 150), XYChars(new ArrayList<CssMetaData<? extends Styleable, ?>>(LineChart.getClassCssMetaData()) {
 395         {
 396             addAll(NumberAxis.getClassCssMetaData());
 397         }
 398     }, new ControlsCSSApp.ControlFactory() {




   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 package test.css.controls;
  26 
  27 import com.sun.javafx.collections.ObservableListWrapper;
  28 import javafx.scene.control.skin.CellSkinBase;
  29 import javafx.scene.control.skin.ColorPickerSkin;
  30 import javafx.scene.control.skin.PaginationSkin;
  31 import javafx.scene.control.skin.ProgressIndicatorSkin;
  32 import javafx.scene.control.skin.TableColumnHeader;
  33 import javafx.scene.control.skin.TextInputControlSkin;
  34 import javafx.scene.control.skin.TreeCellSkin;

  35 import java.lang.reflect.Constructor;
  36 import java.lang.reflect.Method;
  37 import java.time.LocalDate;
  38 import java.time.Month;
  39 import java.time.format.DateTimeFormatter;
  40 import java.time.format.DateTimeFormatterBuilder;
  41 import java.util.*;
  42 import javafx.application.ConditionalFeature;
  43 import javafx.application.Platform;
  44 import javafx.beans.property.SimpleObjectProperty;
  45 import javafx.beans.value.ObservableValue;
  46 import javafx.collections.FXCollections;
  47 import javafx.collections.ObservableList;
  48 import javafx.css.CssMetaData;
  49 import javafx.css.Styleable;
  50 import javafx.geometry.HPos;
  51 import javafx.geometry.Pos;
  52 import javafx.scene.Node;
  53 import javafx.scene.chart.BarChart;
  54 import javafx.scene.chart.CategoryAxis;
  55 import javafx.scene.chart.LineChart;
  56 import javafx.scene.chart.NumberAxis;
  57 import javafx.scene.chart.PieChart;
  58 import javafx.scene.chart.XYChart;
  59 import javafx.scene.control.Accordion;
  60 import javafx.scene.control.Button;

  61 import javafx.scene.control.CheckBox;

  62 import javafx.scene.control.ChoiceBox;
  63 import javafx.scene.control.ColorPicker;
  64 import javafx.scene.control.ComboBox;
  65 import javafx.scene.control.Control;
  66 import javafx.scene.control.DatePicker;
  67 import javafx.scene.control.Hyperlink;

  68 import javafx.scene.control.Label;

  69 import javafx.scene.control.ListView;
  70 import javafx.scene.control.Menu;
  71 import javafx.scene.control.MenuBar;
  72 import javafx.scene.control.MenuItem;
  73 import javafx.scene.control.Pagination;
  74 import javafx.scene.control.PasswordField;

  75 import javafx.scene.control.ProgressBar;

  76 import javafx.scene.control.ProgressIndicator;

  77 import javafx.scene.control.RadioButton;

  78 import javafx.scene.control.ScrollBar;

  79 import javafx.scene.control.ScrollPane;
  80 import javafx.scene.control.Separator;

  81 import javafx.scene.control.Slider;

  82 import javafx.scene.control.SplitMenuButton;

  83 import javafx.scene.control.SplitPane;

  84 import javafx.scene.control.Tab;
  85 import javafx.scene.control.TabPane;
  86 import javafx.scene.control.TableColumn;
  87 import javafx.scene.control.TableColumn.CellDataFeatures;
  88 import javafx.scene.control.TableView;
  89 import javafx.scene.control.TextField;

  90 import javafx.scene.control.TitledPane;
  91 import javafx.scene.control.ToggleButton;

  92 import javafx.scene.control.ToolBar;
  93 import javafx.scene.control.TreeItem;
  94 import javafx.scene.control.TreeView;
  95 import javafx.scene.image.Image;
  96 import javafx.scene.image.ImageView;
  97 import javafx.scene.layout.FlowPane;
  98 import javafx.scene.layout.HBox;
  99 import javafx.scene.layout.StackPane;
 100 import javafx.scene.layout.TilePane;
 101 import javafx.scene.layout.VBox;
 102 import javafx.scene.paint.Color;
 103 import javafx.scene.shape.Circle;
 104 import javafx.scene.shape.Rectangle;
 105 import javafx.scene.text.Text;
 106 import javafx.util.Callback;
 107 import javafx.util.StringConverter;


 108 
 109 /**
 110  *
 111  * @author sergey.lugovoy@oracle.com
 112  */
 113 public enum ControlPage {
 114     Accordions(Accordion.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 115         public Node createControl() {
 116             TitledPane pane1 = new TitledPane();
 117             pane1.setText("title 1\nLong text long text");
 118             pane1.setContent(new Rectangle(100, 40, Color.SKYBLUE));
 119             pane1.setFocusTraversable(false);
 120             TitledPane pane2 = new TitledPane();
 121             pane2.setText("title 2\nLong text long text");
 122             pane2.setContent(new Rectangle(100, 40, Color.BLUEVIOLET));
 123             Accordion acc = new Accordion();
 124             acc.getPanes().addAll(pane1, pane2);
 125             acc.setExpandedPane(pane2);
 126             pane2.setAnimated(false);
 127             pane2.setFocusTraversable(false);
 128             acc.setFocusTraversable(false);
 129             return acc;
 130         }
 131     }, 200), Buttons(Button.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 132         public Control createControl() {
 133             Button temp = new Button("Button the first line" + "\nthe sec long line" + "\nthe third line");
 134             temp.setFocusTraversable(false);
 135             temp.setGraphic(new Rectangle(10, 10, Color.RED));
 136             return temp;
 137         }
 138     }, 200, 100), ChoiceBoxes(ChoiceBox.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 139         public Control createControl() {
 140             return new ChoiceBox() {
 141                 {
 142                     getItems().addAll(Arrays.asList("one", "two", "three"));
 143                     this.getSelectionModel().select(0);
 144                     setFocusTraversable(false);
 145                 }
 146             };
 147         }
 148     }), CheckBoxes(CheckBox.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 149         public Control createControl() {
 150             CheckBox temp = new CheckBox("Check box the first line" + "\nthe sec long line" + "\nthe third line");
 151             temp.setFocusTraversable(false);
 152             temp.setGraphic(new Rectangle(20, 20, Color.web("lightblue")));
 153             return temp;
 154         }
 155     }, 200, 100), ComboBoxes(ComboBox.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 156         @Override
 157         public Control createControl() {
 158             return new ComboBox() {
 159                 {
 160                     getItems().addAll(Arrays.asList("one", "two", "three"));
 161                     getSelectionModel().select(0);
 162                     setFocusTraversable(false);
 163                 }
 164             };
 165         }
 166     }), Hyperlinks(Hyperlink.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 167         public Control createControl() {
 168             Hyperlink temp = new Hyperlink("Hyperlink the first line" + "\nthe sec long line" + "\nthe third line");
 169             temp.setFocusTraversable(false);
 170             temp.setGraphic(new Circle(10, Color.BLUE));
 171             return temp;
 172         }
 173     }, 200, 100), Labels(new ArrayList<CssMetaData<? extends Styleable, ?>>(Label.getClassCssMetaData()) {
 174         {
 175             addAll(Text.getClassCssMetaData());
 176         }
 177     }, new ControlsCSSApp.ControlFactory() {
 178         public Control createControl() {
 179             Label temp = new Label("Label the first line" + "\nthe sec longlong line" + "\nthe third line");
 180             temp.setFocusTraversable(false);
 181             temp.setGraphic(new Rectangle(20, 20, Color.web("lightblue")));
 182             return temp;
 183         }
 184     }, 200), ListViews(ListView.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 185         public Node createControl() {
 186             ListView list = new ListView();
 187             ObservableListWrapper<String> items = new ObservableListWrapper<String>(Arrays.asList("One", "Two", "Three", "Four", "Five", "Six", "long line long line long line long line"));
 188             list.setItems(items);
 189             list.setPrefWidth(100);
 190             list.setPrefHeight(100);
 191             list.setFocusTraversable(false);
 192             return list;
 193         }
 194     }, 150), PasswordFields(PasswordField.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 195         public Control createControl() {
 196             PasswordField temp = new PasswordField();
 197             temp.setPromptText("Password box the first line" + "\nthe sec long line" + "\nthe third line");
 198             temp.setFocusTraversable(false);
 199             return temp;
 200         }
 201     }), PressedToggleButtons(ToggleButton.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 202         public Control createControl() {
 203             ToggleButton temp = new ToggleButton("Button the first line" + "\nthe sec long line" + "\nthe third line");
 204             temp.setSelected(true);
 205             temp.setFocusTraversable(false);
 206             temp.setGraphic(new Rectangle(10, 10, Color.RED));
 207             return temp;
 208         }
 209     }, 200, 120), ProgressIndicators(new ArrayList<CssMetaData<? extends Styleable, ?>>(ProgressIndicator.getClassCssMetaData()) {
 210         {
 211             addAll(ProgressIndicatorSkin.getClassCssMetaData());
 212         }
 213     }, new ControlsCSSApp.ControlFactory() {
 214         public Node createControl() {
 215             ProgressIndicator temp = new ProgressIndicator(0.85);
 216             temp.setPrefSize(100, 100);
 217             temp.setFocusTraversable(false);
 218             return temp;
 219         }
 220     }), ProgressBars(ProgressBar.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 221         public Node createControl() {
 222             ProgressBar temp = new ProgressBar(0.25);
 223             temp.setFocusTraversable(false);
 224             return temp;
 225         }
 226     }, 200, 100), RadioButtons(RadioButton.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 227         public Control createControl() {
 228             RadioButton temp = new RadioButton("Radio the first line" + "\nthe sec long line" + "\nthe third line");
 229             temp.setFocusTraversable(false);
 230             temp.setGraphic(new Rectangle(20, 20, Color.web("lightblue")));
 231             return temp;
 232         }
 233     }, 200, 100), TextFields(new ArrayList<CssMetaData<? extends Styleable, ?>>(TextField.getClassCssMetaData()) {
 234         {
 235             addAll(TextInputControlSkin.getClassCssMetaData());
 236         }
 237     }, new ControlsCSSApp.ControlFactory() {
 238         public Control createControl() {
 239             TextField temp = new TextField("Text box the first line" + "\nthe sec long line" + "\nthe third line");
 240             temp.setFocusTraversable(false);
 241             return temp;
 242         }
 243     }), Sliders(Slider.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 244         public Control createControl() {
 245             Slider temp = new Slider();
 246             temp.setMin(0);
 247             temp.setMax(100);
 248             temp.setValue(20);
 249             temp.setFocusTraversable(false);
 250             return temp;
 251         }
 252     }, 200), Separators(Separator.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 253         public Control createControl() {
 254             Separator sep = new Separator();
 255             sep.setHalignment(HPos.CENTER);
 256             sep.setPrefWidth(80);
 257             return sep;
 258         }
 259     }, 150), ScrollBars(ScrollBar.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 260         public Control createControl() {
 261             ScrollBar temp = new ScrollBar();
 262             temp.setValue(45);
 263             temp.setMin(0);
 264             temp.setMax(100);
 265             temp.setFocusTraversable(false);
 266             return temp;
 267         }
 268     }, 150), ScrollPanes(ScrollPane.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 269         public Node createControl() {
 270             ScrollPane pane = new ScrollPane();
 271             HBox hbox = new HBox(30);
 272             VBox vbox1 = new VBox(10);
 273             vbox1.getChildren().addAll(new Label("one"), new Button("two"), new CheckBox("three"), new RadioButton("four"), new Label("five"));
 274             VBox vbox2 = new VBox(10);
 275             vbox2.getChildren().addAll(new Label("one"), new Button("two"), new CheckBox("three"), new RadioButton("four"), new Label("five"));
 276             hbox.getChildren().addAll(vbox1, vbox2);
 277             pane.setContent(hbox);
 278             pane.setFocusTraversable(false);
 279             return pane;
 280         }
 281     }, 150), UnPressedToggleButtons(ToggleButton.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 282         public Control createControl() {
 283             ToggleButton temp = new ToggleButton("Button the first line" + "\nthe sec long line" + "\nthe third line");
 284             temp.setGraphic(new Rectangle(10, 10, Color.RED));
 285             temp.setSelected(false);
 286             temp.setFocusTraversable(false);
 287             return temp;
 288         }
 289     }, 200, 120), Toolbars(ToolBar.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 290         public Node createControl() {
 291             ToolBar toolbar = new ToolBar();
 292             SplitMenuButton temp = new SplitMenuButton();
 293             temp.setText("three");
 294             toolbar.getItems().addAll(new Button("One"), new Button("Two"), new Separator(), temp);
 295             toolbar.setFocusTraversable(false);
 296             return toolbar;
 297         }
 298     }, 250, 150), Menubars(MenuBar.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 299         public Node createControl() {
 300             MenuBar menubar = new MenuBar();
 301             Menu firstMenu = new Menu("File");
 302             MenuItem firstMenuFirstItem = new MenuItem("Save");
 303             MenuItem firstMenuSecondItem = new MenuItem("Open");
 304             MenuItem firstMenuThirdItem = new MenuItem("Exit");
 305             firstMenu.getItems().addAll(firstMenuFirstItem, firstMenuSecondItem, firstMenuThirdItem);
 306             Menu secondMenu = new Menu("Edit");
 307             MenuItem secondMenuFirstItem = new MenuItem("Undo");
 308             MenuItem secondMenuSecondItem = new MenuItem("Cut");
 309             MenuItem secondMenuThirdItem = new MenuItem("Copy");
 310             secondMenu.getItems().addAll(secondMenuFirstItem, secondMenuSecondItem, secondMenuThirdItem);
 311             Menu thirdMenu = new Menu("Help");
 312             MenuItem thirdMenuFirstItem = new MenuItem("Help Contents");
 313             MenuItem thirdMenuSecondItem = new MenuItem("About");
 314             thirdMenu.getItems().addAll(thirdMenuFirstItem, thirdMenuSecondItem);
 315             menubar.getMenus().addAll(firstMenu, secondMenu, thirdMenu);
 316             menubar.setFocusTraversable(false);
 317             return menubar;
 318         }
 319     }, 250, 150), SplitMenuButtons(SplitMenuButton.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 320         public Node createControl() {
 321             SplitMenuButton smb = new SplitMenuButton(new MenuItem("Split box the first line" + "\nthe sec long line" + "\nthe third line", new Rectangle(10, 10, Color.BLUE)));
 322             smb.setText("Split box the first line" + "\nthe sec long line" + "\nthe third line");
 323             smb.setGraphic(new Rectangle(10, 10, Color.RED));
 324             smb.setFocusTraversable(false);
 325             return smb;
 326         }
 327     }, 200, 120), TabPanes(TabPane.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 328         public Node createControl() {
 329             TabPane pane = new TabPane();
 330             Tab tab = new Tab();
 331             tab.setText("tab 1");
 332             HBox content1 = new HBox(10);
 333             content1.getChildren().addAll(new Button("Button"), new Label("Label"), new Rectangle(40, 40, Color.TOMATO));
 334             tab.setContent(content1);
 335             Tab tab2 = new Tab();
 336             tab2.setText("tab 2");
 337             tab2.setContent(new Circle(40, Color.RED));
 338             pane.getTabs().addAll(tab, tab2);
 339             pane.setFocusTraversable(false);
 340             return pane;
 341         }
 342     }, 200), TitledPanes(TitledPane.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 343         public Node createControl() {


 391         }
 392     }, new ControlsCSSApp.ControlFactory() {
 393         public Node createControl() {
 394             TreeItem<String> root = new TreeItem<String>("ROOT", new Rectangle(20, 20, Color.CHOCOLATE));
 395             root.setExpanded(true);
 396             TreeItem<String> firstBrunch = new TreeItem<String>("brunch 1");
 397             firstBrunch.setExpanded(true);
 398             firstBrunch.getChildren().addAll(new TreeItem<String>("first item"), new TreeItem<String>("second item", new Rectangle(20, 20, Color.DARKGREY)));
 399             root.getChildren().addAll(firstBrunch);
 400             TreeItem<String> secondBrunch = new TreeItem<String>("brunch 2");
 401             secondBrunch.getChildren().addAll(new TreeItem<String>("first item"), new TreeItem<String>("second item", new Rectangle(20, 20, Color.DARKGREY)));
 402             root.getChildren().addAll(secondBrunch);
 403             TreeView tree = new TreeView(root);
 404             tree.setFocusTraversable(false);
 405             tree.setMinSize(147, 127);
 406             tree.setPrefSize(160, 140);
 407             return tree;
 408         }
 409     }, 200, 300), SplitPanes(SplitPane.getClassCssMetaData(), new ControlsCSSApp.ControlFactory() {
 410         public Node createControl() {
 411             StackPane sp1 = new StackPane(new Rectangle(40, 40, Color.WHITESMOKE));
 412             StackPane sp2 = new StackPane(new Rectangle(40, 40, Color.BLUE));
 413             StackPane sp3 = new StackPane(new Rectangle(40, 40, Color.RED));
 414             SplitPane pane = new SplitPane(sp1, sp2, sp3);
 415             pane.setPrefSize(150, 150);
 416             pane.setDividerPositions(0.33, 0.67);
 417             pane.setFocusTraversable(false);
 418             return pane;
 419         }
 420     }, 250), Paginations(new ArrayList<CssMetaData<? extends Styleable, ?>>(Pagination.getClassCssMetaData()) {
 421         {
 422             addAll(PaginationSkin.getClassCssMetaData());
 423         }
 424     }, new ControlsCSSApp.ControlFactory() {
 425         public Node createControl() {
 426             Pagination node = new Pagination(47);
 427             node.setMaxPageIndicatorCount(5);
 428             node.getStyleClass().add(Pagination.STYLE_CLASS_BULLET);
 429             return node;
 430         }
 431     }, 350, 150), XYChars(new ArrayList<CssMetaData<? extends Styleable, ?>>(LineChart.getClassCssMetaData()) {
 432         {
 433             addAll(NumberAxis.getClassCssMetaData());
 434         }
 435     }, new ControlsCSSApp.ControlFactory() {