From c6819e637b64e3084b6aca8a0ba648a109e07b3e Mon Sep 17 00:00:00 2001 From: delvh Date: Tue, 22 Sep 2020 17:51:33 +0200 Subject: [PATCH] Fixed bug not updating GroupCreationTab after a new contact was added Fixes #35 --- .../client/ui/controller/ContactSearchTab.java | 7 ++++--- .../client/ui/controller/GroupCreationTab.java | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/client/src/main/java/envoy/client/ui/controller/ContactSearchTab.java b/client/src/main/java/envoy/client/ui/controller/ContactSearchTab.java index 7dcefd8..a171489 100644 --- a/client/src/main/java/envoy/client/ui/controller/ContactSearchTab.java +++ b/client/src/main/java/envoy/client/ui/controller/ContactSearchTab.java @@ -42,9 +42,10 @@ public class ContactSearchTab implements EventListener { @FXML private ListView userList; - private Alert alert = new Alert(AlertType.CONFIRMATION); private User currentlySelectedUser; + private final Alert alert = new Alert(AlertType.CONFIRMATION); + private static final EventBus eventBus = EventBus.getInstance(); private static final Logger logger = EnvoyLog.getLogger(ChatScene.class); @@ -69,7 +70,7 @@ public class ContactSearchTab implements EventListener { } /** - * Disables the clear and search button if no text is present in the search bar. + * If text is present, sends a request to the server. * * @since Envoy Client v0.1-beta */ @@ -102,7 +103,7 @@ public class ContactSearchTab implements EventListener { private void userListClicked() { final var user = userList.getSelectionModel().getSelectedItem(); if (user != null) { - currentlySelectedUser = user; + currentlySelectedUser = user; final var event = new ContactOperation(currentlySelectedUser, ElementOperation.ADD); // Sends the event to the server eventBus.dispatch(new SendEvent(event)); diff --git a/client/src/main/java/envoy/client/ui/controller/GroupCreationTab.java b/client/src/main/java/envoy/client/ui/controller/GroupCreationTab.java index 5e8d445..d0e1c50 100644 --- a/client/src/main/java/envoy/client/ui/controller/GroupCreationTab.java +++ b/client/src/main/java/envoy/client/ui/controller/GroupCreationTab.java @@ -4,6 +4,7 @@ import static java.util.function.Predicate.not; import java.util.stream.Collectors; +import javafx.application.Platform; import javafx.fxml.FXML; import javafx.scene.control.*; import javafx.scene.layout.HBox; @@ -13,6 +14,7 @@ import envoy.client.event.*; import envoy.client.ui.listcell.*; import envoy.data.*; import envoy.event.GroupCreation; +import envoy.event.contact.ContactOperation; import envoy.util.Bounds; import dev.kske.eventbus.*; @@ -70,6 +72,7 @@ public class GroupCreationTab implements EventListener { userList.setCellFactory(new ListCellFactory<>(ContactControl::new)); userList.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); createButton.setDisable(true); + eventBus.registerListener(this); userList.getItems() .addAll(localDB.getChats() .stream() @@ -199,4 +202,16 @@ public class GroupCreationTab implements EventListener { errorProceedBox.setMinHeight(value); errorProceedBox.setMaxHeight(value); } + + @Event + private void onContactOperation(ContactOperation operation) { + switch (operation.getOperationType()) { + case ADD: + if (operation.get() instanceof User) Platform.runLater(() -> userList.getItems().add((User) operation.get())); + break; + case REMOVE: + Platform.runLater(() -> userList.getItems().removeIf(u -> u.equals(operation.get()))); + break; + } + } }