Package jfxtras.scene.layout.trial

Source Code of jfxtras.scene.layout.trial.CircularPaneTrail

package jfxtras.scene.layout.trial;


import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;

import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.Priority;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.paint.Paint;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
import jfxtras.test.TestUtil;
import jfxtras.scene.layout.CircularPane;
import jfxtras.scene.layout.HBox;

public class CircularPaneTrail extends Application {

    public static void main(String[] args) {
        launch(args);      
    }

  @Override
  public void start(Stage stage) {
   
    HBox lHBox = new HBox(20);
    Paint lShowDebug = Color.GREEN;
   
    {
      CircularPane lCircularPane = new CircularPane();
      //lCircularPane.setStyle("-fx-border-color:black;");
      lCircularPane.setStartAngle(360.0 / 12 / 2); // make sure the 12 is on top
      lCircularPane.setChildrenAreCircular(true);
      //lCircularPane.setShowDebug(lShowDebug);
      lCircularPane.setAnimationInterpolation(CircularPane::animateOverTheArc);
      final List<Label> labels = new ArrayList<>();
      final List<Circle> circles = new ArrayList<>();
      final AtomicReference<Circle> lastFocus = new AtomicReference<>();
      final AtomicBoolean isPM = new AtomicBoolean(false);
      for (int i = 0; i < 12; i++) {
        javafx.scene.shape.Circle c = new javafx.scene.shape.Circle(10, Color.TRANSPARENT);
        c.getStyleClass().add("timecircle");
        circles.add(c);
        javafx.scene.control.Label t = new javafx.scene.control.Label("" + (i + 1));
        t.getStyleClass().add("time");
        labels.add(t);
        c.setOnMouseEntered( (event) -> {
          int lastFocusIdx = circles.indexOf(lastFocus.get());
          int currentIdx = circles.indexOf( event.getSource() );
         
          if ( (lastFocusIdx == 11 && currentIdx == 0)
            || (lastFocusIdx == 0 && currentIdx == 11)
             ) {
            isPM.set( !isPM.get() );
          }
         
          for (int j = 0; j < 12; j++) {
            labels.get(j).setText( "" + ( (j + 1) + (isPM.get() ? 12 : 0) ) );
          }
        });
        c.setOnMouseExited( (event) -> {
          lastFocus.set( (Circle)event.getSource() );
        });
        StackPane lStackPane = new StackPane();
        lStackPane.setId("" + i);
        lStackPane.getChildren().add(c);
        lStackPane.getChildren().add(t);
        lCircularPane.add(lStackPane);
      }
     
      StackPane lStackPane = new StackPane();
      Circle c = new Circle(1, Color.WHITE);
      c.radiusProperty().bind(lCircularPane.widthProperty().divide(2.0));
      lStackPane.getChildren().add(c);
      lStackPane.getChildren().add(lCircularPane);
      Label l = new Label("H");
      l.getStyleClass().add("center");
      lStackPane.getChildren().add(l);
      lHBox.add(lStackPane);
    }
   
    {
      CircularPane lCircularPane = new CircularPane();
      lCircularPane.setStartAngle(-360.0 / 12 / 2);
      lCircularPane.setDiameter(150.0);
      //lCircularPane.setStyle("-fx-border-color:black;");
      lCircularPane.setChildrenAreCircular(true);
      //lCircularPane.setShowDebug(lShowDebug);
      lCircularPane.setAnimationInterpolation(CircularPane::animateOverTheArc);
      final List<Label> labels = new ArrayList<>();
      final List<Circle> circles = new ArrayList<>();
      for (int i = 0; i < 12; i++) {
        javafx.scene.shape.Circle c = new javafx.scene.shape.Circle(10, Color.TRANSPARENT);
        circles.add(c);
        javafx.scene.control.Label t = new javafx.scene.control.Label("" + (i * 5));
        t.getStyleClass().add("time");
        labels.add(t);
        StackPane lStackPane = new StackPane();
        lStackPane.getChildren().add(c);
        lStackPane.getChildren().add(t);
        lCircularPane.add(lStackPane);
      }
      StackPane lStackPane = new StackPane();
      Circle c = new Circle(1, Color.WHITE);
      c.radiusProperty().bind(lCircularPane.widthProperty().divide(2.0));
      lStackPane.getChildren().add(c);
      lStackPane.getChildren().add(lCircularPane);
      Label l = new Label("M");
      l.getStyleClass().add("center");
      lStackPane.getChildren().add(l);
      lHBox.add(lStackPane);
    }
   
    {
      CircularPane lCircularPane = new CircularPane();
      lCircularPane.setDiameter(90.0);
      //lCircularPane.setStyle("-fx-border-color:black;");
      //lCircularPane.setChildrenAreCircular(true);
      lCircularPane.setShowDebug(lShowDebug);
      lCircularPane.setAnimationInterpolation(CircularPane::animateOverTheArc);
      final List<Label> labels = new ArrayList<>();
      final List<Circle> circles = new ArrayList<>();
      final AtomicReference<Circle> lastFocus = new AtomicReference<>();
      final AtomicBoolean isPM = new AtomicBoolean(false);
      for (int i = 0; i < 12; i++) {
        javafx.scene.shape.Circle c = new javafx.scene.shape.Circle(10, Color.GRAY);
        circles.add(c);
        javafx.scene.control.Label t = new javafx.scene.control.Label("" + (i * 5));
        t.getStyleClass().add("time");
        labels.add(t);
        StackPane lStackPane = new StackPane();
        lStackPane.getChildren().add(c);
        lStackPane.getChildren().add(t);
        lCircularPane.add(lStackPane);
      }
      StackPane lStackPane = new StackPane();
      lStackPane.getChildren().add(lCircularPane);
      Label l = new Label("S");
      l.getStyleClass().add("center");
      lStackPane.getChildren().add(l);
      lHBox.add(lStackPane);
    }
   
    {
      CircularPane lCircularPane = new CircularPane().withId("XX");
      //lCircularPane.setStyle("-fx-border-color:black;");
      lCircularPane.setShowDebug(lShowDebug);
      lCircularPane.setAnimationInterpolation(CircularPane::animateOverTheArc);
      for (int i = 0; i < 12; i++) {
        javafx.scene.control.Button b = new javafx.scene.control.Button("XX");
//        b.setStyle("-fx-padding:10px;");
        b.setStyle("-fx-margin:10px;");
        lCircularPane.add(b);
      }
      lHBox.add(lCircularPane);
    }
   
    {
      CircularPane lCircularPane = new CircularPane();
      lCircularPane.setMinSize(200200);
      //lCircularPane.setStyle("-fx-border-color:black;");
      //lCircularPane.setChildrenAreCircular(true);
      lCircularPane.setShowDebug(lShowDebug);
      lCircularPane.setAnimationInterpolation(CircularPane::animateOverTheArc);
      for (int i = 0; i < 8; i++) {
        javafx.scene.shape.Circle c = new javafx.scene.shape.Circle(10);
        lCircularPane.add(c);
      }
      lHBox.add(lCircularPane);
     
//      final Node n = lCircularPane.getChildren().get(0);       
//      n.layoutXProperty().addListener( (observable) -> {
//        System.out.println("layoutX=" + n.getLayoutX());
//      });   
//      n.layoutYProperty().addListener( (observable) -> {
//        System.out.println("layoutY=" + n.getLayoutY());
//      });   
     
    }
   
    {
      CircularPane lCircularPane = new CircularPane();
      //lCircularPane.setStyle("-fx-border-color:black;");
      //lCircularPane.setChildrenAreCircular(true);
      lCircularPane.setShowDebug(lShowDebug);
      lCircularPane.setAnimationInterpolation(CircularPane::animateOverTheArc);
      for (int i = 0; i < 8; i++) {
        javafx.scene.shape.Circle c = new javafx.scene.shape.Circle(10);
        lCircularPane.add(c);
      }
      lHBox.add(lCircularPane, new HBox.C().hgrow(Priority.ALWAYS));
    }
   
    {
      CircularPane lCircularPane = new CircularPane();
      //lCircularPane.setStyle("-fx-border-color:black;");
      //lCircularPane.setChildrenAreCircular(true);
      lCircularPane.setShowDebug(lShowDebug);
      lCircularPane.setAnimationInterpolation(CircularPane::animateOverTheArc);
      for (int i = 0; i < 8; i++) {
        javafx.scene.shape.Circle c = new javafx.scene.shape.Circle(5 + i);
        lCircularPane.add(c);
      }
      lHBox.add(lCircularPane);
    }

    {
      CircularPane lCircularPane = new CircularPane();
      //lCircularPane.setStyle("-fx-border-color:black;");
      lCircularPane.setShowDebug(lShowDebug);
      lCircularPane.setAnimationInterpolation(CircularPane::animateOverTheArc);
      for (int i = 0; i < 8; i++) {
        javafx.scene.shape.Rectangle c = new javafx.scene.shape.Rectangle(5 + (2*i), 5 + (2*i));
        lCircularPane.add(c);
      }
      lHBox.add(lCircularPane);
    }
   
    {
      CircularPane lCircularPane = new CircularPane();
      //lCircularPane.setStyle("-fx-border-color:black;");
      lCircularPane.setShowDebug(lShowDebug);
      lCircularPane.setAnimationInterpolation(CircularPane::animateFromTheOrigin);
      for (int i = 0; i < 8; i++) {
        javafx.scene.shape.Rectangle c = new javafx.scene.shape.Rectangle(5 + (2*i), 5 + (2*i));
        c.setRotate(45);
        lCircularPane.add(c);
      }
      lHBox.add(lCircularPane);
    }
   
   
    CircularPane lCircularPane = new CircularPane();
    {
      //lCircularPane.setStyle("-fx-border-color:black;");
      lCircularPane.setShowDebug(lShowDebug);
      lCircularPane.setAnimationInterpolation(CircularPane::animateFromTheOrigin);
//      lCircularPane.setAnimationInterpolation(CircularPane::animateOverTheArc);
      for (int i = 0; i < 10; i++) {
        javafx.scene.shape.Rectangle c = new javafx.scene.shape.Rectangle(20, 20);
        c.setRotate(i * 10);
        lCircularPane.add(c);
      }
      lHBox.add(lCircularPane);
    }
   
    Button lButton = new Button("out");
    lButton.setOnAction( (actionEvent) -> {
      lCircularPane.animateOut();
    });
    lCircularPane.setOnAnimateOutFinished( (event) -> {
      lCircularPane.setVisible(false);
      Platform.runLater(() -> {
        TestUtil.sleep(3000);
        lCircularPane.setVisible(true);
        lCircularPane.animateIn();
      });
    });
    lHBox.getChildren().add(lButton);
   
        // setup scene
    Scene scene = new Scene(lHBox);
    scene.getStylesheets().add(this.getClass().getName().replace(".", "/") + ".css");
   
        // create stage
        stage.setTitle(this.getClass().getSimpleName());
        stage.setScene(scene);
        stage.show()
  }
 
}

 
TOP

Related Classes of jfxtras.scene.layout.trial.CircularPaneTrail

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.