package ee.tkasekamp.vickywaranalyzer.controller.tab;
import ee.tkasekamp.vickywaranalyzer.core.Battle.Result;
import ee.tkasekamp.vickywaranalyzer.core.War;
import ee.tkasekamp.vickywaranalyzer.core.WarGoal;
import ee.tkasekamp.vickywaranalyzer.service.ModelService;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.control.Tab;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
public class WargoalController extends AbstractController {
/* War goal table */
@FXML
private TableView<WarGoal> warGoalTable;
@FXML
private TableColumn<WarGoal, String> colWarGoalActor;
@FXML
private TableColumn<WarGoal, String> colWarGoalReceiver;
@FXML
private TableColumn<WarGoal, String> colWarGoalCasusBelli;
@FXML
private TableColumn<WarGoal, Integer> colWarGoalStateID;
@FXML
private TableColumn<WarGoal, String> colWarGoalCountry;
@FXML
private TableColumn<WarGoal, Double> colWarGoalScore;
@FXML
private TableColumn<WarGoal, Double> colWarGoalChange;
@FXML
private TableColumn<WarGoal, String> colWarGoalDate;
@FXML
private TableColumn<WarGoal, Result> colWarGoalFulfilled;
private ObservableList<WarGoal> warGoalTableContent;
@FXML
private Label warName2;
private Tab tab;
private ModelService modelService;
public void init(Tab tab,
ModelService modelService) {
this.tab = tab;
this.modelService = modelService;
warGoalTableContent = FXCollections.observableArrayList();
setWarGoalTabColumnValues();
}
@Override
public void reset() {
tab.setDisable(true);
}
public void populate(War war) {
warName2.setText(war.getName());
/* Show the tab */
tab.setDisable(false);
warGoalTableContent.clear(); // A bit of cleaning
// Adding to list
warGoalTableContent.addAll(war.getWarGoalList());
warGoalTable.setItems(warGoalTableContent);
setColumnVisiblility(modelService.isHOD());
}
/**
* Sets the column values for wargoaltab. If the version is HoD, more column
* are shown. Otherwise they are hidden.
*/
private void setWarGoalTabColumnValues() {
/* Wargoal tab columns */
colWarGoalActor
.setCellValueFactory(new PropertyValueFactory<>(
"actor"));
colWarGoalReceiver
.setCellValueFactory(new PropertyValueFactory<>(
"receiver"));
colWarGoalCasusBelli
.setCellValueFactory(new PropertyValueFactory<>(
"casus_belli"));
colWarGoalCountry
.setCellValueFactory(new PropertyValueFactory<>(
"country"));
colWarGoalStateID
.setCellValueFactory(new PropertyValueFactory<>(
"state_province_id"));
// Only used for HoD
colWarGoalDate
.setCellValueFactory(new PropertyValueFactory<>(
"date"));
colWarGoalScore
.setCellValueFactory(new PropertyValueFactory<>(
"score"));
colWarGoalChange
.setCellValueFactory(new PropertyValueFactory<>(
"change"));
colWarGoalFulfilled
.setCellValueFactory(new PropertyValueFactory<>(
"fulfilled"));
}
/**
* Some columns are only necessary for HoD.
*
* @param isHOD If is Heart of Darkness
*/
private void setColumnVisiblility(boolean isHOD) {
colWarGoalDate.setVisible(isHOD);
colWarGoalScore.setVisible(isHOD);
colWarGoalChange.setVisible(isHOD);
colWarGoalFulfilled.setVisible(isHOD);
}
}