mirror of
https://github.com/klmp200/PQT_Gestionnaire_vente_stock.git
synced 2024-12-22 23:41:09 +00:00
Module Client, packg "client.gui.modules" : ajout classes gui écran composition commandes (PRE-TEST)
This commit is contained in:
parent
29bd24ad65
commit
543e571e82
@ -0,0 +1,27 @@
|
||||
package com.pqt.client.gui.modules.sale_screen;
|
||||
|
||||
import com.pqt.client.gui.ressources.generics.IFXComponent;
|
||||
import com.pqt.client.module.account.AccountService;
|
||||
import com.pqt.client.module.sale.SaleService;
|
||||
import com.pqt.client.module.stock.StockService;
|
||||
import javafx.scene.layout.Pane;
|
||||
|
||||
public class SaleScreen implements IFXComponent {
|
||||
|
||||
private SaleScreenModel model;
|
||||
private SaleScreenController ctrl;
|
||||
private SaleScreenView view;
|
||||
|
||||
public SaleScreen(AccountService accountService, StockService stockService, SaleService saleService) {
|
||||
model = new SaleScreenModel(accountService, stockService, saleService);
|
||||
ctrl = new SaleScreenController(model);
|
||||
view = new SaleScreenView(ctrl);
|
||||
|
||||
ctrl.setView(view);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pane getPane() {
|
||||
return view.getPane();
|
||||
}
|
||||
}
|
@ -0,0 +1,169 @@
|
||||
package com.pqt.client.gui.modules.sale_screen;
|
||||
|
||||
import com.pqt.client.gui.modules.sale_screen.listeners.ISaleScreenModelListener;
|
||||
import com.pqt.client.gui.ressources.components.sale_validation_screen.listeners.ISaleValidationScreenListener;
|
||||
import com.pqt.client.gui.ressources.specifics.products.listeners.IStockComponentListener;
|
||||
import com.pqt.client.gui.ressources.generics.validators.listeners.IValidatorComponentListener;
|
||||
import com.pqt.client.gui.ressources.specifics.sale.listeners.ISaleComponentListener;
|
||||
import com.pqt.client.gui.ressources.strings.GUIStringTool;
|
||||
import com.pqt.core.entities.product.Product;
|
||||
import com.pqt.core.entities.sale.Sale;
|
||||
import com.pqt.core.entities.sale.SaleStatus;
|
||||
import com.pqt.core.entities.sale.SaleType;
|
||||
import com.pqt.core.entities.user_account.Account;
|
||||
import com.pqt.core.entities.user_account.AccountLevel;
|
||||
import javafx.event.Event;
|
||||
import javafx.scene.control.Alert;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
class SaleScreenController {
|
||||
|
||||
private SaleScreenModel model;
|
||||
private SaleScreenView view;
|
||||
|
||||
SaleScreenController(SaleScreenModel model) {
|
||||
this.model = model;
|
||||
this.model.addListener(new ISaleScreenModelListener() {
|
||||
@Override
|
||||
public void onSaleValidatedEvent() {
|
||||
SaleScreenController.this.onSaleValidationSuccess();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSaleNotValidatedEvent(SaleStatus status, Throwable cause) {
|
||||
SaleScreenController.this.onSaleValidationError(status, cause);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStockUpdatedEvent() {
|
||||
view.setProducts(model.getProductList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAccountListUpdatedEvent() {
|
||||
view.setAccounts(model.getAccountList());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void onSaleValidationSuccess() {
|
||||
view.setSaleStatus(SaleStatus.ACCEPTED);
|
||||
}
|
||||
|
||||
private void onSaleValidationError(SaleStatus status, Throwable cause) {
|
||||
view.setSaleStatus(status);
|
||||
}
|
||||
|
||||
void setView(SaleScreenView view) {
|
||||
this.view = view;
|
||||
}
|
||||
|
||||
void onAccountSelectedAsBeneficiary(Account account){
|
||||
model.setSaleBeneficiary(account);
|
||||
}
|
||||
|
||||
private Sale getCurrentSale(){
|
||||
return model.getCurrentSale();
|
||||
}
|
||||
|
||||
void updateView(){
|
||||
view.setProducts(fetchProductList());
|
||||
view.setSaleTypes(fetchSaleTypeList());
|
||||
view.setAccounts(fetchAccountList());
|
||||
|
||||
view.setSale(getCurrentSale());
|
||||
}
|
||||
|
||||
private List<Product> fetchProductList(){
|
||||
return model.getProductList();
|
||||
}
|
||||
private List<Account> fetchAccountList(){
|
||||
return model.getAccountList();
|
||||
}
|
||||
private List<SaleType> fetchSaleTypeList(){
|
||||
return model.getSaleTypeList();
|
||||
}
|
||||
|
||||
ISaleComponentListener getSaleDisplayerListener() {
|
||||
return new ISaleComponentListener() {
|
||||
@Override
|
||||
public void onComponentClickEvent(Event event, Product product) {
|
||||
model.removeProductFromSale(product);
|
||||
SaleScreenController.this.updateView();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRefreshContentRequestEvent() {}
|
||||
|
||||
@Override
|
||||
public void onContentClickEvent(Event event, Sale eventTarget) {}
|
||||
|
||||
@Override
|
||||
public void onAddContentRequestEvent() {}
|
||||
|
||||
@Override
|
||||
public void onRemoveContentRequestEvent(Sale content) {}
|
||||
|
||||
@Override
|
||||
public void onDetailContentRequestEvent(Sale content) {}
|
||||
};
|
||||
}
|
||||
|
||||
IStockComponentListener getStockDisplayerListener() {
|
||||
return new IStockComponentListener() {
|
||||
@Override
|
||||
public void onRefreshContentRequestEvent() {}
|
||||
|
||||
@Override
|
||||
public void onContentClickEvent(Event event, Product eventTarget) {
|
||||
model.addProductToSale(eventTarget);
|
||||
SaleScreenController.this.updateView();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAddContentRequestEvent() {}
|
||||
|
||||
@Override
|
||||
public void onRemoveContentRequestEvent(Product content) {}
|
||||
|
||||
@Override
|
||||
public void onDetailContentRequestEvent(Product content) {}
|
||||
};
|
||||
}
|
||||
|
||||
Account getDefaultAccount() {
|
||||
return new Account(" - ", null, AccountLevel.getLowest());
|
||||
}
|
||||
|
||||
IValidatorComponentListener getValidatorListener() {
|
||||
return new IValidatorComponentListener() {
|
||||
@Override
|
||||
public void onValidationEvent() {
|
||||
model.commitSale();
|
||||
view.switchToSaleValidationWaitingMode(model.getTempSaleId(), model.getCurrentSale());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCancelEvent() {
|
||||
model.clearSale();
|
||||
SaleScreenController.this.updateView();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
void onSaleTypeSelected(SaleType saleType) {
|
||||
model.setSaleType(saleType);
|
||||
}
|
||||
|
||||
ISaleValidationScreenListener getSaleValidationScreenListener() {
|
||||
return saleValidatedSuccessfully -> {
|
||||
view.switchToSaleCompositionMode();
|
||||
if(saleValidatedSuccessfully){
|
||||
model.clearSale();
|
||||
}
|
||||
|
||||
updateView();
|
||||
};
|
||||
}
|
||||
}
|
@ -0,0 +1,184 @@
|
||||
package com.pqt.client.gui.modules.sale_screen;
|
||||
|
||||
import com.pqt.client.gui.modules.sale_screen.listeners.ISaleScreenModelListener;
|
||||
import com.pqt.client.module.account.AccountService;
|
||||
import com.pqt.client.module.account.listeners.IAccountListener;
|
||||
import com.pqt.client.module.sale.SaleBuilder;
|
||||
import com.pqt.client.module.sale.SaleService;
|
||||
import com.pqt.client.module.sale.listeners.ISaleListener;
|
||||
import com.pqt.client.module.stock.Listeners.IStockListener;
|
||||
import com.pqt.client.module.stock.StockService;
|
||||
import com.pqt.core.entities.product.Product;
|
||||
import com.pqt.core.entities.sale.Sale;
|
||||
import com.pqt.core.entities.sale.SaleStatus;
|
||||
import com.pqt.core.entities.sale.SaleType;
|
||||
import com.pqt.core.entities.user_account.Account;
|
||||
|
||||
import javax.swing.event.EventListenerList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
class SaleScreenModel {
|
||||
|
||||
private EventListenerList listeners;
|
||||
|
||||
private AccountService accountService;
|
||||
private StockService stockService;
|
||||
private SaleService saleService;
|
||||
|
||||
private SaleBuilder currentSaleBuilder;
|
||||
private long tempSaleId;
|
||||
|
||||
SaleScreenModel(AccountService accountService, StockService stockService, SaleService saleService) {
|
||||
this.accountService = accountService;
|
||||
this.stockService = stockService;
|
||||
this.saleService = saleService;
|
||||
|
||||
saleService.addListener(new ISaleListener() {
|
||||
@Override
|
||||
public void onSaleValidationSuccess(long saleId) {
|
||||
if(saleId == SaleScreenModel.this.tempSaleId){
|
||||
SaleScreenModel.this.fireSaleValidatedEvent();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSaleValidationError(long saleId, Throwable cause) {
|
||||
if(saleId == SaleScreenModel.this.tempSaleId){
|
||||
SaleScreenModel.this.fireSaleNotValidatedEvent(SaleStatus.ABORTED, cause);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSaleValidationRefused(long saleId, Throwable cause) {
|
||||
if(saleId == SaleScreenModel.this.tempSaleId){
|
||||
SaleScreenModel.this.fireSaleNotValidatedEvent(SaleStatus.REFUSED, cause);
|
||||
}
|
||||
}
|
||||
});
|
||||
stockService.addListener(new IStockListener() {
|
||||
@Override
|
||||
public void onGetProductListSuccessEvent() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGetProductListErrorEvent(Throwable cause) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGetProductListRefusedEvent(Throwable cause) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onProductListUpdateSuccessEvent(long id) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onProductListUpdateErrorEvent(long id, Throwable cause) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onProductListUpdateRefusedEvent(long id, Throwable cause) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onProductListChangedEvent() {
|
||||
fireStockUpdatedEvent();
|
||||
}
|
||||
});
|
||||
accountService.addListener(new IAccountListener() {
|
||||
@Override
|
||||
public void onAccountStatusChangedEvent(boolean status) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAccountListChangedEvent() {
|
||||
fireAccountListUpdatedEvent();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void fireSaleValidatedEvent() {
|
||||
Arrays.stream(listeners.getListeners(ISaleScreenModelListener.class))
|
||||
.forEach(ISaleScreenModelListener::onSaleValidatedEvent);
|
||||
}
|
||||
|
||||
private void fireSaleNotValidatedEvent(SaleStatus status, Throwable cause) {
|
||||
Arrays.stream(listeners.getListeners(ISaleScreenModelListener.class))
|
||||
.forEach(l->l.onSaleNotValidatedEvent(status, cause));
|
||||
}
|
||||
|
||||
private void fireStockUpdatedEvent(){
|
||||
Arrays.stream(listeners.getListeners(ISaleScreenModelListener.class))
|
||||
.forEach(ISaleScreenModelListener::onStockUpdatedEvent);
|
||||
}
|
||||
|
||||
private void fireAccountListUpdatedEvent(){
|
||||
Arrays.stream(listeners.getListeners(ISaleScreenModelListener.class))
|
||||
.forEach(ISaleScreenModelListener::onAccountListUpdatedEvent);
|
||||
}
|
||||
|
||||
List<Account> getAccountList() {
|
||||
return accountService.getAllAccounts();
|
||||
}
|
||||
|
||||
List<SaleType> getSaleTypeList() {
|
||||
return saleService.getSaleTypes();
|
||||
}
|
||||
|
||||
Sale getCurrentSale() {
|
||||
return currentSaleBuilder.build();
|
||||
}
|
||||
|
||||
List<Product> getProductList() {
|
||||
return stockService.getProducts().stream().filter(Product::isSellable).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
void clearSale() {
|
||||
currentSaleBuilder = saleService.getNewSaleBuilder();
|
||||
currentSaleBuilder.orderedBy(accountService.getCurrentAccount());
|
||||
currentSaleBuilder.saleType(SaleType.CASH);
|
||||
|
||||
tempSaleId = -1;
|
||||
}
|
||||
|
||||
void commitSale() {
|
||||
tempSaleId = saleService.commitSale(currentSaleBuilder);
|
||||
}
|
||||
|
||||
long getTempSaleId(){
|
||||
return tempSaleId;
|
||||
}
|
||||
|
||||
void addProductToSale(Product product) {
|
||||
currentSaleBuilder.addProduct(product);
|
||||
}
|
||||
|
||||
void removeProductFromSale(Product product) {
|
||||
currentSaleBuilder.removeProduct(product);
|
||||
}
|
||||
|
||||
void setSaleType(SaleType saleType) {
|
||||
currentSaleBuilder.saleType(saleType);
|
||||
}
|
||||
|
||||
void setSaleBeneficiary(Account saleBeneficiary) {
|
||||
currentSaleBuilder.orderedFor(saleBeneficiary);
|
||||
}
|
||||
|
||||
void addListener(ISaleScreenModelListener listener){
|
||||
listeners.add(ISaleScreenModelListener.class, listener);
|
||||
}
|
||||
|
||||
void removeListener(ISaleScreenModelListener listener){
|
||||
listeners.remove(ISaleScreenModelListener.class, listener);
|
||||
}
|
||||
}
|
@ -0,0 +1,215 @@
|
||||
package com.pqt.client.gui.modules.sale_screen;
|
||||
|
||||
import com.pqt.client.gui.ressources.components.sale_validation_screen.SaleValidationScreen;
|
||||
import com.pqt.client.gui.ressources.components.CommandComposerSaleDisplayer;
|
||||
import com.pqt.client.gui.ressources.components.SimpleValidator;
|
||||
import com.pqt.client.gui.ressources.css.GUICssTool;
|
||||
import com.pqt.client.gui.ressources.generics.IFXComponent;
|
||||
import com.pqt.client.gui.ressources.strings.GUIStringTool;
|
||||
import com.pqt.client.gui.ressources.components.CategoryTabStockDisplayer;
|
||||
import com.pqt.core.entities.product.Product;
|
||||
import com.pqt.core.entities.sale.Sale;
|
||||
import com.pqt.core.entities.sale.SaleStatus;
|
||||
import com.pqt.core.entities.sale.SaleType;
|
||||
import com.pqt.core.entities.user_account.Account;
|
||||
import javafx.application.Platform;
|
||||
|
||||
import javafx.scene.Node;
|
||||
import javafx.scene.control.*;
|
||||
import javafx.scene.layout.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
class SaleScreenView implements IFXComponent {
|
||||
|
||||
private SaleScreenController ctrl;
|
||||
|
||||
private SaleValidationScreen saleValidationScreen;
|
||||
private StackPane mainPane;
|
||||
private BorderPane mainPaneContent;
|
||||
|
||||
private CategoryTabStockDisplayer stockDisplayer;
|
||||
private CommandComposerSaleDisplayer saleDisplayer;
|
||||
private TextField saleMakerAccountDisplayer;
|
||||
private ChoiceBox<Account> saleBeneficiaryAccountDisplayer;
|
||||
private ChoiceBox<SaleType> saleTypeDisplayer;
|
||||
private TextField salePriceDisplayer;
|
||||
|
||||
SaleScreenView(SaleScreenController ctrl) {
|
||||
this.ctrl = ctrl;
|
||||
initGui();
|
||||
}
|
||||
|
||||
private void initGui() {
|
||||
mainPane = new StackPane();
|
||||
|
||||
mainPaneContent = new BorderPane();
|
||||
|
||||
/*
|
||||
-----------------------CENTER PANE-----------------------
|
||||
*/
|
||||
{
|
||||
mainPane.getChildren().add(mainPaneContent);
|
||||
mainPaneContent.prefWidthProperty().bind(mainPane.widthProperty());
|
||||
mainPaneContent.prefHeightProperty().bind(mainPane.heightProperty());
|
||||
|
||||
stockDisplayer = new CategoryTabStockDisplayer();
|
||||
stockDisplayer.addListener(ctrl.getStockDisplayerListener());
|
||||
|
||||
saleDisplayer = new CommandComposerSaleDisplayer();
|
||||
saleDisplayer.addListener(ctrl.getSaleDisplayerListener());
|
||||
|
||||
HBox mainContentCenterPane = new HBox();
|
||||
mainContentCenterPane.getChildren().addAll(stockDisplayer.getPane(), saleDisplayer.getPane());
|
||||
mainContentCenterPane.setFillHeight(true);
|
||||
stockDisplayer.getPane().prefWidthProperty().bind(mainContentCenterPane.widthProperty().divide(2));
|
||||
saleDisplayer.getPane().prefWidthProperty().bind(mainContentCenterPane.widthProperty().divide(2));
|
||||
|
||||
mainPaneContent.setCenter(mainContentCenterPane);
|
||||
}
|
||||
/*
|
||||
-----------------------BOTTOM PANE-----------------------
|
||||
*/
|
||||
{
|
||||
AnchorPane mainContentBottomPane = new AnchorPane();
|
||||
// Sale secondary data configuration (author, beneficiary, payment type, etc...
|
||||
{
|
||||
saleMakerAccountDisplayer = new TextField();
|
||||
saleMakerAccountDisplayer.setEditable(false);
|
||||
saleMakerAccountDisplayer.setPromptText(GUIStringTool.getSaleMakerTextFieldPromptText());
|
||||
|
||||
saleBeneficiaryAccountDisplayer = new ChoiceBox<>();
|
||||
saleBeneficiaryAccountDisplayer.setConverter(GUIStringTool.getAccountStringConverter());
|
||||
saleBeneficiaryAccountDisplayer.getSelectionModel()
|
||||
.selectedItemProperty()
|
||||
.addListener((observable, oldElem, newElem) -> ctrl.onAccountSelectedAsBeneficiary(newElem));
|
||||
|
||||
saleTypeDisplayer = new ChoiceBox<>();
|
||||
saleTypeDisplayer.setConverter(GUIStringTool.getSaleTypeStringConverter());
|
||||
saleTypeDisplayer.getSelectionModel()
|
||||
.selectedItemProperty()
|
||||
.addListener((observable, oldElem, newElem) -> ctrl.onSaleTypeSelected(newElem));
|
||||
|
||||
salePriceDisplayer = new TextField();
|
||||
salePriceDisplayer.setEditable(false);
|
||||
salePriceDisplayer.setPromptText(GUIStringTool.getSalePriceTextFieldPromptText());
|
||||
|
||||
|
||||
GridPane mainContentBottomLeftPane = new GridPane();
|
||||
mainContentBottomLeftPane.add(new Label(GUIStringTool.getSaleMakerTextFieldLabel()), 0, 0);
|
||||
mainContentBottomLeftPane.add(saleMakerAccountDisplayer, 1, 0);
|
||||
mainContentBottomLeftPane.add(new Label(GUIStringTool.getSaleBeneficiaryTextFieldLabel()), 0, 1);
|
||||
mainContentBottomLeftPane.add(saleBeneficiaryAccountDisplayer, 1, 1);
|
||||
mainContentBottomLeftPane.add(new Label(GUIStringTool.getSaleTypeTextFieldLabel()), 0, 2);
|
||||
mainContentBottomLeftPane.add(saleTypeDisplayer, 1, 2);
|
||||
mainContentBottomLeftPane.add(new Label(GUIStringTool.getSalePriceTextFieldLabel()), 0, 3);
|
||||
mainContentBottomLeftPane.add(salePriceDisplayer, 1, 3);
|
||||
|
||||
mainContentBottomPane.getChildren().add(mainContentBottomLeftPane);
|
||||
AnchorPane.setBottomAnchor(mainContentBottomLeftPane, 0d);
|
||||
AnchorPane.setTopAnchor(mainContentBottomLeftPane, 0d);
|
||||
AnchorPane.setLeftAnchor(mainContentBottomLeftPane, 0d);
|
||||
}
|
||||
//Sale Validator
|
||||
{
|
||||
SimpleValidator validator = new SimpleValidator(true);
|
||||
validator.addListener(ctrl.getValidatorListener());
|
||||
|
||||
mainContentBottomPane.getChildren().add(validator.getPane());
|
||||
AnchorPane.setBottomAnchor(validator.getPane(), 0d);
|
||||
AnchorPane.setTopAnchor(validator.getPane(), 0d);
|
||||
AnchorPane.setRightAnchor(validator.getPane(), 0d);
|
||||
}
|
||||
mainPaneContent.setBottom(mainContentBottomPane);
|
||||
}
|
||||
/*
|
||||
------------------------MAIN PANE------------------------
|
||||
*/
|
||||
mainPane.getChildren().add(mainPaneContent);
|
||||
|
||||
/*
|
||||
-------------------------UPDATE--------------------------
|
||||
*/
|
||||
ctrl.updateView();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pane getPane() {
|
||||
return mainPane;
|
||||
}
|
||||
|
||||
void switchToSaleValidationWaitingMode(long saleId, Sale sale){
|
||||
boolean clearChildren = mainPane.getChildren().size()>1;
|
||||
|
||||
Pane greyIntermediaryPane = new Pane();
|
||||
greyIntermediaryPane.setId(GUICssTool.getGreyIntermediaryPaneCssId());
|
||||
|
||||
saleValidationScreen = new SaleValidationScreen(saleId, sale);
|
||||
saleValidationScreen.addListener(ctrl.getSaleValidationScreenListener());
|
||||
Platform.runLater(()->{
|
||||
if(clearChildren){
|
||||
mainPane.getChildren().clear();
|
||||
mainPane.getChildren().add(mainPaneContent);
|
||||
}
|
||||
|
||||
mainPane.getChildren().addAll(greyIntermediaryPane, saleValidationScreen.getPane());
|
||||
});
|
||||
}
|
||||
|
||||
void switchToSaleCompositionMode(){
|
||||
Node[] childrenToRemove = mainPane.getChildren()
|
||||
.stream()
|
||||
.filter(child->!child.equals(mainPaneContent))
|
||||
.collect(Collectors.toList())
|
||||
.toArray(new Node[]{});
|
||||
Platform.runLater(()->mainPane.getChildren().removeAll(childrenToRemove));
|
||||
}
|
||||
|
||||
void setProducts(List<Product> products) {
|
||||
stockDisplayer.display(products);
|
||||
}
|
||||
|
||||
void setSaleTypes(List<SaleType> saleTypes) {
|
||||
Platform.runLater(()->{
|
||||
saleTypeDisplayer.getItems().clear();
|
||||
saleTypeDisplayer.getItems().addAll(saleTypes);
|
||||
});
|
||||
}
|
||||
|
||||
void setAccounts(List<Account> accounts) {
|
||||
Platform.runLater(()->{
|
||||
saleBeneficiaryAccountDisplayer.getItems().clear();
|
||||
saleBeneficiaryAccountDisplayer.getItems().add(ctrl.getDefaultAccount());
|
||||
saleBeneficiaryAccountDisplayer.getItems().addAll(accounts);
|
||||
});
|
||||
}
|
||||
|
||||
void setSale(Sale sale) {
|
||||
saleDisplayer.display(sale);
|
||||
|
||||
String price = GUIStringTool.getPriceRenderer().render(sale.getTotalPrice());
|
||||
String currentAccount = GUIStringTool.getAccountStringConverter().toString(sale.getOrderedBy());
|
||||
|
||||
Platform.runLater(()->{
|
||||
salePriceDisplayer.setText(price);
|
||||
saleMakerAccountDisplayer.setText(currentAccount);
|
||||
|
||||
selectElement(saleTypeDisplayer, sale.getType());
|
||||
selectElement(saleBeneficiaryAccountDisplayer, sale.getOrderedFor());
|
||||
});
|
||||
}
|
||||
|
||||
private <T> void selectElement(ChoiceBox<T> choiceBox, T element){
|
||||
if(element!=null){
|
||||
if(!choiceBox.getItems().contains(element))
|
||||
choiceBox.getItems().add(element);
|
||||
choiceBox.getSelectionModel().select(element);
|
||||
}else
|
||||
choiceBox.getSelectionModel().clearSelection();
|
||||
}
|
||||
|
||||
void setSaleStatus(SaleStatus status){
|
||||
this.saleValidationScreen.setSaleStatus(status);
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package com.pqt.client.gui.modules.sale_screen.listeners;
|
||||
|
||||
import com.pqt.core.entities.sale.SaleStatus;
|
||||
|
||||
import java.util.EventListener;
|
||||
|
||||
public interface ISaleScreenModelListener extends EventListener {
|
||||
void onSaleValidatedEvent();
|
||||
void onSaleNotValidatedEvent(SaleStatus status, Throwable cause);
|
||||
void onStockUpdatedEvent();
|
||||
void onAccountListUpdatedEvent();
|
||||
}
|
Loading…
Reference in New Issue
Block a user