|
- package de.uniluebeck.mi.projmi6.view;
-
- import javafx.animation.FadeTransition;
- import javafx.animation.Timeline;
- import javafx.animation.Transition;
- import javafx.beans.binding.Bindings;
- import javafx.beans.property.SimpleIntegerProperty;
- import javafx.geometry.Pos;
- import javafx.scene.control.Button;
- import javafx.scene.control.Label;
- import javafx.scene.image.Image;
- import javafx.scene.image.ImageView;
- import javafx.scene.layout.StackPane;
- import javafx.scene.paint.Color;
- import javafx.util.Duration;
-
- /**
- * Created by Johannes on 21/11/2015.
- */
- public class MessageIcon extends Button {
-
- private ImageView imageView;
-
- private Label messageCountLabel;
-
- private final SimpleIntegerProperty messageCount = new SimpleIntegerProperty(this, "messageCount", 0);
-
- FadeTransition transition;
-
- public MessageIcon(){
- imageView = new ImageView(new Image("message.png"));
- imageView.setFitHeight(30);
- imageView.setFitWidth(30);
- /* imageView.opacityProperty().bind(Bindings.createDoubleBinding(
- ()->messageCount.get()>0? 1.0 : 0.5, messageCount));*/
-
-
- messageCountLabel = new Label();
- messageCountLabel.textProperty().bind(messageCount.asString());
- StackPane.setAlignment(messageCountLabel, Pos.BOTTOM_RIGHT);
- messageCountLabel.setTextFill(Color.BLACK);
-
- this.disableProperty().bind(messageCount.lessThanOrEqualTo(0));
-
- StackPane graphic = new StackPane(imageView, messageCountLabel);
- this.setGraphic(graphic);
-
- initTransition();
-
- }
-
- private void initTransition(){
- transition = new FadeTransition(Duration.millis(500), imageView);
- transition.setFromValue(0.5);
- transition.setToValue(1.0);
- transition.setCycleCount(Timeline.INDEFINITE);
- transition.setAutoReverse(true);
- messageCount.addListener((observable, oldValue, newValue) -> {
- if(messageCount.get()>0){
- transition.play();
- }else{
- transition.stop();
-
- }
- });
- }
-
- public int getMessageCount() {
- return messageCount.get();
- }
-
- public SimpleIntegerProperty messageCountProperty() {
- return messageCount;
- }
-
- public void setMessageCount(int messageCount) {
- this.messageCount.set(messageCount);
- }
-
-
-
- }
|