From 93924d1bbd0d7bffc0c03b6899544c47f35ce382 Mon Sep 17 00:00:00 2001 From: Arnaud Vergnet Date: Sun, 6 Dec 2020 14:51:25 +0100 Subject: [PATCH] feat: move toolbar outside of chat --- .../insa/clavardator/ui/MainController.java | 14 +++++-- .../clavardator/ui/ToolbarController.java | 42 +++++++++++++++++++ .../clavardator/ui/chat/ChatController.java | 16 ------- .../ui/chat/ChatHeaderController.java | 28 ------------- .../ui/dialogs/AboutDialogController.java | 40 ++++++++++++++++++ .../dialogs/EditUsernameDialogController.java | 4 +- .../insa/clavardator/ui/chat/chatHeader.fxml | 36 ++++------------ .../clavardator/ui/dialogs/aboutDialog.fxml | 42 +++++++++++++++++++ .../fr/insa/clavardator/ui/scene.fxml | 13 ++++-- .../fr/insa/clavardator/ui/toolbar.fxml | 30 +++++++++++++ 10 files changed, 183 insertions(+), 82 deletions(-) create mode 100644 src/main/java/fr/insa/clavardator/ui/ToolbarController.java create mode 100644 src/main/java/fr/insa/clavardator/ui/dialogs/AboutDialogController.java create mode 100644 src/main/resources/fr/insa/clavardator/ui/dialogs/aboutDialog.fxml create mode 100644 src/main/resources/fr/insa/clavardator/ui/toolbar.fxml diff --git a/src/main/java/fr/insa/clavardator/ui/MainController.java b/src/main/java/fr/insa/clavardator/ui/MainController.java index 40fc997..9b3ddac 100644 --- a/src/main/java/fr/insa/clavardator/ui/MainController.java +++ b/src/main/java/fr/insa/clavardator/ui/MainController.java @@ -2,6 +2,7 @@ package fr.insa.clavardator.ui; import com.jfoenix.controls.JFXSnackbar; import fr.insa.clavardator.ui.chat.ChatController; +import fr.insa.clavardator.ui.dialogs.AboutDialogController; import fr.insa.clavardator.ui.dialogs.EditUsernameDialogController; import fr.insa.clavardator.ui.dialogs.SnackbarController; import fr.insa.clavardator.ui.users.UserListController; @@ -21,9 +22,13 @@ public class MainController implements Initializable { @FXML private StackPane root; + @FXML + private ToolbarController toolbarController; @FXML private EditUsernameDialogController editUserDialogController; @FXML + private AboutDialogController aboutDialogController; + @FXML private UserListController userListController; @FXML private ChatController chatController; @@ -31,7 +36,6 @@ public class MainController implements Initializable { private JFXSnackbar snackbar; private void openEditUsernameDialog() throws IOException { - editUserDialogController.setMode(EditUsernameDialogController.Mode.EDIT); editUserDialogController.setOnSuccessListener(() -> { System.out.println("success"); try { @@ -46,13 +50,12 @@ public class MainController implements Initializable { e.printStackTrace(); } }); - editUserDialogController.show(root); + editUserDialogController.show(root, EditUsernameDialogController.Mode.EDIT); } @Override public void initialize(URL url, ResourceBundle rb) { snackbar = new JFXSnackbar(root); - chatController.setCurrentUser(CurrentUser.getInstance()); userListController.addRefreshUserListener(() -> { System.out.println("refresh event"); }); @@ -66,12 +69,15 @@ public class MainController implements Initializable { chatController.addSendListener(() -> { System.out.println("send event"); }); - chatController.addEditListener(() -> { + toolbarController.addEditListener(() -> { try { openEditUsernameDialog(); } catch (IOException e) { e.printStackTrace(); } }); + toolbarController.addAboutListener(() -> { + aboutDialogController.show(root); + }); } } diff --git a/src/main/java/fr/insa/clavardator/ui/ToolbarController.java b/src/main/java/fr/insa/clavardator/ui/ToolbarController.java new file mode 100644 index 0000000..49a0dea --- /dev/null +++ b/src/main/java/fr/insa/clavardator/ui/ToolbarController.java @@ -0,0 +1,42 @@ +package fr.insa.clavardator.ui; + +import fr.insa.clavardator.users.CurrentUser; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.Label; + +import java.net.URL; +import java.util.ArrayList; +import java.util.List; +import java.util.ResourceBundle; + +public class ToolbarController implements Initializable { + + @FXML + private Label currentUsernameLabel; + + private List editListeners; + private List aboutListeners; + + public void addEditListener(ButtonPressEvent listener) { + editListeners.add(listener); + } + public void addAboutListener(ButtonPressEvent listener) { + aboutListeners.add(listener); + } + + public void onEditPress() { + editListeners.forEach(ButtonPressEvent::onPress); + } + + public void onAboutPress() { + aboutListeners.forEach(ButtonPressEvent::onPress); + } + + @Override + public void initialize(URL location, ResourceBundle resources) { + currentUsernameLabel.setText(CurrentUser.getInstance().getUsername()); + editListeners = new ArrayList<>(); + aboutListeners = new ArrayList<>(); + } +} diff --git a/src/main/java/fr/insa/clavardator/ui/chat/ChatController.java b/src/main/java/fr/insa/clavardator/ui/chat/ChatController.java index 9ab9948..4d03b8a 100644 --- a/src/main/java/fr/insa/clavardator/ui/chat/ChatController.java +++ b/src/main/java/fr/insa/clavardator/ui/chat/ChatController.java @@ -5,10 +5,8 @@ import fr.insa.clavardator.chat.Message; import fr.insa.clavardator.ui.ButtonPressEvent; import fr.insa.clavardator.ui.NoSelectionModel; import fr.insa.clavardator.users.ActiveUser; -import fr.insa.clavardator.users.CurrentUser; import fr.insa.clavardator.users.PeerUser; import javafx.collections.FXCollections; -import javafx.collections.ObservableList; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.ListView; @@ -26,9 +24,6 @@ public class ChatController implements Initializable { @FXML private ChatHeaderController chatHeaderController; - private CurrentUser currentUser; - private PeerUser remoteUser; - public void addAttachmentListener(ButtonPressEvent listener) { chatFooterController.addAttachmentListener(listener); } @@ -37,18 +32,7 @@ public class ChatController implements Initializable { chatFooterController.addSendListener(listener); } - public void addEditListener(ButtonPressEvent listener) { - chatHeaderController.addEditListener(listener); - } - - - public void setCurrentUser(CurrentUser currentUser) { - this.chatHeaderController.setCurrentUser(currentUser); - this.currentUser = currentUser; - } - public void setRemoteUser(PeerUser remoteUser) { - this.remoteUser = remoteUser; this.chatHeaderController.setRemoteUser(remoteUser); this.chatFooterController.setEnabled(remoteUser instanceof ActiveUser); diff --git a/src/main/java/fr/insa/clavardator/ui/chat/ChatHeaderController.java b/src/main/java/fr/insa/clavardator/ui/chat/ChatHeaderController.java index a8328f0..084a68d 100644 --- a/src/main/java/fr/insa/clavardator/ui/chat/ChatHeaderController.java +++ b/src/main/java/fr/insa/clavardator/ui/chat/ChatHeaderController.java @@ -1,8 +1,6 @@ package fr.insa.clavardator.ui.chat; -import fr.insa.clavardator.ui.ButtonPressEvent; import fr.insa.clavardator.ui.users.UserActiveIndicatorController; -import fr.insa.clavardator.users.CurrentUser; import fr.insa.clavardator.users.PeerUser; import javafx.fxml.FXML; import javafx.fxml.Initializable; @@ -10,46 +8,20 @@ import javafx.scene.control.Label; import java.net.URL; import java.util.ArrayList; -import java.util.List; import java.util.ResourceBundle; public class ChatHeaderController implements Initializable { - @FXML - private Label currentUsernameLabel; @FXML private Label remoteUsernameLabel; @FXML private UserActiveIndicatorController indicatorController; - private List editListeners; - - private CurrentUser currentUser; - private PeerUser remoteUser; - - public void addEditListener(ButtonPressEvent listener) { - editListeners.add(listener); - } - - public void onEditPress() { - editListeners.forEach(ButtonPressEvent::onPress); - } - - public void onAboutPress() { - - } @Override public void initialize(URL location, ResourceBundle resources) { - editListeners = new ArrayList<>(); - } - - public void setCurrentUser(CurrentUser currentUser) { - this.currentUser = currentUser; - currentUsernameLabel.setText(currentUser.getUsername()); } public void setRemoteUser(PeerUser remoteUser) { - this.remoteUser = remoteUser; remoteUsernameLabel.setText(remoteUser.getUsername()); indicatorController.setUser(remoteUser); indicatorController.setSize(10.0); diff --git a/src/main/java/fr/insa/clavardator/ui/dialogs/AboutDialogController.java b/src/main/java/fr/insa/clavardator/ui/dialogs/AboutDialogController.java new file mode 100644 index 0000000..89731dd --- /dev/null +++ b/src/main/java/fr/insa/clavardator/ui/dialogs/AboutDialogController.java @@ -0,0 +1,40 @@ +package fr.insa.clavardator.ui.dialogs; + +import com.jfoenix.controls.JFXButton; +import com.jfoenix.controls.JFXDialog; +import com.jfoenix.controls.JFXTextField; +import com.jfoenix.validation.base.ValidatorBase; +import fr.insa.clavardator.ui.ButtonPressEvent; +import javafx.beans.property.ReadOnlyBooleanWrapper; +import javafx.beans.value.ObservableValue; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.Label; +import javafx.scene.layout.StackPane; + +import java.net.URL; +import java.util.ResourceBundle; +import java.util.Timer; +import java.util.TimerTask; + +public class AboutDialogController implements Initializable { + + @FXML + private JFXDialog dialog; + + public void show(StackPane root) { + dialog.show(root); + } + + public void hide() { + dialog.close(); + } + + public void onDismiss() { + hide(); + } + + @Override + public void initialize(URL location, ResourceBundle resources) { + } +} diff --git a/src/main/java/fr/insa/clavardator/ui/dialogs/EditUsernameDialogController.java b/src/main/java/fr/insa/clavardator/ui/dialogs/EditUsernameDialogController.java index b91529e..2c23026 100644 --- a/src/main/java/fr/insa/clavardator/ui/dialogs/EditUsernameDialogController.java +++ b/src/main/java/fr/insa/clavardator/ui/dialogs/EditUsernameDialogController.java @@ -47,10 +47,10 @@ public class EditUsernameDialogController implements Initializable { this.successListener = listener; } - public void show(StackPane root) { + public void show(StackPane root, Mode mode) { setLocked(false); setFieldError(State.VALID); - textField.setText(""); + setMode(mode); dialog.show(root); } diff --git a/src/main/resources/fr/insa/clavardator/ui/chat/chatHeader.fxml b/src/main/resources/fr/insa/clavardator/ui/chat/chatHeader.fxml index 454a824..d24a5f2 100644 --- a/src/main/resources/fr/insa/clavardator/ui/chat/chatHeader.fxml +++ b/src/main/resources/fr/insa/clavardator/ui/chat/chatHeader.fxml @@ -1,38 +1,18 @@ - - - - - - - - - - - + + + + - + diff --git a/src/main/resources/fr/insa/clavardator/ui/dialogs/aboutDialog.fxml b/src/main/resources/fr/insa/clavardator/ui/dialogs/aboutDialog.fxml new file mode 100644 index 0000000..291fafc --- /dev/null +++ b/src/main/resources/fr/insa/clavardator/ui/dialogs/aboutDialog.fxml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/fr/insa/clavardator/ui/scene.fxml b/src/main/resources/fr/insa/clavardator/ui/scene.fxml index 58813c0..cca2db5 100644 --- a/src/main/resources/fr/insa/clavardator/ui/scene.fxml +++ b/src/main/resources/fr/insa/clavardator/ui/scene.fxml @@ -3,11 +3,16 @@ + - - - - + + + + + + + + diff --git a/src/main/resources/fr/insa/clavardator/ui/toolbar.fxml b/src/main/resources/fr/insa/clavardator/ui/toolbar.fxml new file mode 100644 index 0000000..0ff2581 --- /dev/null +++ b/src/main/resources/fr/insa/clavardator/ui/toolbar.fxml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + +