Advertisement
Guest User

Untitled

a guest
Oct 19th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.26 KB | None | 0 0
  1. /*
  2.  * To change this license header, choose License Headers in Project Properties.
  3.  * To change this template file, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */
  6. package pkgController;
  7.  
  8. import java.math.BigDecimal;
  9. import java.net.URL;
  10. import java.util.Date;
  11. import java.util.ResourceBundle;
  12. import javafx.beans.value.ChangeListener;
  13. import javafx.beans.value.ObservableValue;
  14. import javafx.collections.FXCollections;
  15. import javafx.collections.ObservableList;
  16. import javafx.event.ActionEvent;
  17. import javafx.fxml.FXML;
  18. import javafx.fxml.Initializable;
  19. import javafx.scene.control.Button;
  20. import javafx.scene.control.DatePicker;
  21. import javafx.scene.control.Label;
  22. import javafx.scene.control.ListView;
  23. import javafx.scene.control.MenuItem;
  24. import javafx.scene.control.TableColumn;
  25. import javafx.scene.control.TableColumn.CellEditEvent;
  26. import javafx.scene.control.TableView;
  27. import javafx.scene.control.TextArea;
  28. import javafx.scene.control.TextField;
  29. import javafx.scene.control.cell.PropertyValueFactory;
  30. import javafx.scene.control.cell.TextFieldTableCell;
  31. import javafx.scene.input.MouseEvent;
  32. import pkgData.Car;
  33. import pkgData.Repair;
  34. import pkgMain.DatabaseClass;
  35. import pkgMisc.DateFormatConverter;
  36.  
  37. /**
  38.  *
  39.  * @author schueler
  40.  */
  41. public class FXML_MainController implements Initializable {
  42.    
  43.     @FXML
  44.     private Label lbMessage;
  45.  
  46.     @FXML
  47.     private Button bttnAddCar;
  48.  
  49.     @FXML
  50.     private Button bttnUpdateCar;
  51.  
  52.     @FXML
  53.     private Button bttnRemoveCar;
  54.  
  55.     @FXML
  56.     private TextField txtIdCar;
  57.  
  58.     @FXML
  59.     private TextField txtNameCar;
  60.  
  61.     @FXML
  62.     private ListView<Car> listCars;
  63.    
  64.     @FXML
  65.     private ListView<Repair> listRepairs;
  66.  
  67.  
  68.     @FXML
  69.     private MenuItem menuToJson;
  70.  
  71.     @FXML
  72.     private MenuItem menuFromJson;
  73.  
  74.     @FXML
  75.     private MenuItem menuFromBin;
  76.  
  77.     @FXML
  78.     private MenuItem menuToBin;
  79.  
  80.     @FXML
  81.     private MenuItem menuDeleteRepair;
  82.  
  83.     @FXML
  84.     private MenuItem menuAddRepair;
  85.  
  86.     @FXML
  87.     private MenuItem menuUpdateRepair;
  88.  
  89.     @FXML
  90.     private TextField txtRepairId;
  91.  
  92.     @FXML
  93.     private DatePicker dateRepairDate;
  94.    
  95.     @FXML
  96.     private TextArea txtRepairText;
  97.  
  98.     @FXML
  99.     private TextField txtRepairAmount;
  100.    
  101.     @FXML
  102.     private TableView<Repair> tableRepairs;
  103.  
  104.     @FXML
  105.     private TableColumn<Repair, Integer> colId;
  106.  
  107.     @FXML
  108.     private TableColumn<Repair, Date> colDate;
  109.  
  110.     @FXML
  111.     private TableColumn<Repair, String> colText;
  112.  
  113.     @FXML
  114.     private TableColumn<Repair, BigDecimal> colAmount;
  115.    
  116.     @FXML
  117.     void onEditCellAmount(CellEditEvent<Repair, String> event) {
  118.         ((Repair) event.getTableView().getItems().get(event.getTablePosition().getRow())).setAmountRepair(new BigDecimal(event.getNewValue()));
  119.     }
  120.  
  121.     @FXML
  122.     void onEditCellText(CellEditEvent<Repair, String> event) {
  123.         ((Repair) event.getTableView().getItems().get(event.getTablePosition().getRow())).setTextRepair(event.getNewValue());
  124.  
  125.  
  126.     }
  127.  
  128.     @FXML
  129.     void onRepairSelected(MouseEvent event) {
  130.         Repair rep = listRepairs.getSelectionModel().getSelectedItem();
  131.         this.txtRepairId.setText(Integer.toString(rep.getIdRepair()));
  132.         this.txtRepairAmount.setText(rep.getAmountRepair().toString());
  133.         this.dateRepairDate.setValue(rep.getDateRepair());
  134.         this.txtRepairText.setText(rep.getTextRepair());
  135.         lbMessage.setText(/*"Rep " +*/  rep + " selected");
  136.         r = rep;
  137.     }
  138.  
  139.     @FXML
  140.     public void onSelectListCars(MouseEvent event) {
  141.         Car car = listCars.getSelectionModel().getSelectedItem();
  142.         if (car == null) return;
  143.         this.txtIdCar.setText(Integer.toString(car.getIdCar()));
  144.         this.txtNameCar.setText(car.getNameCar());
  145.         lbMessage.setText(/*"Car " +*/ car + " selected");
  146.         currentCar = car;
  147.         refreshRepairList();
  148.     }
  149.    
  150.     /*@FXML
  151.     void onSelectListRepairs(MouseEvent event) {
  152.         Repair rep = listRepairs.getSelectionModel().getSelectedItem();
  153.         if (rep == null) return;
  154.         this.txtRepairId.setText(Integer.toString(rep.getIdRepair()));
  155.         this.txtRepairAmount.setText(rep.getAmountRepair().toString());
  156.         this.dateRepairDate.setValue(rep.getDateRepair());
  157.         this.txtRepairText.setText(rep.getTextRepair());
  158.         lbMessage.setText(/*"Rep " +*  rep + " selected");
  159.         r = rep;
  160.     } */
  161.    
  162.    
  163.  
  164.     @FXML
  165.     void onSelectMenuFile(ActionEvent event) {
  166.         try {
  167.             if (event.getSource().equals(menuToJson)) {
  168.                 db.writeToJSON();
  169.             } else if (event.getSource().equals(menuFromJson)) {
  170.                 db.loadFromJSON();
  171.                 refreshCarList();
  172.                 System.out.println("." + db.getAllCars());
  173.             } else if(event.getSource().equals(menuFromBin)) {
  174.                 db.readFromBinary();
  175.                 refreshCarList();
  176.             } else if(event.getSource().equals(menuToBin)) {
  177.                 db.writeToBinaray();
  178.             }
  179.         } catch (Exception e) {e.printStackTrace();}
  180.     }
  181.  
  182.     @FXML
  183.     void onSelectMenuRepair(ActionEvent event) {
  184.         try {
  185.             if(event.getSource().equals(menuAddRepair)) {
  186.                 doAddRepair();
  187.                 lbMessage.setText("repair added");
  188.             }
  189.             else if(event.getSource().equals(menuUpdateRepair)) {
  190.                 doUpdateRepair();
  191.                 lbMessage.setText("repair updated");
  192.             }
  193.             else if (event.getSource().equals(menuDeleteRepair)) {
  194.                 doRemoveRepair();
  195.                 lbMessage.setText("repair deleted");
  196.             }  
  197.         }
  198.         catch(Exception ex) {
  199.             lbMessage.setText("error_" + ex.getMessage());
  200.         }
  201.     }
  202.  
  203.    
  204.     @FXML
  205.     void onSelectButton(ActionEvent event) {
  206.        
  207.         try {
  208.             if(event.getSource().equals(bttnAddCar)) {
  209.                 doAddCar();
  210.                 lbMessage.setText("car added");
  211.             }
  212.             else if(event.getSource().equals(bttnRemoveCar)) {
  213.                 doRemoveCar();
  214.                 refreshCarList();
  215.                 lbMessage.setText("car removed");
  216.                
  217.             }
  218.             else if(event.getSource().equals(bttnUpdateCar)) {
  219.                 doUpdateCar();
  220.                 refreshCarList();
  221.                 lbMessage.setText("car updated");
  222.             }
  223.         }
  224.         catch (Exception ex) {
  225.             lbMessage.setText("error:" + ex.getMessage());
  226.             ex.printStackTrace();
  227.         }
  228.     }
  229.    
  230.     private void doAddCar() throws Exception{
  231.         Car car = new Car (Integer.parseInt(txtIdCar.getText()), txtNameCar.getText());
  232.         db.addCar(car);
  233.         refreshCarList();
  234.     }
  235.    
  236.     private void refreshCarList() {
  237.         obsList.clear();
  238.         obsList.addAll(db.getAllCars());
  239.     }
  240.    
  241.     private void refreshRepairList() {
  242.         obsListRep.clear();
  243.         obsListRep.addAll(currentCar.getAllRepairs());
  244.     }
  245.    
  246.     private void doUpdateCar() throws Exception{
  247.         Car car = new Car (Integer.parseInt(txtIdCar.getText()), txtNameCar.getText());
  248.         db.updateCar(car);
  249.         refreshCarList();
  250.     }
  251.    
  252.     private void doRemoveCar() throws Exception {
  253.         Car car = new Car (Integer.parseInt(txtIdCar.getText()), txtNameCar.getText());
  254.         db.removeCar(car);
  255.         refreshCarList();
  256.     }
  257.    
  258.     private void doAddRepair() throws Exception {
  259.         Repair repair = new Repair(Integer.parseInt(txtRepairId.getText()), dateRepairDate.getValue(), txtRepairText.getText(), new BigDecimal(txtRepairAmount.getText()));
  260.         currentCar.addRepair(repair);
  261.         refreshRepairList();
  262.     }
  263.    
  264.     private void doUpdateRepair() throws Exception{
  265.         Repair repair = new Repair(Integer.parseInt(txtRepairId.getText()), dateRepairDate.getValue(), txtRepairText.getText(), new BigDecimal(txtRepairAmount.getText()));
  266.         currentCar.updateRepair(repair);
  267.         refreshRepairList();
  268.     }
  269.    
  270.     private void doRemoveRepair() throws Exception {
  271.         Repair repair= new Repair(Integer.parseInt(txtRepairId.getText()), dateRepairDate.getValue(), txtRepairText.getText(), new BigDecimal(txtRepairAmount.getText()));
  272.         currentCar.removeRepair(repair);
  273.         refreshRepairList();
  274.     }
  275.    
  276.     @Override
  277.     public void initialize(URL url, ResourceBundle rb) {
  278.         db = DatabaseClass.newInstance();
  279.         obsList = FXCollections.observableArrayList();
  280.  
  281.         obsListRep = FXCollections.observableArrayList();
  282.        
  283.         listCars.setItems(obsList); //no output effected => acess to graph component ok
  284.         listRepairs.setItems(obsListRep);
  285.         tableRepairs.setItems(obsListRep);
  286.         dateRepairDate.setPromptText(DateFormatConverter.getPattern());
  287.         dateRepairDate.setConverter(new DateFormatConverter());
  288.        
  289.         //make setting for number-input
  290.         txtRepairAmount.textProperty().addListener(new ChangeListener<String>() {
  291.             @Override
  292.             public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue){
  293.                 if(!newValue.matches("[0-9]*\\.?[0-9]{0,2}")){
  294.                     txtRepairAmount.setText(oldValue);
  295.                     lbMessage.setText("warning: illigal number");
  296.                 }
  297.                 else {
  298.                     lbMessage.setText("");
  299.                 }
  300.                 System.out.println("..." + oldValue + "/" + newValue + "/" + observable);
  301.             }
  302.         });
  303.        
  304.         colId.setCellFactory(new PropertyValueFactory<>("idRepair"));
  305.         colDate.setCellFactory(new PropertyValueFactory<>("dateRepair"));
  306.         colText.setCellFactory(new PropertyValueFactory<>("textRepair"));
  307.         colAmount.setCellFactory(new PropertyValueFactory<>("amountRepair"));
  308.         colAmount.setStyle("-fx-alignement : CENTER-RIGHT");
  309.         colText.setCellFactory(TextFieldTableCell.forTableColumn());
  310.         colAmount.setCellValueFactory(TextFieldTableCell.forTableColumn(new BigDecimalFormatConverter()));
  311.     }  
  312.     private ObservableList<Car> obsList;
  313.     private ObservableList<Repair> obsListRep;
  314.     private DatabaseClass db;
  315.     private Car currentCar; // toDo: nur mehr ein Car
  316.     private Repair r;
  317. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement