iplemted textview
This commit is contained in:
parent
46c0e9d760
commit
8e40d561af
@ -1,13 +1,15 @@
|
|||||||
package at.ionas999.adressbook.controller;
|
package at.ionas999.adressbook.controller;
|
||||||
|
|
||||||
import at.ionas999.adressbook.models.Contact;
|
import at.ionas999.adressbook.models.Contact;
|
||||||
import javafx.collections.FXCollections;
|
import at.ionas999.adressbook.repository.AddressBook;
|
||||||
import javafx.collections.ListChangeListener;
|
import javafx.collections.ListChangeListener;
|
||||||
import javafx.collections.ObservableList;
|
import javafx.collections.ObservableList;
|
||||||
import javafx.collections.transformation.FilteredList;
|
import javafx.collections.transformation.FilteredList;
|
||||||
import javafx.event.ActionEvent;
|
import javafx.event.ActionEvent;
|
||||||
import javafx.scene.control.*;
|
import javafx.scene.control.*;
|
||||||
import javafx.scene.control.Alert.AlertType;
|
import javafx.scene.control.Alert.AlertType;
|
||||||
|
import javafx.beans.property.SimpleStringProperty;
|
||||||
|
import javafx.beans.property.SimpleIntegerProperty;
|
||||||
|
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
@ -18,19 +20,36 @@ public class AddressBookController {
|
|||||||
public TextField phoneField;
|
public TextField phoneField;
|
||||||
public TextField emailField;
|
public TextField emailField;
|
||||||
public Label labelContactAmount;
|
public Label labelContactAmount;
|
||||||
public ListView<Contact> contactView;
|
public TableView<Contact> contactTable;
|
||||||
|
public TableColumn<Contact, Integer> idColumn;
|
||||||
|
public TableColumn<Contact, String> nameColumn;
|
||||||
|
public TableColumn<Contact, String> phoneColumn;
|
||||||
|
public TableColumn<Contact, String> emailColumn;
|
||||||
public Button searchButton;
|
public Button searchButton;
|
||||||
|
|
||||||
private final ObservableList<Contact> contacts = FXCollections.observableArrayList();
|
private final AddressBook addressBook = AddressBook.getInstance();
|
||||||
|
private final ObservableList<Contact> contacts = addressBook.getContacts();
|
||||||
private final FilteredList<Contact> filteredContacts = new FilteredList<>(contacts);
|
private final FilteredList<Contact> filteredContacts = new FilteredList<>(contacts);
|
||||||
|
|
||||||
public void initialize() {
|
public void initialize() {
|
||||||
contactView.setItems(filteredContacts);
|
idColumn.setCellValueFactory(cellData ->
|
||||||
|
new SimpleIntegerProperty(cellData.getValue().getId()).asObject());
|
||||||
|
|
||||||
|
nameColumn.setCellValueFactory(cellData ->
|
||||||
|
new SimpleStringProperty(cellData.getValue().getName()));
|
||||||
|
|
||||||
|
phoneColumn.setCellValueFactory(cellData ->
|
||||||
|
new SimpleStringProperty(cellData.getValue().getPhone()));
|
||||||
|
|
||||||
|
emailColumn.setCellValueFactory(cellData ->
|
||||||
|
new SimpleStringProperty(cellData.getValue().getEmail()));
|
||||||
|
|
||||||
|
contactTable.setItems(filteredContacts);
|
||||||
|
|
||||||
contacts.addListener((ListChangeListener<? super Contact>) (observable) -> updateContactCount());
|
contacts.addListener((ListChangeListener<? super Contact>) (observable) -> updateContactCount());
|
||||||
updateContactCount();
|
updateContactCount();
|
||||||
|
|
||||||
contactView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
|
contactTable.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
|
||||||
if (newValue != null) {
|
if (newValue != null) {
|
||||||
idField.setText(String.valueOf(newValue.getId()));
|
idField.setText(String.valueOf(newValue.getId()));
|
||||||
nameField.setText(newValue.getName());
|
nameField.setText(newValue.getName());
|
||||||
@ -61,7 +80,7 @@ public void initialize() {
|
|||||||
String phone = phoneField.getText();
|
String phone = phoneField.getText();
|
||||||
String email = emailField.getText();
|
String email = emailField.getText();
|
||||||
Contact newContact = new Contact(name, phone, email);
|
Contact newContact = new Contact(name, phone, email);
|
||||||
contacts.add(newContact);
|
addressBook.addContact(newContact);
|
||||||
clearInputFields();
|
clearInputFields();
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
showAlert("Error", e.getMessage());
|
showAlert("Error", e.getMessage());
|
||||||
@ -69,22 +88,22 @@ public void initialize() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void deleteContactButtonClickEvent(ActionEvent actionEvent) {
|
public void deleteContactButtonClickEvent(ActionEvent actionEvent) {
|
||||||
Contact selectedContact = contactView.getSelectionModel().getSelectedItem();
|
Contact selectedContact = contactTable.getSelectionModel().getSelectedItem();
|
||||||
if (selectedContact != null) {
|
if (selectedContact != null) {
|
||||||
contacts.remove(selectedContact);
|
addressBook.removeContact(selectedContact);
|
||||||
} else {
|
} else {
|
||||||
showAlert("Error", "No contact selected for deletion.");
|
showAlert("Error", "No contact selected for deletion.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void saveButtonClickEvent(ActionEvent actionEvent) {
|
public void saveButtonClickEvent(ActionEvent actionEvent) {
|
||||||
Contact selectedContact = contactView.getSelectionModel().getSelectedItem();
|
Contact selectedContact = contactTable.getSelectionModel().getSelectedItem();
|
||||||
if (selectedContact != null) {
|
if (selectedContact != null) {
|
||||||
try {
|
try {
|
||||||
selectedContact.setName(nameField.getText());
|
selectedContact.setName(nameField.getText());
|
||||||
selectedContact.setPhone(phoneField.getText());
|
selectedContact.setPhone(phoneField.getText());
|
||||||
selectedContact.setEmail(emailField.getText());
|
selectedContact.setEmail(emailField.getText());
|
||||||
refreshListView();
|
refreshTableView();
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
showAlert("Error", e.getMessage());
|
showAlert("Error", e.getMessage());
|
||||||
}
|
}
|
||||||
@ -98,9 +117,8 @@ public void initialize() {
|
|||||||
filteredContacts.setPredicate(createFilterPredicate(searchText));
|
filteredContacts.setPredicate(createFilterPredicate(searchText));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void refreshListView() {
|
private void refreshTableView() {
|
||||||
contactView.setItems(null);
|
contactTable.refresh();
|
||||||
contactView.setItems(filteredContacts);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void clearInputFields() {
|
private void clearInputFields() {
|
||||||
@ -116,4 +134,4 @@ public void initialize() {
|
|||||||
alert.setContentText(message);
|
alert.setContentText(message);
|
||||||
alert.showAndWait();
|
alert.showAndWait();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,7 +22,14 @@
|
|||||||
<padding>
|
<padding>
|
||||||
<Insets top="10" right="10" bottom="10" left="10"/>
|
<Insets top="10" right="10" bottom="10" left="10"/>
|
||||||
</padding>
|
</padding>
|
||||||
<ListView fx:id="contactView" VBox.vgrow="ALWAYS" maxHeight="150"/>
|
<TableView fx:id="contactTable" VBox.vgrow="ALWAYS">
|
||||||
|
<columns>
|
||||||
|
<TableColumn fx:id="idColumn" text="ID" prefWidth="50"/>
|
||||||
|
<TableColumn fx:id="nameColumn" text="Name" prefWidth="150"/>
|
||||||
|
<TableColumn fx:id="phoneColumn" text="Phone" prefWidth="100"/>
|
||||||
|
<TableColumn fx:id="emailColumn" text="Email" prefWidth="200"/>
|
||||||
|
</columns>
|
||||||
|
</TableView>
|
||||||
<HBox spacing="10" alignment="CENTER" GridPane.rowIndex="4" GridPane.columnIndex="1">
|
<HBox spacing="10" alignment="CENTER" GridPane.rowIndex="4" GridPane.columnIndex="1">
|
||||||
<Label text="Number Of Contacts:"/>
|
<Label text="Number Of Contacts:"/>
|
||||||
<Label fx:id="labelContactAmount"/>
|
<Label fx:id="labelContactAmount"/>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user