Package org.jrebirth.af.showcase.fxml.ui.main

Source Code of org.jrebirth.af.showcase.fxml.ui.main.FXMLShowCaseView$PersistentButtonToggleGroup

package org.jrebirth.af.showcase.fxml.ui.main;

import javafx.collections.ListChangeListener;
import javafx.event.EventHandler;
import javafx.scene.control.Toggle;
import javafx.scene.control.ToggleButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.FlowPaneBuilder;

import org.jrebirth.af.core.exception.CoreException;
import org.jrebirth.af.core.ui.AbstractView;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* The class <strong>SampleView</strong>.
*
* @author
*/
public final class FXMLShowCaseView extends AbstractView<FXMLShowCaseModel, BorderPane, FXMLShowCaseController> {

    /** The class logger. */
    private static final Logger LOGGER = LoggerFactory.getLogger(FXMLShowCaseView.class);

    private ToggleButton showEmbedded;

    private ToggleButton showStandalone;

    private ToggleButton showHybrid;

    private ToggleButton showIncluded;

    /**
     * Default Constructor.
     *
     * @param model the controls view model
     *
     * @throws CoreException if build fails
     */
    public FXMLShowCaseView(final FXMLShowCaseModel model) throws CoreException {
        super(model);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    protected void initView() {
        this.showEmbedded = new ToggleButton("Embedded");
        this.showStandalone = new ToggleButton("Standalone");
        this.showHybrid = new ToggleButton("Hybrid");
        this.showIncluded = new ToggleButton("Included");

        final ToggleGroup group = new PersistentButtonToggleGroup();
        group.getToggles().addAll(this.showEmbedded, this.showStandalone, this.showHybrid, this.showIncluded);

        getRootNode().setTop(FlowPaneBuilder.create()
                .children(this.showEmbedded, this.showStandalone, this.showIncluded, this.showHybrid)
                .build());

    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void start() {
        LOGGER.debug("Start the View and fire the first tab");
        this.showEmbedded.fire();
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void reload() {
        LOGGER.debug("Reload the Sample View");
        // Custom code to process when the view is displayed the 1+n time
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void hide() {
        LOGGER.debug("Hide the Sample View");
        // Custom code to process when the view is hidden
    }

    ToggleButton getShowIncluded() {
        return this.showIncluded;
    }

    ToggleButton getShowEmbedded() {
        return this.showEmbedded;
    }

    ToggleButton getShowHybrid() {
        return this.showHybrid;
    }

    ToggleButton getShowStandalone() {
        return this.showStandalone;
    }

    private class PersistentButtonToggleGroup extends ToggleGroup {

        public PersistentButtonToggleGroup() {
            super();
            getToggles().addListener(new ListChangeListener<Toggle>() {
                @Override
                public void onChanged(final Change<? extends Toggle> c) {
                    while (c.next()) {
                        for (final Toggle addedToggle : c.getAddedSubList()) {
                            ((ToggleButton) addedToggle).addEventFilter(MouseEvent.MOUSE_RELEASED, new EventHandler<MouseEvent>() {
                                @Override
                                public void handle(final MouseEvent mouseEvent) {
                                    if (addedToggle.equals(getSelectedToggle())) {
                                        mouseEvent.consume();
                                    }
                                }
                            });
                        }
                    }
                }
            });
        }
    }

}
TOP

Related Classes of org.jrebirth.af.showcase.fxml.ui.main.FXMLShowCaseView$PersistentButtonToggleGroup

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.