package com.faforever.client.notification; import com.faforever.client.notification.Action.ActionCallback; import javafx.scene.image.Image; import org.jetbrains.annotations.NotNull; import java.util.Objects; /** * A notification that is displayed for a short amount of time, or until the user the user performs a suggested actionCallback * or dismisses it. The notification consist of a text, an optional image, an optional actionCallback and is always * rendered with a close button. The actionCallback is executed when the user clicks on the notification. */ public class TransientNotification implements Comparable<TransientNotification> { private final String title; private final String text; private final Image image; private final ActionCallback actionCallback; public TransientNotification(String title, String text) { this(title, text, null, null); } public TransientNotification(String title, String text, Image image, ActionCallback actionCallback) { this.title = title; this.text = text; this.image = image; this.actionCallback = actionCallback; } public TransientNotification(String title, String text, Image image) { this(title, text, image, null); } public String getTitle() { return title; } public String getText() { return text; } public Image getImage() { return image; } public ActionCallback getActionCallback() { return actionCallback; } @Override public int compareTo(@NotNull TransientNotification o) { return text.compareTo(o.text); } @Override public int hashCode() { return Objects.hash(title, text, image, actionCallback); } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } TransientNotification that = (TransientNotification) o; return Objects.equals(title, that.title) && Objects.equals(text, that.text) && Objects.equals(image, that.image) && Objects.equals(actionCallback, that.actionCallback); } }