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

de.factoryfx.javafx.view.View Maven / Gradle / Ivy

package de.factoryfx.javafx.view;

import java.util.Optional;

import de.factoryfx.javafx.view.container.ViewsDisplayWidget;
import de.factoryfx.javafx.widget.Widget;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ObservableValue;
import javafx.scene.Node;
import javafx.scene.control.ScrollPane;

public class View implements Widget {

    private final SimpleStringProperty title = new SimpleStringProperty();

    private final Widget viewContent;
    private ViewsDisplayWidget viewsDisplayWidget;
    private boolean isShowing;
    private Optional closeListener = Optional.empty();

    public View(String title, ViewsDisplayWidget viewsDisplayWidget, Widget viewContent) {
        this.title.set(title);
        this.viewsDisplayWidget = viewsDisplayWidget;
        this.viewContent = viewContent;
    }

    public void close() {
        viewContent.closeNotifier();
        isShowing = false;
        viewsDisplayWidget.close(this);
        closeListener.ifPresent(Runnable::run);
    }

    @Override
    public Node createContent() {
        final ScrollPane scrollPane = new ScrollPane(viewContent.createContent());
        scrollPane.setFitToWidth(true);
        scrollPane.setFitToHeight(true);
        return scrollPane;
    }

    public boolean isShowing() {
        return isShowing;
    }

    public void setCloseListener(Runnable closeListener) {
        this.closeListener = Optional.of(closeListener);
    }

    public void show() {
        viewsDisplayWidget.show(this);
        isShowing = true;
    }

    public ObservableValue titleProperty() {
        return title;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy