mirror of
https://github.com/klmp200/PQT_Gestionnaire_vente_stock.git
synced 2024-11-16 21:33:21 +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.modules.stock_screen.StockScreen;
|
||||||
import com.pqt.client.gui.ressources.components.generics.others.SideBar;
|
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.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.css.GUICssTool;
|
||||||
import com.pqt.client.gui.ressources.strings.GUIStringTool;
|
import com.pqt.client.gui.ressources.strings.GUIStringTool;
|
||||||
import com.pqt.client.module.account.AccountService;
|
import com.pqt.client.module.account.AccountService;
|
||||||
@ -38,6 +39,7 @@ public class Main extends Application{
|
|||||||
scene.getStylesheets().clear();
|
scene.getStylesheets().clear();
|
||||||
scene.getStylesheets().addAll(getClass().getResource(GUICssTool.getCssFilePath()).toExternalForm());
|
scene.getStylesheets().addAll(getClass().getResource(GUICssTool.getCssFilePath()).toExternalForm());
|
||||||
|
|
||||||
|
ToastFactory.init(primaryStage);
|
||||||
primaryStage.setTitle(GUIStringTool.getAppTitle());
|
primaryStage.setTitle(GUIStringTool.getAppTitle());
|
||||||
primaryStage.setScene(scene);
|
primaryStage.setScene(scene);
|
||||||
primaryStage.show();
|
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-padding: 5 5 5 5;
|
||||||
-fx-background-radius: 0;
|
-fx-background-radius: 0;
|
||||||
-fx-background-insets: 0 0 0 0, 0, 1, 2;
|
-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