package application; import application.colorThemes.Theme; import javafx.scene.image.ImageView; import javafx.scene.input.MouseButton; import javafx.scene.input.MouseEvent; import javafx.scene.paint.Color; import javafx.scene.shape.Circle; import javafx.scene.shape.Rectangle; import javafx.scene.text.Text; import java.awt.geom.Rectangle2D; /** * Created by tareq on 7/12/15. */ public class RadioButton extends Selectable { public RadioButton() { setUp(null); } public RadioButton(MaterialText sideText, double horizontalSpacing) { setUp(sideText); sideText.setLayoutX(20 + horizontalSpacing); sideText.setLayoutY(13); getChildren().add(sideText); } @Override void setUp(MaterialText sideText) { setPrefSize(30, 30); Circle baseCircle = new Circle(defaultRadius / 2); baseCircle.setStroke(new Color(0.6, 0.6, 0.6, 1)); baseCircle.setFill(Color.TRANSPARENT); baseCircle.setStrokeWidth(2f); baseCircle.setCenterX(defaultRadius / 2); baseCircle.setCenterY(defaultRadius / 2); Circle smallBaseCircle = new Circle(defaultRadius / 4); smallBaseCircle.setFill(new Color(0.6, 0.6, 0.6, 1)); smallBaseCircle.setVisible(false); smallBaseCircle.setCenterX(defaultRadius / 2); smallBaseCircle.setCenterY(defaultRadius / 2); Circle ripple = new Circle(7.5); ripple.setFill(Color.GRAY); ripple.setOpacity(0.2); ripple.setVisible(false); ripple.setCenterX(defaultRadius / 2); ripple.setCenterY(defaultRadius / 2); getChildren().addAll(baseCircle, smallBaseCircle, ripple); addEventHandler(MouseEvent.MOUSE_CLICKED, e -> { if (e.getButton() == MouseButton.PRIMARY) { if (!isSelected && animationFinished) { if (sideText != null) sideText.setFill(Color.web(Theme.BlueGreen.ACCENT_COLOR)); smallBaseCircle.setFill(Color.web(Theme.BlueGreen.ACCENT_COLOR)); baseCircle.setStroke(Color.web(Theme.BlueGreen.ACCENT_COLOR)); smallBaseCircle.setVisible(true); animateRipple(ripple, isSelected, 30); isSelected = !isSelected; } else if (animationFinished) { animateRipple(ripple, isSelected, 30); if (sideText != null) sideText.setFill(Color.BLACK); smallBaseCircle.setFill(new Color(0.6, 0.6, 0.6, 1)); baseCircle.setStroke(new Color(0.6, 0.6, 0.6, 1)); smallBaseCircle.setVisible(false); isSelected = !isSelected; } } }); } }