예제 #1
0
 public static void removeRowsFromGridPane(GridPane gridPane, int fromGridRow, int toGridRow) {
   Set<Node> nodes = new CopyOnWriteArraySet<>(gridPane.getChildren());
   nodes
       .stream()
       .filter(e -> GridPane.getRowIndex(e) >= fromGridRow && GridPane.getRowIndex(e) <= toGridRow)
       .forEach(e -> gridPane.getChildren().remove(e));
 }
예제 #2
0
 public static RadioButton addRadioButton(GridPane gridPane, int rowIndex, String title) {
   RadioButton radioButton = new RadioButton(title);
   GridPane.setRowIndex(radioButton, rowIndex);
   GridPane.setColumnIndex(radioButton, 1);
   gridPane.getChildren().add(radioButton);
   return radioButton;
 }
예제 #3
0
 public static Label addLabel(GridPane gridPane, int rowIndex, String title, double top) {
   Label label = new Label(title);
   GridPane.setRowIndex(label, rowIndex);
   GridPane.setMargin(label, new Insets(top, 0, 0, 0));
   gridPane.getChildren().add(label);
   return label;
 }
예제 #4
0
  public void open() throws IOException {

    paneCenter.getChildren().clear();

    String station = (String) cbStations.getValue();

    File f = new File("database\\" + station + "\\status.txt");
    FileReader fr1 = new FileReader(f);
    LineNumberReader ln = new LineNumberReader(fr1);
    int count = 0;
    while (ln.readLine() != null) {
      count++;
    }
    ln.close();
    fr1.close();

    FileReader fr2 = new FileReader(f);
    BufferedReader br = new BufferedReader(fr2);

    paneCenter.add(new Label("Last seen : " + (br.readLine())), 0, 0);

    for (int i = 1; i < count; i++) {
      paneCenter.add(new Label(br.readLine()), 0, i);
    }
    br.close();
    fr2.close();

    addQuantityToCB();
  }
예제 #5
0
 public static Button addButton(GridPane gridPane, int rowIndex, String title) {
   Button button = new Button(title);
   button.setDefaultButton(true);
   GridPane.setRowIndex(button, rowIndex);
   GridPane.setColumnIndex(button, 1);
   gridPane.getChildren().add(button);
   return button;
 }
예제 #6
0
 public static CheckBox addCheckBox(
     GridPane gridPane, int rowIndex, String checkBoxTitle, double top) {
   CheckBox checkBox = new CheckBox(checkBoxTitle);
   GridPane.setMargin(checkBox, new Insets(top, 0, 0, 0));
   GridPane.setRowIndex(checkBox, rowIndex);
   GridPane.setColumnIndex(checkBox, 1);
   gridPane.getChildren().add(checkBox);
   return checkBox;
 }
예제 #7
0
 public static Button addButtonAfterGroup(GridPane gridPane, int rowIndex, String title) {
   Button button = new Button(title);
   button.setDefaultButton(true);
   GridPane.setRowIndex(button, rowIndex);
   GridPane.setColumnIndex(button, 1);
   GridPane.setMargin(button, new Insets(15, 0, 0, 0));
   gridPane.getChildren().add(button);
   return button;
 }
예제 #8
0
 public static Label addMultilineLabel(GridPane gridPane, int rowIndex, String text, double top) {
   Label label = new Label(text);
   label.setWrapText(true);
   GridPane.setHalignment(label, HPos.LEFT);
   GridPane.setRowIndex(label, rowIndex);
   GridPane.setColumnSpan(label, 2);
   GridPane.setMargin(label, new Insets(top, 0, 0, 0));
   gridPane.getChildren().add(label);
   return label;
 }
예제 #9
0
  public static Tuple2<Label, AddressTextField> addLabelAddressTextField(
      GridPane gridPane, int rowIndex, String title) {
    Label label = addLabel(gridPane, rowIndex, title, 0);

    AddressTextField addressTextField = new AddressTextField();
    GridPane.setRowIndex(addressTextField, rowIndex);
    GridPane.setColumnIndex(addressTextField, 1);
    gridPane.getChildren().add(addressTextField);

    return new Tuple2<>(label, addressTextField);
  }
예제 #10
0
  public static Tuple2<Label, BalanceTextField> addLabelBalanceTextField(
      GridPane gridPane, int rowIndex, String title) {
    Label label = addLabel(gridPane, rowIndex, title, 0);

    BalanceTextField balanceTextField = new BalanceTextField();
    GridPane.setRowIndex(balanceTextField, rowIndex);
    GridPane.setColumnIndex(balanceTextField, 1);
    gridPane.getChildren().add(balanceTextField);

    return new Tuple2<>(label, balanceTextField);
  }
예제 #11
0
  public static Tuple2<Label, DatePicker> addLabelDatePicker(
      GridPane gridPane, int rowIndex, String title) {
    Label label = addLabel(gridPane, rowIndex, title, 0);

    DatePicker datePicker = new DatePicker();
    GridPane.setRowIndex(datePicker, rowIndex);
    GridPane.setColumnIndex(datePicker, 1);
    gridPane.getChildren().add(datePicker);

    return new Tuple2<>(label, datePicker);
  }
 /**
  * Gets the Node at a given location in the GridPane
  *
  * @param row the row (y-coordinate) where to get the Node
  * @param column the column (x-coordinate) where to get the Node
  * @param gridPane the GridPane to get a Node from
  * @return the Node at that given location from the GridPane
  */
 private Node getNodeFromIndex(int row, int column, GridPane gridPane) {
   Node result = null;
   ObservableList<Node> childrens = gridPane.getChildren();
   for (Node node : childrens) {
     if (gridPane.getRowIndex(node) == row && gridPane.getColumnIndex(node) == column) {
       result = node;
       break;
     }
   }
   return result;
 }
예제 #13
0
  public static Tuple2<Label, TxIdTextField> addLabelTxIdTextField(
      GridPane gridPane, int rowIndex, String title, double top) {
    Label label = addLabel(gridPane, rowIndex, title, top);

    TxIdTextField txIdTextField = new TxIdTextField();
    GridPane.setRowIndex(txIdTextField, rowIndex);
    GridPane.setColumnIndex(txIdTextField, 1);
    GridPane.setMargin(txIdTextField, new Insets(top, 0, 0, 0));
    gridPane.getChildren().add(txIdTextField);

    return new Tuple2<>(label, txIdTextField);
  }
예제 #14
0
  public static Tuple2<Label, ListView> addLabelListView(
      GridPane gridPane, int rowIndex, String title, double top) {
    Label label = addLabel(gridPane, rowIndex, title, top);

    ListView listView = new ListView();
    GridPane.setRowIndex(listView, rowIndex);
    GridPane.setColumnIndex(listView, 1);
    GridPane.setMargin(listView, new Insets(top, 0, 0, 0));
    gridPane.getChildren().add(listView);

    return new Tuple2<>(label, listView);
  }
예제 #15
0
  public static Tuple2<Label, CheckBox> addLabelCheckBox(
      GridPane gridPane, int rowIndex, String title, String checkBoxTitle, double top) {
    Label label = addLabel(gridPane, rowIndex, title, -3);
    GridPane.setMargin(label, new Insets(top, 0, 0, 0));

    CheckBox checkBox = new CheckBox(checkBoxTitle);
    GridPane.setRowIndex(checkBox, rowIndex);
    GridPane.setColumnIndex(checkBox, 1);
    GridPane.setMargin(checkBox, new Insets(top, 0, 0, 0));
    gridPane.getChildren().add(checkBox);

    return new Tuple2<>(label, checkBox);
  }
예제 #16
0
  public static Tuple2<Label, ComboBox> addLabelComboBox(
      GridPane gridPane, int rowIndex, String title, double top) {
    Label label = null;
    if (title != null) label = addLabel(gridPane, rowIndex, title, top);

    ComboBox comboBox = new ComboBox();
    GridPane.setRowIndex(comboBox, rowIndex);
    GridPane.setColumnIndex(comboBox, 1);
    GridPane.setMargin(comboBox, new Insets(top, 0, 0, 0));
    gridPane.getChildren().add(comboBox);

    return new Tuple2<>(label, comboBox);
  }
예제 #17
0
  public static Tuple2<Label, TextFieldWithCopyIcon> addLabelTextFieldWithCopyIcon(
      GridPane gridPane, int rowIndex, String title, String value, double top) {
    Label label = addLabel(gridPane, rowIndex, title, top);

    TextFieldWithCopyIcon textFieldWithCopyIcon = new TextFieldWithCopyIcon();
    textFieldWithCopyIcon.setText(value);
    GridPane.setRowIndex(textFieldWithCopyIcon, rowIndex);
    GridPane.setColumnIndex(textFieldWithCopyIcon, 1);
    GridPane.setMargin(textFieldWithCopyIcon, new Insets(top, 0, 0, 0));
    gridPane.getChildren().add(textFieldWithCopyIcon);

    return new Tuple2<>(label, textFieldWithCopyIcon);
  }
예제 #18
0
 public static Tuple2<Button, Button> add2ButtonsAfterGroup(
     GridPane gridPane, int rowIndex, String title1, String title2, double top) {
   HBox hBox = new HBox();
   hBox.setSpacing(10);
   Button button1 = new Button(title1);
   button1.setDefaultButton(true);
   Button button2 = new Button(title2);
   hBox.getChildren().addAll(button1, button2);
   GridPane.setRowIndex(hBox, rowIndex);
   GridPane.setColumnIndex(hBox, 1);
   GridPane.setMargin(hBox, new Insets(top, 10, 0, 0));
   gridPane.getChildren().add(hBox);
   return new Tuple2<>(button1, button2);
 }
예제 #19
0
  public static Tuple2<Label, TextField> addLabelTextField(
      GridPane gridPane, int rowIndex, String title, String value, double top) {
    Label label = addLabel(gridPane, rowIndex, title, top);

    TextField textField = new TextField(value);
    textField.setEditable(false);
    textField.setMouseTransparent(true);
    textField.setFocusTraversable(false);
    GridPane.setRowIndex(textField, rowIndex);
    GridPane.setColumnIndex(textField, 1);
    GridPane.setMargin(textField, new Insets(top, 0, 0, 0));
    gridPane.getChildren().add(textField);

    return new Tuple2<>(label, textField);
  }
예제 #20
0
  public static Tuple2<Button, CheckBox> addButtonCheckBox(
      GridPane gridPane, int rowIndex, String buttonTitle, String checkBoxTitle, double top) {
    Button button = new Button(buttonTitle);
    button.setDefaultButton(true);
    CheckBox checkBox = new CheckBox(checkBoxTitle);
    HBox.setMargin(checkBox, new Insets(6, 0, 0, 0));

    HBox hBox = new HBox();
    hBox.setSpacing(20);
    hBox.getChildren().addAll(button, checkBox);
    GridPane.setRowIndex(hBox, rowIndex);
    GridPane.setColumnIndex(hBox, 1);
    hBox.setPadding(new Insets(top, 0, 0, 0));
    gridPane.getChildren().add(hBox);

    return new Tuple2<>(button, checkBox);
  }
예제 #21
0
  public static Tuple2<Label, RadioButton> addLabelRadioButton(
      GridPane gridPane,
      int rowIndex,
      ToggleGroup toggleGroup,
      String title,
      String radioButtonTitle) {
    Label label = addLabel(gridPane, rowIndex, title, 0);

    RadioButton radioButton = new RadioButton(radioButtonTitle);
    radioButton.setToggleGroup(toggleGroup);
    radioButton.setPadding(new Insets(6, 0, 0, 0));
    GridPane.setRowIndex(radioButton, rowIndex);
    GridPane.setColumnIndex(radioButton, 1);
    gridPane.getChildren().add(radioButton);

    return new Tuple2<>(label, radioButton);
  }
예제 #22
0
  public static Tuple3<Label, InputTextField, CheckBox> addLabelInputTextFieldCheckBox(
      GridPane gridPane, int rowIndex, String title, String checkBoxTitle) {
    Label label = addLabel(gridPane, rowIndex, title, 0);

    InputTextField inputTextField = new InputTextField();
    CheckBox checkBox = new CheckBox(checkBoxTitle);
    checkBox.setPadding(new Insets(6, 0, 0, 0));

    HBox hBox = new HBox();
    hBox.setSpacing(10);
    hBox.getChildren().addAll(inputTextField, checkBox);
    GridPane.setRowIndex(hBox, rowIndex);
    GridPane.setColumnIndex(hBox, 1);
    gridPane.getChildren().add(hBox);

    return new Tuple3<>(label, inputTextField, checkBox);
  }
예제 #23
0
  public static Tuple3<Label, ComboBox, ComboBox> addLabelComboBoxComboBox(
      GridPane gridPane, int rowIndex, String title, double top) {
    Label label = addLabel(gridPane, rowIndex, title, top);

    HBox hBox = new HBox();
    hBox.setSpacing(10);

    ComboBox comboBox1 = new ComboBox();
    ComboBox comboBox2 = new ComboBox();
    hBox.getChildren().addAll(comboBox1, comboBox2);

    GridPane.setRowIndex(hBox, rowIndex);
    GridPane.setColumnIndex(hBox, 1);
    // GridPane.setMargin(hBox, new Insets(15, 0, 0, 0));
    gridPane.getChildren().add(hBox);

    return new Tuple3<>(label, comboBox1, comboBox2);
  }
예제 #24
0
  public static GridPane addGridPane(Pane parent) {
    GridPane gridPane = new GridPane();
    AnchorPane.setLeftAnchor(gridPane, 10d);
    AnchorPane.setRightAnchor(gridPane, 10d);
    AnchorPane.setTopAnchor(gridPane, 10d);
    AnchorPane.setBottomAnchor(gridPane, 10d);
    gridPane.setHgap(Layout.GRID_GAP);
    gridPane.setVgap(Layout.GRID_GAP);
    ColumnConstraints columnConstraints1 = new ColumnConstraints();
    columnConstraints1.setHalignment(HPos.RIGHT);
    columnConstraints1.setHgrow(Priority.SOMETIMES);

    ColumnConstraints columnConstraints2 = new ColumnConstraints();
    columnConstraints2.setHgrow(Priority.ALWAYS);

    gridPane.getColumnConstraints().addAll(columnConstraints1, columnConstraints2);

    parent.getChildren().add(gridPane);
    return gridPane;
  }
예제 #25
0
  public static Tuple3<Label, ComboBox, Button> addLabelComboBoxButton(
      GridPane gridPane, int rowIndex, String title, String buttonTitle, double top) {
    Label label = addLabel(gridPane, rowIndex, title, top);

    HBox hBox = new HBox();
    hBox.setSpacing(10);

    Button button = new Button(buttonTitle);
    button.setDefaultButton(true);

    ComboBox comboBox = new ComboBox();

    hBox.getChildren().addAll(comboBox, button);

    GridPane.setRowIndex(hBox, rowIndex);
    GridPane.setColumnIndex(hBox, 1);
    GridPane.setMargin(hBox, new Insets(15, 0, 0, 0));
    gridPane.getChildren().add(hBox);

    return new Tuple3<>(label, comboBox, button);
  }
예제 #26
0
  public static Tuple3<Button, ProgressIndicator, Label> addButtonWithStatus(
      GridPane gridPane, int rowIndex, String buttonTitle, double top) {
    HBox hBox = new HBox();
    hBox.setSpacing(10);
    Button button = new Button(buttonTitle);
    button.setDefaultButton(true);

    ProgressIndicator progressIndicator = new ProgressIndicator(0);
    progressIndicator.setPrefHeight(24);
    progressIndicator.setPrefWidth(24);
    progressIndicator.setVisible(false);

    Label label = new Label();
    label.setPadding(new Insets(5, 0, 0, 0));

    hBox.getChildren().addAll(button, progressIndicator, label);

    GridPane.setRowIndex(hBox, rowIndex);
    GridPane.setColumnIndex(hBox, 1);
    GridPane.setMargin(hBox, new Insets(top, 0, 0, 0));
    gridPane.getChildren().add(hBox);

    return new Tuple3<>(button, progressIndicator, label);
  }
예제 #27
0
 public static TitledGroupBg addTitledGroupBg(
     GridPane gridPane, int rowIndex, int rowSpan, String title, double top) {
   TitledGroupBg titledGroupBg = new TitledGroupBg();
   titledGroupBg.setText(title);
   titledGroupBg.prefWidthProperty().bind(gridPane.widthProperty());
   GridPane.setRowIndex(titledGroupBg, rowIndex);
   GridPane.setRowSpan(titledGroupBg, rowSpan);
   GridPane.setColumnSpan(titledGroupBg, 2);
   GridPane.setMargin(titledGroupBg, new Insets(top, -10, -10, -10));
   gridPane.getChildren().add(titledGroupBg);
   return titledGroupBg;
 }
예제 #28
0
  public static Tuple2<Label, TextArea> addLabelTextArea(
      GridPane gridPane, int rowIndex, String title, String prompt, double top) {
    Label label = addLabel(gridPane, rowIndex, title, 0);
    GridPane.setMargin(label, new Insets(top + 4, 0, 0, 0));
    GridPane.setValignment(label, VPos.TOP);

    TextArea textArea = new TextArea();
    textArea.setPromptText(prompt);
    textArea.setWrapText(true);
    GridPane.setRowIndex(textArea, rowIndex);
    GridPane.setColumnIndex(textArea, 1);
    GridPane.setMargin(textArea, new Insets(top, 0, 0, 0));
    gridPane.getChildren().add(textArea);

    return new Tuple2<>(label, textArea);
  }
예제 #29
0
  public void displayPane() throws IOException {

    addStationsToCB();

    paneTop.getColumnConstraints().add(new ColumnConstraints(60));
    paneTop.getColumnConstraints().add(new ColumnConstraints(200));
    paneTop.getColumnConstraints().add(new ColumnConstraints(100));

    paneBot.getColumnConstraints().add(new ColumnConstraints(60));
    paneBot.getColumnConstraints().add(new ColumnConstraints(200));
    paneBot.getColumnConstraints().add(new ColumnConstraints(100));

    paneCenter.getColumnConstraints().add(new ColumnConstraints(300));

    paneTop.setPadding(new Insets(10, 10, 10, 10));
    paneTop.setAlignment(Pos.CENTER);
    paneTop.setHgap(5);
    paneTop.setVgap(5);

    paneBot.setPadding(new Insets(10, 10, 10, 10));
    paneBot.setAlignment(Pos.CENTER);
    paneBot.setHgap(5);
    paneBot.setVgap(5);

    paneTop.add(new Label("Station :"), 0, 0);
    paneTop.add(cbStations, 1, 0);
    paneTop.add(btOpen, 2, 0);

    paneBot.add(new Label("Quantity :"), 0, 0);
    paneBot.add(cbQuantity, 1, 0);
    paneBot.add(btShow, 2, 0);

    paneTop.setHalignment(btOpen, HPos.RIGHT);
    paneBot.setHalignment(btShow, HPos.RIGHT);

    paneCenter.setHgap(5);
    paneCenter.setVgap(5);
    paneCenter.setAlignment(Pos.CENTER);
    sp.setContent(paneCenter);
    sp.setVbarPolicy(ScrollPane.ScrollBarPolicy.ALWAYS);
    bp.setMargin(sp, new Insets(20, 50, 40, 50));
    bp.setTop(paneTop);
    bp.setCenter(sp);
    bp.setBottom(paneBot);

    btOpen.setOnAction(
        e -> {
          try {
            open();
          } catch (IOException er) {
            er.printStackTrace();
          }
        });

    btShow.setOnAction(e -> showGraph());
  }
예제 #30
0
파일: Main.java 프로젝트: jkwhite/caspar
  public void start(final Stage stage) {
    for (ConditionalFeature f : EnumSet.allOf(ConditionalFeature.class)) {
      System.err.println(f + ": " + Platform.isSupported(f));
    }
    Rectangle2D screen = Screen.getPrimary().getVisualBounds();
    final Random rand = new Random();

    /*
    final Group starfield = new Group();
    for(int i=0;i<66;i++) {
        int size = rand.nextInt(3)+1;
        if(size==3) {
            size = rand.nextInt(3)+1;
        }
        Circle circ = new Circle(rand.nextInt((int)screen.getWidth()), rand.nextInt(200+(int)screen.getHeight())-200,
            size);
        circ.setFill(Color.rgb(200,200,200+rand.nextInt(56)));
        circ.setTranslateZ(1+rand.nextInt(40));
        starfield.getChildren().add(circ);
    }
    */
    final List<Starfield> stars = new ArrayList<>();
    for (int i = 0; i < 10; i++) {
      int sw = (int) screen.getWidth(), sh = (int) screen.getHeight();
      Starfield sf = new Starfield(rand, -sw, -sh, 2 * sw, 2 * sh, rand.nextInt(30) + 10);
      sf.setTranslateZ(rand.nextInt(2000) + 50);
      stars.add(sf);
    }
    // final Starfield starfield2 = new Starfield(rand, -200, -200, (int)screen.getWidth(),
    // (int)screen.getHeight()+200, 40);

    final Ruleset1D rules =
        new Ruleset1D(new int[] {Colors.randomColor(rand), Colors.randomColor(rand)});
    final Ruleset rules2 = new Rulespace1D(rules);
    // Rule rule = rules.random(rand).next();
    Iterator<Rule> it = rules.iterator();
    GridPane gridp = new GridPane();
    int i = 0, j = 0;
    while (it.hasNext()) {
      Rule rule = it.next();
      CA ca = new CA(rule, new RandomInitializer(), rand, 42, 100, 100);
      Plane plane = ca.createPlane();
      ImageView imview = new ImageView(plane.toImage());
      imview.setSmooth(true);
      imview.setFitWidth(30);
      imview.setPreserveRatio(true);
      gridp.add(imview, i, j);
      if (++i == 16) {
        i = 0;
        j++;
      }
    }
    // gridp.setScaleX(0.3);
    // gridp.setScaleY(0.3);
    // gridp.setPrefSize(100*3/3, 100*3/3);
    // gridp.setMaxSize(100*3/3, 100*3/3);

    final double XTRANS = screen.getWidth() / 2 - 30 * 16 / 2;
    final double YTRANS = screen.getHeight() / 2 - 30 * 16 / 2;
    // gridp.setTranslateX((screen.getWidth()/2+100*16/2)*0.3);
    // gridp.setTranslateX(0);
    gridp.setTranslateX(XTRANS);
    gridp.setTranslateY(YTRANS);
    // gridp.setAlignment(Pos.CENTER);
    Group grid = new Group(gridp);
    // grid.setTranslateX(0);
    // grid.setTranslateY(0);

    // gridp.relocate(-400, -400);
    // gridp.setTranslateX(-300);
    // gridp.setTranslateY(-150);

    /*
    final RotateTransition rt = new RotateTransition(Duration.millis(3000), gridp);
    rt.setByAngle(180);
    rt.setCycleCount(4);
    rt.setAutoReverse(true);
    */
    // rt.setAutoReverse(false);

    /*`
    final BorderPane border = new BorderPane();
    */
    // Label title = new Label("EXPLORATIONS IN CELLULAR SPACES");
    Label title = new Label("E  X  P  L  O  R  A  T  I  O  N  S");
    title.setFont(new Font("Helvetica Neue Condensed Bold", 36));
    title.setTextFill(Color.WHITE);
    // Label title2 = new Label("IN CELLULAR SPACES");
    Label title2 = new Label("EXPLORATIONS IN CELLULAR SPACES");
    title2.setFont(new Font("Helvetica Neue Condensed Bold", 28));
    title2.setTextFill(Color.WHITE);
    /*`
    title.setAlignment(Pos.CENTER);
    title.setContentDisplay(ContentDisplay.CENTER);
    title.setTextAlignment(TextAlignment.CENTER);
    */
    final HBox toptitle = new HBox();
    toptitle.setAlignment(Pos.CENTER);
    toptitle.getChildren().add(title);
    toptitle.setTranslateX(XTRANS);
    toptitle.setTranslateY(YTRANS - 36);

    final HBox btitle = new HBox();
    btitle.setAlignment(Pos.CENTER);
    title2.setAlignment(Pos.CENTER);
    btitle.getChildren().add(title2);
    btitle.setTranslateX(XTRANS);
    // btitle.setTranslateX(screen.getWidth()/2-title2.getPrefWidth()/2);
    btitle.setTranslateY(YTRANS + 30 * 16);

    Group border = new Group();
    // border.getChildren().add(toptitle);
    for (Starfield st : stars) {
      border.getChildren().add(st);
    }
    // border.getChildren().add(starfield2);
    border.getChildren().add(btitle);
    border.getChildren().add(grid);

    final List<TranslateTransition> tts = new ArrayList<>();
    final TranslateTransition tt = new TranslateTransition(Duration.millis(6000), grid);
    tt.setByY(2000);
    tts.add(tt);
    for (Starfield sf : stars) {
      TranslateTransition st = new TranslateTransition(Duration.millis(6000), sf);
      st.setByY(200);
      st.setByZ(100 + rand.nextInt(100));
      tts.add(st);
    }
    /*
    final TranslateTransition tt2 = new TranslateTransition(Duration.millis(6000), starfield1);
    tt2.setByY(200);
    tt2.setByZ(200);
    final TranslateTransition tt3 = new TranslateTransition(Duration.millis(6000), starfield2);
    tt3.setByY(300);
    tt3.setByZ(200);
    */
    // final ParallelTransition infinite = new ParallelTransition(tt, tt2, tt3);
    final ParallelTransition infinite =
        new ParallelTransition(tts.toArray(new TranslateTransition[0]));

    final BorderPane ctrl = new BorderPane();
    // ctrl.setPrefSize(200, 100);
    // ctrl.setMaxSize(200, 100);
    Label start = new Label("Start");
    start.setTextFill(Color.WHITE);
    start.setFont(new Font("Helvetica", 28));
    start.setAlignment(Pos.CENTER_LEFT);
    start.setContentDisplay(ContentDisplay.CENTER);
    start.setTranslateX(XTRANS + 30 * 16 + 100);
    start.setTranslateY(screen.getHeight() / 2);
    // start.setTranslateX(-400);
    Circle ico = new Circle(15);
    ico.setOnMouseClicked(
        new EventHandler<MouseEvent>() {
          @Override
          public void handle(MouseEvent e) {
            FadeTransition ft = new FadeTransition(Duration.millis(500), ctrl);
            ft.setFromValue(1.0);
            ft.setToValue(0.0);
            FadeTransition tft = new FadeTransition(Duration.millis(500), btitle);
            tft.setFromValue(1.0);
            tft.setToValue(0.0);
            ParallelTransition pt = new ParallelTransition(ft, tft);
            // TranslateTransition fft = new TranslateTransition(Duration.millis(3000), border);
            // tt.setByY(2000);
            SequentialTransition st = new SequentialTransition(pt, infinite);
            st.setOnFinished(
                new EventHandler<ActionEvent>() {
                  public void handle(ActionEvent e) {
                    State state = State.state().rules(rules2).random(new Rand()).size(400);
                    Iterator<Rule> it = state.rules().random(state.random().create());
                    CA ca =
                        new CA(
                            it.next(),
                            new RandomInitializer(),
                            state.random().create(),
                            0,
                            state.size(),
                            state.size());
                    state.ca(ca);
                    // final Futures futures = new Futures(rules2, new Rand());
                    final Controls controls = new Controls(state);
                    // controls.setTranslateX(screen.getWidth()/2 -
                    // futures.getPossibilityWidth()/2);
                    // controls.setTranslateY(screen.getHeight()/2 -
                    // futures.getPossiblityHeight()/2-20);

                    // controls.setTranslateX(screen.getWidth()/2 - (3*200+2*10)/2);
                    // controls.setTranslateY(screen.getHeight()/2 - (3*200+2*10)/2-20);

                    for (Starfield sf : stars) {
                      state.addListener(sf);
                      // futures.addFutureListener(sf);
                    }
                    // futures.addFutureListener(starfield1);
                    // futures.addFutureListener(starfield2);
                    border.getChildren().remove(grid);
                    border.getChildren().remove(btitle);
                    // border.getChildren().add(futures);
                    border.getChildren().add(controls);
                    // futures.setTranslateX(screen.getWidth()/2 - futures.getPossibilityWidth()/2);
                    // futures.setTranslateY(screen.getHeight()/2 -
                    // futures.getPossiblityHeight()/2);
                    // border.setCenter(futures);
                    // border.setAlignment(futures, Pos.CENTER);
                  }
                });
            st.play();
          }
        });
    // Sphere ico = new Sphere(15);
    // ico.setDrawMode(DrawMode.LINE);
    ico.setFill(Color.rgb(10, 10, 10));
    ico.setStroke(Color.WHITE);
    ico.setStrokeWidth(3);
    ico.setTranslateX(XTRANS + 30 * 16 + 100);
    ico.setTranslateY(screen.getHeight() / 2);
    // ctrl.setTop(ico);
    ctrl.setCenter(ico);
    /*
    border.setRight(ctrl);

    border.setMaxSize(800,600);
    border.setPrefSize(800,600);
    */
    border.getChildren().add(ctrl);
    Group root = new Group();
    root.getChildren().add(border);
    // root.setAutoSizeChildren(false);
    // root.setLayoutX(-400);
    // root.setLayoutY(-400);
    // Scene scene = new Scene(root, 1200, 1000);
    Scene scene = new Scene(root, 1280, 1024, true, SceneAntialiasing.DISABLED);
    scene.setFill(Color.BLACK);
    scene.setCamera(new PerspectiveCamera());

    // set Stage boundaries to visible bounds of the main screen
    stage.setX(screen.getMinX());
    stage.setY(screen.getMinY());
    stage.setWidth(screen.getWidth());
    stage.setHeight(screen.getHeight());

    stage.setTitle("Explorations in Cellular Spaces");
    stage.setScene(scene);
    stage.setResizable(false);
    // root.autosize();
    // stage.sizeToScene();
    stage.show();
  }