Revert "[CLIENT] #16 : ProductManagerScreen : modification de l'update des données; certains champs et boutons sont désormais bloqué dans certaines conditions; Correction potentielle NPE durant le check de faisabilité du produit"

This reverts commit c8832f6f35.
This commit is contained in:
Notmoo-PC\Notmoo
2018-01-24 21:56:11 +01:00
parent c8832f6f35
commit 32d0f40145
4 changed files with 30 additions and 134 deletions

View File

@ -21,7 +21,6 @@ class ProductManagerScreenController {
void setView(ProductManagerScreenView view){
this.view = view;
view.setCategoryCollection(model.getCategoryCollection());
}
ChangeListener<? super Product> getProductComponentSelectionListener() {
@ -37,10 +36,9 @@ class ProductManagerScreenController {
}
void updateView() {
//view.setCategoryCollection(model.getCategoryCollection());
view.setProduct(model.getActualProductState());
view.setCategoryCollection(model.getCategoryCollection());
view.setProductCollection(model.getEligibleComponentList());
view.updateGuiLocks();
}
IValidatorComponentListener getValidatorListener() {
@ -65,46 +63,32 @@ class ProductManagerScreenController {
listenerList.remove(IValidatorComponentListener.class, l);
}
boolean lockAmountRemainingfield(){
return !model.getActualProductState().getComponents().isEmpty();
}
boolean lockValidationButton(){
return !model.isProductCreationPossible();
}
boolean isProductHighlighted(Product product) {
return model.getActualProductState().getComponents().contains(product);
}
void onNameChanged(String newVal) {
void onNameChanged(String oldVal, String newVal) {
model.changeName(newVal);
updateView();
}
void onPriceChanged(double newVal) {
void onPriceChanged(double oldVal, double newVal) {
model.changePrice(newVal);
updateView();
}
void onCategoryChanged(Category newVal) {
void onCategoryChanged(Category oldVal, Category newVal) {
model.changeCategory(newVal);
view.updateGuiLocks();
}
void onAmountRemainingChanged(int newVal) {
void onAmountRemainingChanged(int oldVal, int newVal) {
model.changeAmountRemaining(newVal);
updateView();
}
void onAmountSoldChanged(int newVal) {
void onAmountSoldChanged(int oldVal, int newVal) {
model.changeAmountSold(newVal);
updateView();
}
void onSellableStateChanged(boolean newVal) {
void onSellableStateChanged(boolean oldVal, boolean newVal) {
model.setSellable(newVal);
updateView();
}
public void delete() {

View File

@ -39,7 +39,6 @@ class ProductManagerScreenModel {
boolean isProductCreationPossible() {
return (initialData==null || !areProductsEqual(initialData, currentData))
&& currentData.getName() != null
&& !currentData.getName().isEmpty()
&& currentData.getCategory()!=null
&& currentData.getPrice()>=0;

View File

@ -32,7 +32,6 @@ class ProductManagerScreenView implements IFXComponent {
private ComboBox<Category> productCategoryComboBox;
private CheckBox productSellableCheckBox;
private ListView<Product> productComponentsListView;
private SimpleValidator validator;
ProductManagerScreenView(ProductManagerScreenController ctrl) {
this.ctrl = ctrl;
@ -53,69 +52,54 @@ class ProductManagerScreenView implements IFXComponent {
Label productNameLabel = new Label(GUIStringTool.getProductNameLabel());
productNameTextField = new TextField();
productNameTextField.focusedProperty().addListener((obs, oldVal, newVal)->{
if(!newVal)
ctrl.onNameChanged(productNameTextField.getText());
});
productNameTextField.textProperty().addListener((obs, oldVal, newVal)->ctrl.onNameChanged(oldVal,newVal));
addLineToGrid(mainPaneCenterContent, productNameLabel, productNameTextField);
Label productCategoryLabel = new Label(GUIStringTool.getProductCategoryLabel());
productCategoryComboBox = new ComboBox<>();
productCategoryComboBox.setEditable(true);
productCategoryComboBox.setConverter(GUIStringTool.getCategoryStringConverter());
productCategoryComboBox.valueProperty().addListener((obs, oldVal, newVal)->{
ctrl.onCategoryChanged(newVal);
});
productCategoryComboBox.valueProperty().addListener((obs, oldVal, newVal)->ctrl.onCategoryChanged(oldVal, newVal));
addLineToGrid(mainPaneCenterContent, productCategoryLabel, productCategoryComboBox);
Label productAmountRemainingLabel = new Label(GUIStringTool.getProductAmountRemainingLabel());
productAmountRemainingTextField = getNumberOnlyTextField(intFormat);
productAmountRemainingTextField.focusedProperty().addListener((obs, oldVal, newVal)->{
if(!newVal) {
try {
int newInt = productAmountRemainingTextField.getText().isEmpty() ?
0 :
Integer.parseInt(productAmountRemainingTextField.getText());
ctrl.onAmountRemainingChanged(newInt);
} catch (NumberFormatException e) {
e.printStackTrace();
}
productAmountRemainingTextField.textProperty().addListener((obs, oldVal, newVal)->{
try{
int oldInt = oldVal.isEmpty()?0:Integer.parseInt(oldVal);
int newInt = newVal.isEmpty()?0:Integer.parseInt(newVal);
ctrl.onAmountRemainingChanged(oldInt, newInt);
}catch(NumberFormatException e){
e.printStackTrace();
}
});
addLineToGrid(mainPaneCenterContent, productAmountRemainingLabel, productAmountRemainingTextField);
Label productAmountSoldLabel = new Label(GUIStringTool.getProductAmountSoldLabel());
productAmountSoldTextField = getNumberOnlyTextField(intFormat);
productAmountSoldTextField.focusedProperty().addListener((obs, oldVal, newVal)->{
if(!newVal) {
try {
int newInt = productAmountSoldTextField.getText().isEmpty() ?
0 :
Integer.parseInt(productAmountSoldTextField.getText());
ctrl.onAmountSoldChanged(newInt);
} catch (NumberFormatException e) {
e.printStackTrace();
}
productAmountSoldTextField.textProperty().addListener((obs, oldVal, newVal)->{
try{
int oldInt = oldVal.isEmpty()?0:Integer.parseInt(oldVal);
int newInt = newVal.isEmpty()?0:Integer.parseInt(newVal);
ctrl.onAmountSoldChanged(oldInt, newInt);
}catch(NumberFormatException e){
e.printStackTrace();
}
});
addLineToGrid(mainPaneCenterContent, productAmountSoldLabel, productAmountSoldTextField);
Label productSellableLabel = new Label(GUIStringTool.getProductSellableLabel());
productSellableCheckBox = new CheckBox();
productSellableCheckBox.selectedProperty().addListener((obs, oldVal, newVal)->ctrl.onSellableStateChanged(newVal));
productSellableCheckBox.selectedProperty().addListener((obs, oldVal, newVal)->ctrl.onSellableStateChanged(oldVal,newVal));
addLineToGrid(mainPaneCenterContent, productSellableLabel, productSellableCheckBox);
Label productPriceLabel = new Label(GUIStringTool.getProductPriceLabel());
productPriceTextField = getNumberOnlyTextField(priceFormat);
productPriceTextField.focusedProperty().addListener((obs, oldVal, newVal)->{
if(!newVal) {
try {
ctrl.onPriceChanged((productPriceTextField.getText().isEmpty() ?
-1 :
Double.parseDouble(productPriceTextField.getText())));
} catch (NumberFormatException e) {
e.printStackTrace();
}
productPriceTextField.textProperty().addListener((obs, oldVal, newVal)->{
try{
ctrl.onPriceChanged((oldVal.isEmpty()?-1:Double.parseDouble(oldVal)), (newVal.isEmpty()?-1:Double.parseDouble(newVal)));
}catch(NumberFormatException e){
e.printStackTrace();
}
});
addLineToGrid(mainPaneCenterContent, productPriceLabel, productPriceTextField);
@ -163,7 +147,7 @@ class ProductManagerScreenView implements IFXComponent {
HBox mainPaneBottomContent = new HBox();
HBox separator = new HBox();
validator = new SimpleValidator();
SimpleValidator validator = new SimpleValidator();
validator.addListener(ctrl.getValidatorListener());
mainPaneBottomContent.getChildren().addAll(separator, validator.getPane());
HBox.setHgrow(separator, Priority.ALWAYS);
@ -225,14 +209,6 @@ class ProductManagerScreenView implements IFXComponent {
productComponentsListView.getItems().addAll(productCollection);
});
}
void updateGuiLocks(){
Platform.runLater(()->{
productAmountRemainingTextField.setDisable(ctrl.lockAmountRemainingfield());
validator.setValidationButtonEnable(!ctrl.lockValidationButton());
});
}
public void delete() {
ctrl = null;
}