/*
* Copyright (C) 2015-2017 PÂRIS Quentin
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package org.phoenicis.javafx.views.mainwindow.ui;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.control.ToggleButton;
/**
* This class represents a toggle button in the sidebar.
*/
public class LeftToggleButton extends ToggleButton {
/**
* The text shown in the button
*/
private final String name;
/**
* Constructor
*
* @param name The text to be shown in this toggle button
*/
public LeftToggleButton(String name) {
super(name);
this.name = name;
this.getStyleClass().add("leftButton");
this.setPrefWidth(Double.MAX_VALUE);
this.setAlignment(Pos.CENTER_LEFT);
this.setPadding(new Insets(2));
}
/**
* This method is called whenever the {@link LeftToggleButton} has been clicked.
* It is overriden to ensure that the button only fires an event ({@link javafx.event.ActionEvent} or {@link javafx.scene.input.MouseEvent})
* if it is either currently not selected or it isn't part of a {@link javafx.scene.control.ToggleGroup}.
*
* @see ToggleButton
*/
@Override
public void fire() {
/**
* Taken from:
* https://bitbucket.org/controlsfx/controlsfx/issues/84/segmented-button-control-clicking-on
*/
if (getToggleGroup() == null || !isSelected()) {
super.fire();
}
}
/**
* This method returns the shown text of this button.
*
* @return The currently shown text of this button.
*/
public String getName() {
return name;
}
}