diff --git a/client/src/main/java/envoy/client/ui/control/QuickSelectControl.java b/client/src/main/java/envoy/client/ui/control/QuickSelectControl.java index 92a750f..0e1b2e5 100644 --- a/client/src/main/java/envoy/client/ui/control/QuickSelectControl.java +++ b/client/src/main/java/envoy/client/ui/control/QuickSelectControl.java @@ -1,18 +1,19 @@ package envoy.client.ui.control; +import java.util.function.Consumer; + import javafx.geometry.*; import javafx.scene.control.*; import javafx.scene.image.ImageView; import javafx.scene.layout.*; import javafx.scene.shape.Rectangle; -import envoy.client.ui.controller.GroupCreationTab; import envoy.client.util.IconUtil; -import envoy.data.User; +import envoy.data.*; /** - * Displays an {@link User} as a quickSelectControl which is used in the - * quickSelectList. + * Displays an {@link User} as a quick select control which is used in the + * quick select list. * * @author Maximilian Käfer * @since Envoy Client v0.3-beta @@ -24,11 +25,11 @@ public class QuickSelectControl extends VBox { /** * Creates an instance of the {@code QuickSelectControl}. * - * @param user the user whose data is used to create this instance. - * @param tab the parent tab ({@link GroupCreationTab}). + * @param user the contact whose data is used to create this instance. + * @param action the action to perform when a contact is removed with this control as a parameter * @since Envoy Client v0.3-beta */ - public QuickSelectControl(User user, GroupCreationTab tab) { + public QuickSelectControl(User user, Consumer action) { this.user = user; setPadding(new Insets(1, 0, 0, 0)); setPrefWidth(37); @@ -65,13 +66,12 @@ public class QuickSelectControl extends VBox { removeBtn.setPrefSize(12, 12); removeBtn.setMaxSize(12, 12); removeBtn.setMinSize(12, 12); - removeBtn.setOnMouseClicked(evt -> tab.removeFromQuickSelection(this)); + removeBtn.setOnMouseClicked(evt -> action.accept(this)); removeBtn.setId("remove-button"); hBox.getChildren().add(removeBtn); stackPane.getChildren().add(hBox); getChildren().add(stackPane); - var nameLabel = new Label(); nameLabel.setPrefSize(35, 20); nameLabel.setMaxSize(35, 20); 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 6434910..23ec485 100644 --- a/client/src/main/java/envoy/client/ui/controller/GroupCreationTab.java +++ b/client/src/main/java/envoy/client/ui/controller/GroupCreationTab.java @@ -71,7 +71,6 @@ public class GroupCreationTab implements EventListener { @FXML private void initialize() { userList.setCellFactory(new ListCellFactory<>(ContactControl::new)); - userList.getSelectionModel().setSelectionMode(SelectionMode.SINGLE); createButton.setDisable(true); eventBus.registerListener(this); userList.getItems() @@ -94,7 +93,7 @@ public class GroupCreationTab implements EventListener { @FXML private void userListClicked() { if (userList.getSelectionModel().getSelectedItem() != null) { - quickSelectList.getItems().add(new QuickSelectControl(userList.getSelectionModel().getSelectedItem(), this)); + quickSelectList.getItems().add(new QuickSelectControl(userList.getSelectionModel().getSelectedItem(), this::removeFromQuickSelection)); createButton.setDisable(quickSelectList.getItems().isEmpty() || groupNameField.getText().isBlank()); resizeQuickSelectSpace(60); userList.getItems().remove(userList.getSelectionModel().getSelectedItem());