All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sshtools.jajafx.Carousel Maven / Gradle / Ivy

The newest version!
package com.sshtools.jajafx;

import org.kordamp.ikonli.fontawesome5.FontAwesomeSolid;
import org.kordamp.ikonli.javafx.FontIcon;

import javafx.beans.binding.Bindings;
import javafx.beans.property.ObjectProperty;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Node;
import javafx.scene.control.Hyperlink;
import javafx.scene.layout.Pane;

public class Carousel extends Pane {
	private Flinger devices;
	private MaskedView mask;
	private Hyperlink scrollLeft;
	private Hyperlink scrollRight;

	public Carousel() {

		devices = new Flinger();
		devices.setMaxWidth(Double.MAX_VALUE);
		
//		hbox = new HBox();

		mask = new MaskedView(devices);

		scrollLeft = new Hyperlink();
		var leftIcon = new FontIcon(FontAwesomeSolid.CARET_LEFT);
		scrollLeft.setGraphic(leftIcon);
		leftIcon.getStyleClass().addAll("navigation-icon", "large-icon", "icon-accent");
		scrollLeft.visibleProperty().bind(Bindings.not(devices.leftOrUpDisableProperty()));
		scrollLeft.setOnAction((e) -> devices.slideLeftOrUp());
		scrollRight = new Hyperlink();
		var rightIcon = new FontIcon(FontAwesomeSolid.CARET_RIGHT);
		scrollRight.setGraphic(rightIcon);
		rightIcon.getStyleClass().addAll("navigation-icon", "large-icon", "icon-accent");
		scrollRight.visibleProperty().bind(Bindings.not(devices.rightOrDownDisableProperty()));
		scrollRight.setOnAction((e) -> devices.slideRightOrDown());

		getChildren().addAll(mask, scrollLeft, scrollRight);
	}

	public final Hyperlink getScrollLeft() {
		return scrollLeft;
	}

	public final Hyperlink getScrollRight() {
		return scrollRight;
	}

	public ObservableList getItems() {
		return devices.getContent().getChildren();
	}

	public final ObjectProperty> onActionProperty() {
		return devices.onActionProperty();
	}

	public final void setOnAction(EventHandler value) {
		devices.setOnAction(value);
	}

	@Override
	protected void layoutChildren() {
		super.layoutChildren();
		mask.setLayoutX(0);
		mask.setLayoutY(0);
		mask.resize(getWidth(), getHeight());
		scrollRight.setLayoutX(getWidth() - scrollRight.getWidth());
		scrollLeft.setLayoutY((getHeight() - scrollLeft.getHeight()) / 2f);
		scrollRight.setLayoutY((getHeight() - scrollRight.getHeight()) / 2f);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy