diff --git a/src/main/java/envoy/client/ui/controller/GroupCreationScene.java b/src/main/java/envoy/client/ui/controller/GroupCreationScene.java index ea4a58e..f4311aa 100644 --- a/src/main/java/envoy/client/ui/controller/GroupCreationScene.java +++ b/src/main/java/envoy/client/ui/controller/GroupCreationScene.java @@ -5,15 +5,16 @@ import java.util.stream.Collectors; import javafx.application.Platform; import javafx.fxml.FXML; import javafx.scene.control.*; +import javafx.scene.control.Alert.AlertType; import envoy.client.data.LocalDB; import envoy.client.event.SendEvent; import envoy.client.ui.ContactListCell; import envoy.client.ui.SceneContext; import envoy.data.Contact; -import envoy.data.User; import envoy.event.EventBus; import envoy.event.GroupCreation; +import envoy.util.Bounds; /** * Project: envoy-client
@@ -25,9 +26,6 @@ import envoy.event.GroupCreation; */ public class GroupCreationScene { - @FXML - private Button backButton; - @FXML private Button createButton; @@ -39,7 +37,7 @@ public class GroupCreationScene { private SceneContext sceneContext; - private static EventBus eventBus = EventBus.getInstance(); + private static final EventBus eventBus = EventBus.getInstance(); @FXML private void initialize() { @@ -56,22 +54,36 @@ public class GroupCreationScene { public void initializeData(SceneContext sceneContext, LocalDB localDB) { this.sceneContext = sceneContext; Platform.runLater(() -> contactList.getItems() - .addAll(localDB.getUsers() - .values() - .stream() - .filter(c -> c instanceof User && c.getID() != localDB.getUser().getID()) - .collect(Collectors.toList()))); + .addAll(localDB.getUsers().values().stream().filter(c -> c.getID() != localDB.getUser().getID()).collect(Collectors.toList()))); } /** - * Sends a {@link GroupCreation} to the server. + * Enables the {@code createButton} if at least one contact is selected. + * + * @since Envoy Client v0.1-beta + */ + @FXML + private void contactListClicked() { createButton.setDisable(contactList.getSelectionModel().isEmpty()); } + + /** + * Sends a {@link GroupCreation} to the server and closes this scene. + *

+ * If the given group name is not valid, an error is displayed instead. * * @since Envoy Client v0.1-beta */ @FXML - private void sendGroupObject() { - eventBus.dispatch(new SendEvent(new GroupCreation(groupNameBar.getText(), - contactList.getSelectionModel().getSelectedItems().stream().map(Contact::getID).collect(Collectors.toSet())))); + private void createButtonClicked() { + final var name = groupNameBar.getText(); + if (!Bounds.isValidContactName(name)) { + new Alert(AlertType.ERROR, "The entered group name is not valid (" + Bounds.CONTACT_NAME_PATTERN + ")").showAndWait(); + groupNameBar.clear(); + } else { + eventBus.dispatch(new SendEvent(new GroupCreation(name, + contactList.getSelectionModel().getSelectedItems().stream().map(Contact::getID).collect(Collectors.toSet())))); + new Alert(AlertType.INFORMATION, String.format("Group '%s' successfully created.", name)).showAndWait(); + sceneContext.pop(); + } } @FXML diff --git a/src/main/java/envoy/client/ui/controller/LoginScene.java b/src/main/java/envoy/client/ui/controller/LoginScene.java index 5c6fab9..01e456d 100644 --- a/src/main/java/envoy/client/ui/controller/LoginScene.java +++ b/src/main/java/envoy/client/ui/controller/LoginScene.java @@ -117,7 +117,7 @@ public final class LoginScene { new Alert(AlertType.ERROR, "The entered password is unequal to the repeated one").showAndWait(); repeatPasswordField.clear(); } else if (!Bounds.isValidContactName(userTextField.getText())) { - new Alert(AlertType.ERROR, "The entered user name is not valid (" + Bounds.CONTACT_NAME_PATTERN.toString() + ")").showAndWait(); + new Alert(AlertType.ERROR, "The entered user name is not valid (" + Bounds.CONTACT_NAME_PATTERN + ")").showAndWait(); userTextField.clear(); } else performHandshake( diff --git a/src/main/resources/fxml/GroupCreationScene.fxml b/src/main/resources/fxml/GroupCreationScene.fxml index 8e36d11..9fbdc92 100644 --- a/src/main/resources/fxml/GroupCreationScene.fxml +++ b/src/main/resources/fxml/GroupCreationScene.fxml @@ -38,21 +38,21 @@ - + - -