Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class PersonTable {
- private TableView<PersonRepository.Person> table;
- private PersonState state;
- private List<PersonRepository.Person> personList = new ArrayList<>();
- private JFXTextField searchField;
- private int selectedIndex;
- public PersonTable(TableView<PersonRepository.Person> table, StackPane root, JFXTextField searchField, PersonState state) {
- this.table = table;
- this.state = state;
- this.searchField = searchField;
- TableColumn<PersonRepository.Person, String> nameColumn = new TableColumn<>("Name");
- nameColumn.setCellValueFactory(param -> new SimpleStringProperty(param.getValue().getName()));
- TableColumn<PersonRepository.Person, String> geburtsDatumColumn = new TableColumn<>("Geburtsdatum");
- geburtsDatumColumn.setCellValueFactory(param -> new SimpleStringProperty(param.getValue().getGeburtsdatum()));
- TableColumn<PersonRepository.Person, String> geschlechtColumn = new TableColumn<>("Geschlecht");
- geschlechtColumn.setCellValueFactory(param -> new SimpleStringProperty(param.getValue().getGender().getDisplayName()));
- TableColumn<PersonRepository.Person, String> plzColumn = new TableColumn<>("Stadtteil");
- plzColumn.setCellValueFactory(param -> new SimpleStringProperty(param.getValue().getPlz() + " " +
- param.getValue().getStadtteil()));
- TableColumn<PersonRepository.Person, String> ortColumn = new TableColumn<>("Feststellung");
- ortColumn.setCellValueFactory(param -> new SimpleStringProperty(param.getValue().getFeststellung()));
- TableColumn<PersonRepository.Person, String> berufColumn = new TableColumn<>("Beruf");
- berufColumn.setCellValueFactory(param -> new SimpleStringProperty(param.getValue().getBeruf()));
- table.getColumns().clear();
- table.getColumns().addAll(nameColumn, geburtsDatumColumn, geschlechtColumn, plzColumn, ortColumn, berufColumn);
- table.getItems().clear();
- table.setRowFactory(param -> {
- TableRow<PersonRepository.Person> personTableRow = new TableRow<>();
- personTableRow.setOnMouseClicked(e -> {
- if (e.getClickCount() == 2) {
- this.selectedIndex = table.getSelectionModel().getSelectedIndex();
- PersonRepository.Person person = table.getSelectionModel().getSelectedItem();
- Futures.addCallback(Main.getInstance().getPersonRepository().getPersonById(person.getPatId()), (Callback<Rows>)
- result -> {
- if (result != null && result.first() != null) {
- Row row = result.first();
- Platform.runLater(() -> Dialog.showPersonDialog(root, row, null));
- }
- }, MoreExecutors.directExecutor());
- }
- });
- return personTableRow;
- });
- searchField.textProperty().addListener((observable, oldValue, newValue) -> {
- table.getItems().clear();
- if (newValue == null || newValue.isEmpty()) {
- table.getItems().addAll(this.personList);
- return;
- }
- String lowerCaseFilter = newValue.toLowerCase();
- table.getItems().addAll(this.personList.stream().filter(p -> {
- if (p.getName().toLowerCase().contains(lowerCaseFilter)) {
- return true;
- } else if (String.valueOf(p.getGeburtsdatum()).toLowerCase().contains(lowerCaseFilter)) {
- return true;
- } else if (String.valueOf(p.getPlz()).toLowerCase().contains(lowerCaseFilter)) {
- return true;
- } else if (String.valueOf(p.getFeststellung()).toLowerCase().contains(lowerCaseFilter)) {
- return true;
- } else return p.getBeruf().toLowerCase().contains(lowerCaseFilter);
- }).collect(Collectors.toList()));
- });
- this.updateRows();
- }
- public void updateRows() {
- Futures.addCallback(Main.getInstance().getPersonRepository().getPersons(), (Callback<List<PersonRepository.Person>>) result ->
- Platform.runLater(() -> {
- this.searchField.setText("");
- this.table.getItems().clear();
- this.table.getItems().addAll(result.stream().filter(p -> p.getState() == this.state).collect(Collectors.toList()));
- this.personList.clear();
- this.personList.addAll(this.table.getItems());
- this.table.getSelectionModel().select(this.selectedIndex);
- }), Main.getInstance().getMySQL().getPool());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement