Quick Select Support for the GroupCreationTab #77
@ -16,7 +16,10 @@ import envoy.data.User;
|
||||
*/
|
||||
public class QuickSelectControl extends VBox {
|
||||
|
||||
User user;
|
||||
|
||||
public QuickSelectControl(User user, GroupCreationTab tab) {
|
||||
this.user = user;
|
||||
setPrefWidth(37);
|
||||
setMaxWidth(37);
|
||||
setMinWidth(37);
|
||||
@ -70,4 +73,6 @@ public class QuickSelectControl extends VBox {
|
||||
|
||||
getStyleClass().add("quick-select");
|
||||
}
|
||||
|
||||
public User getUser() { return user; }
|
||||
}
|
||||
|
@ -70,7 +70,7 @@ public class GroupCreationTab implements EventListener {
|
||||
@FXML
|
||||
private void initialize() {
|
||||
userList.setCellFactory(new ListCellFactory<>(ContactControl::new));
|
||||
userList.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
|
||||
userList.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
|
||||
createButton.setDisable(true);
|
||||
eventBus.registerListener(this);
|
||||
userList.getItems()
|
||||
@ -81,9 +81,7 @@ public class GroupCreationTab implements EventListener {
|
||||
.filter(not(localDB.getUser()::equals))
|
||||
.map(User.class::cast)
|
||||
.collect(Collectors.toList()));
|
||||
quickSelectList.setPrefHeight(0);
|
||||
quickSelectList.setMaxHeight(0);
|
||||
quickSelectList.setMinHeight(0);
|
||||
resizeQuickSelectSpace(0);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -95,9 +93,9 @@ public class GroupCreationTab implements EventListener {
|
||||
private void userListClicked() {
|
||||
createButton.setDisable(userList.getSelectionModel().isEmpty() || groupNameField.getText().isBlank());
|
||||
quickSelectList.getItems().add(new QuickSelectControl(userList.getSelectionModel().getSelectedItem(), this));
|
||||
quickSelectList.setPrefHeight(60);
|
||||
quickSelectList.setMaxHeight(60);
|
||||
quickSelectList.setMinHeight(60);
|
||||
resizeQuickSelectSpace(60);
|
||||
userList.getItems().remove(userList.getSelectionModel().getSelectedItem());
|
||||
userList.getSelectionModel().clearSelection();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -107,7 +105,7 @@ public class GroupCreationTab implements EventListener {
|
||||
* @since Envoy Client v0.1-beta
|
||||
*/
|
||||
@FXML
|
||||
private void textUpdated() { createButton.setDisable(userList.getSelectionModel().isEmpty() || groupNameField.getText().isBlank()); }
|
||||
private void textUpdated() { createButton.setDisable(quickSelectList.getItems().size() == 0 || groupNameField.getText().isBlank()); }
|
||||
|
||||
/**
|
||||
* Sends a {@link GroupCreation} to the server and closes this scene.
|
||||
@ -135,6 +133,9 @@ public class GroupCreationTab implements EventListener {
|
||||
// Restoring the original design as tabs will always be reused
|
||||
setErrorMessageLabelSize(0);
|
||||
groupNameField.clear();
|
||||
quickSelectList.getItems().forEach(q -> userList.getItems().add(q.getUser()));
|
||||
quickSelectList.getItems().clear();
|
||||
resizeQuickSelectSpace(0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -148,7 +149,7 @@ public class GroupCreationTab implements EventListener {
|
||||
private void createGroup(String name) {
|
||||
Context.getInstance()
|
||||
.getClient()
|
||||
.send(new GroupCreation(name, userList.getSelectionModel().getSelectedItems().stream().map(User::getID).collect(Collectors.toSet())));
|
||||
.send(new GroupCreation(name, quickSelectList.getItems().stream().map(q -> q.getUser().getID()).collect(Collectors.toSet())));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -165,13 +166,19 @@ public class GroupCreationTab implements EventListener {
|
||||
|
||||
public void removeFromQuickSelection(QuickSelectControl element) {
|
||||
quickSelectList.getItems().remove(element);
|
||||
userList.getItems().add(element.getUser());
|
||||
if (quickSelectList.getItems().size() == 0) {
|
||||
quickSelectList.setPrefHeight(0);
|
||||
quickSelectList.setMaxHeight(0);
|
||||
quickSelectList.setMinHeight(0);
|
||||
resizeQuickSelectSpace(0);
|
||||
createButton.setDisable(true);
|
||||
}
|
||||
}
|
||||
|
||||
private void resizeQuickSelectSpace(int value) {
|
||||
quickSelectList.setPrefHeight(value);
|
||||
quickSelectList.setMaxHeight(value);
|
||||
quickSelectList.setMinHeight(value);
|
||||
}
|
||||
|
||||
@FXML
|
||||
private void backButtonClicked() {
|
||||
eventBus.dispatch(new BackEvent());
|
||||
|
Reference in New Issue
Block a user