mirror of
https://github.com/klmp200/PQT_Gestionnaire_vente_stock.git
synced 2024-11-16 21:33:21 +00:00
Module Client, packg GUI : ajout composants d'interface
This commit is contained in:
parent
6e0f3f625c
commit
5c1d71f733
@ -0,0 +1,113 @@
|
||||
package com.pqt.client.module.gui.ressources.components;
|
||||
|
||||
import com.pqt.client.module.gui.ressources.generics.displayers.IFXDisplayerComponent;
|
||||
import com.pqt.client.module.gui.ressources.specifics.products.listeners.IStockComponentListener;
|
||||
import com.pqt.client.module.gui.ressources.specifics.products.listeners.SimpleStockComponentFirerer;
|
||||
import com.pqt.client.module.gui.ressources.strings.GUIStringTool;
|
||||
import com.pqt.client.module.gui.ressources.strings.IObjectStringRenderer;
|
||||
import com.pqt.core.entities.product.Product;
|
||||
import javafx.application.Platform;
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.collections.ObservableList;
|
||||
import javafx.scene.control.*;
|
||||
import javafx.scene.input.KeyCode;
|
||||
import javafx.scene.layout.BorderPane;
|
||||
import javafx.scene.layout.Pane;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class CategoryTabStockDisplayer implements IFXDisplayerComponent<Collection<Product>, IStockComponentListener>{
|
||||
|
||||
private SimpleStockComponentFirerer firerer;
|
||||
private BorderPane mainPane;
|
||||
private TabPane tabPane;
|
||||
|
||||
public CategoryTabStockDisplayer() {
|
||||
init();
|
||||
firerer = new SimpleStockComponentFirerer();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void display(Collection<Product> content) {
|
||||
final ObservableList<Tab> tabs = FXCollections.emptyObservableList();
|
||||
if(content!=null){
|
||||
List<String> categories = content.stream().map(product->product.getCategory().getName()).distinct().collect(Collectors.toList());
|
||||
|
||||
for(String cat : categories){
|
||||
tabs.add(createCategoryTab(cat, content.stream().filter(p->p.getCategory().getName().equals(cat)).collect(Collectors.toList())));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Platform.runLater(()->{
|
||||
tabPane.getTabs().clear();
|
||||
tabPane.getTabs().addAll(tabs);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addListener(IStockComponentListener l) {
|
||||
firerer.addListener(l);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeListener(IStockComponentListener l) {
|
||||
firerer.removeListener(l);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pane getPane() {
|
||||
return mainPane;
|
||||
}
|
||||
|
||||
private void init(){
|
||||
mainPane = new BorderPane();
|
||||
Label title = new Label(GUIStringTool.getCategorytabStockDisplayerTitle());
|
||||
mainPane.setTop(title);
|
||||
|
||||
tabPane = new TabPane();
|
||||
mainPane.setCenter(tabPane);
|
||||
}
|
||||
|
||||
private Tab createCategoryTab(String categoryName, Collection<Product> products){
|
||||
Tab tab = new Tab(categoryName);
|
||||
tab.closableProperty().setValue(false);
|
||||
|
||||
ListView<Product> listView = new ListView<>();
|
||||
listView.setCellFactory(list->new ListCell<Product>(){
|
||||
|
||||
@Override
|
||||
protected void updateItem(Product item, boolean empty) {
|
||||
super.updateItem(item, empty);
|
||||
|
||||
if (empty || item == null) {
|
||||
setText(null);
|
||||
setGraphic(null);
|
||||
} else {
|
||||
setText(CategoryTabStockDisplayer.getProductRenderer().render(item));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
listView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
|
||||
listView.setEditable(false);
|
||||
listView.setOnMouseClicked(event->firerer.fireContentClickEvent(event, listView.getSelectionModel().getSelectedItem()));
|
||||
listView.setOnKeyTyped(event -> {
|
||||
if(event.getCode().equals(KeyCode.ENTER)){
|
||||
firerer.fireContentClickEvent(event, listView.getSelectionModel().getSelectedItem());
|
||||
event.consume();
|
||||
}
|
||||
});
|
||||
|
||||
listView.setItems(FXCollections.observableArrayList(products));
|
||||
|
||||
tab.setContent(listView);
|
||||
return tab;
|
||||
}
|
||||
|
||||
private static IObjectStringRenderer<Product> getProductRenderer(){
|
||||
return GUIStringTool.getProductStringRenderer();
|
||||
}
|
||||
}
|
@ -0,0 +1,85 @@
|
||||
package com.pqt.client.module.gui.ressources.components;
|
||||
|
||||
import com.pqt.client.module.gui.ressources.specifics.sale.IFXSaleDisplayerComponent;
|
||||
import com.pqt.client.module.gui.ressources.specifics.sale.listeners.ISaleComponentListener;
|
||||
import com.pqt.client.module.gui.ressources.specifics.sale.listeners.SimpleSaleComponentFirerer;
|
||||
import com.pqt.client.module.gui.ressources.strings.GUIStringTool;
|
||||
import com.pqt.core.entities.product.Product;
|
||||
import com.pqt.core.entities.sale.Sale;
|
||||
import javafx.application.Platform;
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.scene.control.*;
|
||||
import javafx.scene.input.KeyCode;
|
||||
import javafx.scene.layout.BorderPane;
|
||||
import javafx.scene.layout.Pane;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class CommandComposerSaleDisplayer implements IFXSaleDisplayerComponent {
|
||||
|
||||
private SimpleSaleComponentFirerer firerer;
|
||||
private BorderPane mainPane;
|
||||
private ListView<Product> listView;
|
||||
|
||||
private Sale sale;
|
||||
|
||||
public CommandComposerSaleDisplayer() {
|
||||
firerer = new SimpleSaleComponentFirerer();
|
||||
init();
|
||||
}
|
||||
|
||||
private void init() {
|
||||
mainPane = new BorderPane();
|
||||
Label title = new Label(GUIStringTool.getCommandComposerTitleTitle());
|
||||
mainPane.setTop(title);
|
||||
|
||||
listView = new ListView<>();
|
||||
listView.setCellFactory(list->new ListCell<Product>(){
|
||||
@Override
|
||||
protected void updateItem(Product item, boolean empty) {
|
||||
super.updateItem(item, empty);
|
||||
|
||||
if (empty || item == null) {
|
||||
setText(null);
|
||||
setGraphic(null);
|
||||
} else {
|
||||
setText(GUIStringTool.getSaleItemStringRenderer().render(item, sale.getProducts().get(item)));
|
||||
}
|
||||
}
|
||||
});
|
||||
listView.setEditable(false);
|
||||
listView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
|
||||
listView.setOnMouseClicked(event->firerer.fireComponentClickEvent(event, listView.getSelectionModel().getSelectedItem()));
|
||||
listView.setOnKeyTyped(event -> {
|
||||
if(event.getCode().equals(KeyCode.ENTER)){
|
||||
firerer.fireComponentClickEvent(event, listView.getSelectionModel().getSelectedItem());
|
||||
}
|
||||
});
|
||||
mainPane.setCenter(listView);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void display(Sale content) {
|
||||
if(content ==null)
|
||||
return;
|
||||
|
||||
this.sale = content;
|
||||
Platform.runLater(()->this.listView.setItems(FXCollections.observableList(new ArrayList<>(this.sale.getProducts().keySet()))));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addListener(ISaleComponentListener l) {
|
||||
firerer.addListener(l);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeListener(ISaleComponentListener l) {
|
||||
firerer.removeListener(l);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pane getPane() {
|
||||
return mainPane;
|
||||
}
|
||||
}
|
@ -0,0 +1,99 @@
|
||||
package com.pqt.client.module.gui.ressources.components;
|
||||
|
||||
import com.pqt.client.module.gui.ressources.generics.validators.IFXValidatorComponent;
|
||||
import com.pqt.client.module.gui.ressources.generics.validators.listeners.IValidatorComponentFirerer;
|
||||
import com.pqt.client.module.gui.ressources.generics.validators.listeners.IValidatorComponentListener;
|
||||
import com.pqt.client.module.gui.ressources.generics.validators.listeners.SimpleValidatorComponentFirerer;
|
||||
import com.pqt.client.module.gui.ressources.strings.GUIStringTool;
|
||||
import javafx.application.Platform;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.layout.HBox;
|
||||
import javafx.scene.layout.Pane;
|
||||
|
||||
public class SimpleValidator implements IFXValidatorComponent{
|
||||
|
||||
private final IValidatorComponentFirerer firerer;
|
||||
private Pane pane;
|
||||
private boolean askConfirmation;
|
||||
private Button validationButton, cancelButton;
|
||||
|
||||
public SimpleValidator() {
|
||||
this(false);
|
||||
}
|
||||
|
||||
public SimpleValidator(boolean askConfirmation) {
|
||||
firerer = new SimpleValidatorComponentFirerer();
|
||||
this.askConfirmation = askConfirmation;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addListener(IValidatorComponentListener l) {
|
||||
firerer.addListener(l);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeListener(IValidatorComponentListener l) {
|
||||
firerer.removeListener(l);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pane getPane() {
|
||||
if(pane == null)
|
||||
pane = createPane();
|
||||
return pane;
|
||||
}
|
||||
|
||||
private Pane createPane(){
|
||||
HBox hbox = new HBox();
|
||||
|
||||
validationButton = new Button(GUIStringTool.getValidationButtonLabel());
|
||||
validationButton.setOnMouseClicked(event->{
|
||||
getValidationButtonProcess().process();
|
||||
});
|
||||
hbox.getChildren().add(validationButton);
|
||||
|
||||
cancelButton = new Button(GUIStringTool.getCancelButtonLabel());
|
||||
cancelButton.setOnMouseClicked(event->{
|
||||
getCancelButtonProcess().process();
|
||||
});
|
||||
hbox.getChildren().add(cancelButton);
|
||||
|
||||
return hbox;
|
||||
}
|
||||
|
||||
private IButtonProcess getValidationButtonProcess(){
|
||||
return ()->{
|
||||
if(validationButton.getText().equals(GUIStringTool.getValidationButtonLabel())){
|
||||
if(askConfirmation)
|
||||
Platform.runLater(()->validationButton.setText(GUIStringTool.getConfirmationValidationButtonLabel()));
|
||||
else
|
||||
firerer.fireValidationEvent();
|
||||
}else{
|
||||
if(validationButton.getText().equals(GUIStringTool.getConfirmationValidationButtonLabel()))
|
||||
firerer.fireValidationEvent();
|
||||
Platform.runLater(()->validationButton.setText(GUIStringTool.getValidationButtonLabel()));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private IButtonProcess getCancelButtonProcess(){
|
||||
return ()->{
|
||||
if(cancelButton.getText().equals(GUIStringTool.getCancelButtonLabel())){
|
||||
if(askConfirmation)
|
||||
Platform.runLater(()->cancelButton.setText(GUIStringTool.getConfirmationCancelButtonLabel()));
|
||||
else
|
||||
firerer.fireCancelEvent();
|
||||
}else{
|
||||
Platform.runLater(()->cancelButton.setText(GUIStringTool.getCancelButtonLabel()));
|
||||
firerer.fireCancelEvent();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
||||
private interface IButtonProcess{
|
||||
void process();
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user