package kioskfx; import javafx.application.*; import javafx.beans.value.*; import javafx.event.*; import javafx.scene.*; import javafx.scene.control.*; import javafx.scene.paint.*; import javafx.stage.*; import javafx.animation.*; import javafx.util.*; import java.util.*; import javafx.scene.image.*; import javafx.scene.shape.*; import javafx.beans.property.*; import javafx.beans.value.*; import javafx.scene.image.*; import javafx.scene.input.*; import javafx.geometry.*; import javafx.scene.transform.*; import javafx.scene.effect.*; import javafx.scene.text.*; public class KiAction { private String title; private Node node; Text label; private SimpleDoubleProperty order; private ImageView imageView; private SimpleDoubleProperty height; private SimpleDoubleProperty width; private int size; //private double margin = 0; private KiJob onSelect; private SimpleDoubleProperty opacity; private SimpleObjectProperty<Color> itemColor; public KiAction() { title = "123"; itemColor = new SimpleObjectProperty<Color>(Color.web("#ffffff")); imageView = new ImageView(); order = new SimpleDoubleProperty(0); height = new SimpleDoubleProperty(70); width = new SimpleDoubleProperty(270); size = 67; opacity = new SimpleDoubleProperty(0.5); //margin = height.get() + 8; Group root = new Group(); label = new Text(); label.setText(title); //label.setFill(Color.web("#ffffff")); label.fillProperty().bind(itemColor); //label.setTextOrigin(VPos.TOP); //Font font = Font.loadFont(this.getClass().getResourceAsStream("font2.ttf"), 70); label.setFont(Font.loadFont(this.getClass().getResourceAsStream("font2.ttf"), size)); label.translateYProperty().bind(height.add(4).multiply(order).add(height)); //label.setTranslateX(margin); label.translateXProperty().bind(height.add(16)); imageView.translateYProperty().bind(height.add(4).multiply(order)); imageView.setPreserveRatio(true); imageView.setFitWidth(0); imageView.fitHeightProperty().bind(height); label.opacityProperty().bind(opacity); imageView.opacityProperty().bind(opacity); //margin=4+imageView.get.boundsInLocalProperty()..getBoundsInLocal().getWidth(); //.setFitHeight(height.get()); image(new Image(this.getClass().getResourceAsStream("item.png"))); Rectangle r = new Rectangle(); r.setFill(Color.web("#ffffff01")); r.setWidth(200); r.heightProperty().bind(height); r.translateYProperty().bind(height.add(4).multiply(order)); r.widthProperty().bind(width); root.getChildren().add(r); root.getChildren().add(imageView); root.getChildren().add(label); root.setOnMousePressed(new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent event) { if (onSelect != null) { //opacity.set(0.1); new KiTimeline().job(new KiJob() { @Override public void start() { opacity.set(0.1); } }).job(new KiJob() { @Override public void start() { setHover(); onSelect.start(); } }).duration(100).start(); } } }); onSelect = new KiJob(); root.hoverProperty().addListener(new ChangeListener<Boolean>() { @Override public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) { //adjust(); setHover(); } }); node = root; } private void setHover() { if (node.isHover()) { opacity.set(1.0); } else { opacity.set(0.5); } } public String title() { return title; } public KiAction onSelect(KiJob it) { onSelect = it; return this; } public KiAction height(SimpleDoubleProperty it) { height.bind(it); return this; } public KiAction itemColor(SimpleObjectProperty<Color> it) { itemColor.bind(it); return this; } public KiAction itemSize(int it) { size=it; label.setFont(Font.loadFont(this.getClass().getResourceAsStream("font2.ttf"), size)); return this; } public KiAction image(Image it) { //order.set(it); imageView.setImage(it); //glass.content(imageView); return this; } public KiAction title(String it) { this.title = it; label.setText(title); return this; } public KiAction order(int it) { this.order.set(it); return this; } public Node node() { return node; } }