diff options
Diffstat (limited to 'src/de/fhswf/in/inf/se/notepadMinusMinus')
| -rw-r--r-- | src/de/fhswf/in/inf/se/notepadMinusMinus/view/MainViewController.java | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/de/fhswf/in/inf/se/notepadMinusMinus/view/MainViewController.java b/src/de/fhswf/in/inf/se/notepadMinusMinus/view/MainViewController.java index 473a273..f0ac2b4 100644 --- a/src/de/fhswf/in/inf/se/notepadMinusMinus/view/MainViewController.java +++ b/src/de/fhswf/in/inf/se/notepadMinusMinus/view/MainViewController.java @@ -2,10 +2,12 @@ package de.fhswf.in.inf.se.notepadMinusMinus.view; import java.io.File; import java.math.BigDecimal; +import java.math.RoundingMode; import de.fhswf.in.inf.se.notepadMinusMinus.Main; import de.fhswf.in.inf.se.notepadMinusMinus.model.Grade; import javafx.application.Platform; +import javafx.collections.ListChangeListener.Change; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.ComboBox; @@ -104,6 +106,29 @@ public class MainViewController { this.main = main; gradeTable.setItems(main.getGradeList()); + + gradeTable.getItems().addListener((Change<? extends Grade> change) -> { + ectsSumLabel.setText("0"); + averageGradeLabel.setText("0.0"); + int sumEcts = 0; + BigDecimal gradesSumWeighted = BigDecimal.ZERO; + for (Grade grade : gradeTable.getItems()) + { + if (grade.getGrade().compareTo(BigDecimal.ZERO) != 0) + { + sumEcts += grade.getEcts(); + gradesSumWeighted = gradesSumWeighted.add(grade.getGrade() + .multiply(new BigDecimal(grade.getEcts()))); + } + } + if (sumEcts > 0) + { + ectsSumLabel.setText(String.valueOf(sumEcts)); + averageGradeLabel.setText(gradesSumWeighted + .divide(new BigDecimal(sumEcts), RoundingMode.HALF_UP) + .toString()); + } + }); } @FXML |
