mirror of
https://github.com/klmp200/PQT_Gestionnaire_vente_stock.git
synced 2024-12-22 15:31:08 +00:00
Module client : ajout composant Toast + factory associée
This commit is contained in:
parent
517ac8bdeb
commit
11be8f0889
@ -6,6 +6,7 @@ import com.pqt.client.gui.modules.stat_screen.StatScreen;
|
||||
import com.pqt.client.gui.modules.stock_screen.StockScreen;
|
||||
import com.pqt.client.gui.ressources.components.generics.others.SideBar;
|
||||
import com.pqt.client.gui.ressources.components.generics.others.listeners.ISideBarListener;
|
||||
import com.pqt.client.gui.ressources.components.generics.toast.ToastFactory;
|
||||
import com.pqt.client.gui.ressources.css.GUICssTool;
|
||||
import com.pqt.client.gui.ressources.strings.GUIStringTool;
|
||||
import com.pqt.client.module.account.AccountService;
|
||||
@ -38,6 +39,7 @@ public class Main extends Application{
|
||||
scene.getStylesheets().clear();
|
||||
scene.getStylesheets().addAll(getClass().getResource(GUICssTool.getCssFilePath()).toExternalForm());
|
||||
|
||||
ToastFactory.init(primaryStage);
|
||||
primaryStage.setTitle(GUIStringTool.getAppTitle());
|
||||
primaryStage.setScene(scene);
|
||||
primaryStage.show();
|
||||
|
@ -0,0 +1,54 @@
|
||||
package com.pqt.client.gui.ressources.components.generics.toast;
|
||||
|
||||
import com.pqt.client.gui.ressources.css.GUICssTool;
|
||||
import javafx.animation.KeyFrame;
|
||||
import javafx.animation.KeyValue;
|
||||
import javafx.animation.Timeline;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.scene.layout.StackPane;
|
||||
import javafx.scene.paint.Color;
|
||||
import javafx.scene.text.Text;
|
||||
import javafx.stage.Stage;
|
||||
import javafx.stage.StageStyle;
|
||||
import javafx.util.Duration;
|
||||
|
||||
final class Toast {
|
||||
static void toast(Stage ownerStage, String toastMsg, int toastDelay, int fadeInDelay, int fadeOutDelay) {
|
||||
Stage toastStage = new Stage();
|
||||
toastStage.initOwner(ownerStage);
|
||||
toastStage.setResizable(false);
|
||||
toastStage.initStyle(StageStyle.TRANSPARENT);
|
||||
|
||||
Text text = new Text(toastMsg);
|
||||
text.getStyleClass().add("toast-text");
|
||||
|
||||
StackPane root = new StackPane(text);
|
||||
root.getStyleClass().add("toast-pane");
|
||||
root.setOpacity(0);
|
||||
|
||||
Scene scene = new Scene(root);
|
||||
scene.setFill(Color.TRANSPARENT);
|
||||
scene.getStylesheets().addAll(Toast.class.getResource(GUICssTool.getCssFilePath()).toExternalForm());
|
||||
toastStage.setScene(scene);
|
||||
toastStage.show();
|
||||
|
||||
Timeline fadeInTimeline = new Timeline();
|
||||
KeyFrame fadeInKey1 = new KeyFrame(Duration.millis(fadeInDelay), new KeyValue (toastStage.getScene().getRoot().opacityProperty(), 1));
|
||||
fadeInTimeline.getKeyFrames().add(fadeInKey1);
|
||||
fadeInTimeline.setOnFinished((ae) ->
|
||||
new Thread(() -> {
|
||||
try {
|
||||
Thread.sleep(toastDelay);
|
||||
}
|
||||
catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
Timeline fadeOutTimeline = new Timeline();
|
||||
KeyFrame fadeOutKey1 = new KeyFrame(Duration.millis(fadeOutDelay), new KeyValue (toastStage.getScene().getRoot().opacityProperty(), 0));
|
||||
fadeOutTimeline.getKeyFrames().add(fadeOutKey1);
|
||||
fadeOutTimeline.setOnFinished((aeb) -> toastStage.close());
|
||||
fadeOutTimeline.play();
|
||||
}).start());
|
||||
fadeInTimeline.play();
|
||||
}
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
package com.pqt.client.gui.ressources.components.generics.toast;
|
||||
|
||||
import javafx.stage.Stage;
|
||||
|
||||
public class ToastFactory {
|
||||
|
||||
private static ToastFactory INSTANCE = null;
|
||||
|
||||
private Stage stage;
|
||||
private int delay, fadeInDelay, fadeOutDelay;
|
||||
|
||||
private ToastFactory(Stage stage){
|
||||
this.stage = stage;
|
||||
delay = 3000;
|
||||
fadeInDelay = 250;
|
||||
fadeOutDelay = 250;
|
||||
}
|
||||
|
||||
public void setToastDelay(int msDelay){
|
||||
this.delay = msDelay;
|
||||
}
|
||||
|
||||
public void setToastFadeInDelay(int msDelay){
|
||||
this.fadeInDelay = msDelay;
|
||||
}
|
||||
|
||||
public void setToastFadeOutDelay(int msDelay){
|
||||
this.fadeOutDelay = msDelay;
|
||||
}
|
||||
|
||||
public void toast(String message){
|
||||
Toast.toast(stage, message, delay, fadeInDelay, fadeOutDelay);
|
||||
}
|
||||
|
||||
public static void init(Stage stage){
|
||||
INSTANCE = new ToastFactory(stage);
|
||||
}
|
||||
|
||||
public static boolean isInitialized(){
|
||||
return INSTANCE!=null;
|
||||
}
|
||||
|
||||
public static ToastFactory getINSTANCE(){
|
||||
return INSTANCE;
|
||||
}
|
||||
}
|
@ -231,4 +231,18 @@
|
||||
-fx-padding: 5 5 5 5;
|
||||
-fx-background-radius: 0;
|
||||
-fx-background-insets: 0 0 0 0, 0, 1, 2;
|
||||
|
||||
.toast-text{
|
||||
-fx-font: 50px "Impact";
|
||||
-fx-fill: whitesmoke;
|
||||
}
|
||||
|
||||
.toast-pane {
|
||||
-fx-background-radius: 10px;
|
||||
-fx-background-color: rgba(0, 0, 0, 0.4);
|
||||
-fx-border-width: 2px;
|
||||
-fx-border-color: whitesmoke;
|
||||
-fx-border-radius: 6px;
|
||||
-fx-padding: 25px;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user