connect ui to message sending methods
This commit is contained in:
parent
6f1bd41cc9
commit
6f6492e8c0
4 changed files with 49 additions and 21 deletions
|
@ -71,19 +71,23 @@ public class MainController implements Initializable {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
editUserDialogController.setOnSuccessListener(() -> {
|
editUserDialogController.setOnSuccessListener(() -> {
|
||||||
|
showSnackbarEvent("Nom d'utilisateur changé !", SnackbarController.Mode.SUCCESS);
|
||||||
|
});
|
||||||
|
editUserDialogController.show(root, mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showSnackbarEvent(String text, SnackbarController.Mode mode) {
|
||||||
try {
|
try {
|
||||||
final FXMLLoader loader = new FXMLLoader(getClass().getResource("dialogs/snackbar.fxml"));
|
final FXMLLoader loader = new FXMLLoader(getClass().getResource("dialogs/snackbar.fxml"));
|
||||||
snackbar.enqueue(new JFXSnackbar.SnackbarEvent(
|
snackbar.enqueue(new JFXSnackbar.SnackbarEvent(
|
||||||
loader.load()
|
loader.load()
|
||||||
));
|
));
|
||||||
final SnackbarController controller = loader.getController();
|
final SnackbarController controller = loader.getController();
|
||||||
controller.setText("Nom d'utilisateur changé !");
|
controller.setText(text);
|
||||||
controller.setMode(SnackbarController.Mode.SUCCESS);
|
controller.setMode(mode);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
});
|
|
||||||
editUserDialogController.show(root, mode);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void openAboutDialog() {
|
private void openAboutDialog() {
|
||||||
|
@ -133,7 +137,7 @@ public class MainController implements Initializable {
|
||||||
|
|
||||||
listController.setUserSelectedListener((user) -> chatController.setRemoteUser(user));
|
listController.setUserSelectedListener((user) -> chatController.setRemoteUser(user));
|
||||||
chatController.addAttachmentListener(() -> System.out.println("attach event"));
|
chatController.addAttachmentListener(() -> System.out.println("attach event"));
|
||||||
chatController.addSendListener((text) -> System.out.println("sent : " + text));
|
chatController.addSendErrorListener((e) -> showSnackbarEvent("Erreur: Message non envoyé", SnackbarController.Mode.ERROR));
|
||||||
toolbarController.addEditListener(() -> openEditUsernameDialog(EditUsernameDialogController.Mode.EDIT));
|
toolbarController.addEditListener(() -> openEditUsernameDialog(EditUsernameDialogController.Mode.EDIT));
|
||||||
toolbarController.addAboutListener(this::openAboutDialog);
|
toolbarController.addAboutListener(this::openAboutDialog);
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ import fr.insa.clavardator.ui.ButtonPressEvent;
|
||||||
import fr.insa.clavardator.ui.LoadingScreenController;
|
import fr.insa.clavardator.ui.LoadingScreenController;
|
||||||
import fr.insa.clavardator.ui.NoSelectionModel;
|
import fr.insa.clavardator.ui.NoSelectionModel;
|
||||||
import fr.insa.clavardator.users.PeerUser;
|
import fr.insa.clavardator.users.PeerUser;
|
||||||
|
import fr.insa.clavardator.util.ErrorCallback;
|
||||||
import javafx.collections.FXCollections;
|
import javafx.collections.FXCollections;
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
import javafx.fxml.Initializable;
|
import javafx.fxml.Initializable;
|
||||||
|
@ -38,8 +39,8 @@ public class ChatController implements Initializable {
|
||||||
chatFooterController.addAttachmentListener(listener);
|
chatFooterController.addAttachmentListener(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addSendListener(ChatFooterController.SendMessageEvent listener) {
|
public void addSendErrorListener(ErrorCallback listener) {
|
||||||
chatFooterController.addSendListener(listener);
|
chatFooterController.addSendErrorListener(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRemoteUser(PeerUser remoteUser) {
|
public void setRemoteUser(PeerUser remoteUser) {
|
||||||
|
|
|
@ -3,12 +3,12 @@ package fr.insa.clavardator.ui.chat;
|
||||||
import com.jfoenix.controls.JFXTextField;
|
import com.jfoenix.controls.JFXTextField;
|
||||||
import fr.insa.clavardator.ui.ButtonPressEvent;
|
import fr.insa.clavardator.ui.ButtonPressEvent;
|
||||||
import fr.insa.clavardator.users.PeerUser;
|
import fr.insa.clavardator.users.PeerUser;
|
||||||
|
import fr.insa.clavardator.util.ErrorCallback;
|
||||||
|
import fr.insa.clavardator.util.Log;
|
||||||
import javafx.beans.value.ObservableValue;
|
import javafx.beans.value.ObservableValue;
|
||||||
import javafx.event.EventHandler;
|
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
import javafx.fxml.Initializable;
|
import javafx.fxml.Initializable;
|
||||||
import javafx.scene.input.KeyCode;
|
import javafx.scene.input.KeyCode;
|
||||||
import javafx.scene.input.KeyEvent;
|
|
||||||
import javafx.scene.layout.HBox;
|
import javafx.scene.layout.HBox;
|
||||||
|
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
@ -25,7 +25,7 @@ public class ChatFooterController implements Initializable {
|
||||||
private JFXTextField textField;
|
private JFXTextField textField;
|
||||||
|
|
||||||
private List<ButtonPressEvent> attachmentListeners;
|
private List<ButtonPressEvent> attachmentListeners;
|
||||||
private List<SendMessageEvent> sendListeners;
|
private List<ErrorCallback> sendErrorListeners;
|
||||||
|
|
||||||
private PeerUser remoteUser;
|
private PeerUser remoteUser;
|
||||||
private HashMap<PeerUser, String> savedText;
|
private HashMap<PeerUser, String> savedText;
|
||||||
|
@ -34,18 +34,27 @@ public class ChatFooterController implements Initializable {
|
||||||
public void addAttachmentListener(ButtonPressEvent listener) {
|
public void addAttachmentListener(ButtonPressEvent listener) {
|
||||||
attachmentListeners.add(listener);
|
attachmentListeners.add(listener);
|
||||||
}
|
}
|
||||||
public void addSendListener(SendMessageEvent listener) {
|
public void addSendErrorListener(ErrorCallback listener) {
|
||||||
sendListeners.add(listener);
|
sendErrorListeners.add(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onAttachmentPress() {
|
public void onAttachmentPress() {
|
||||||
attachmentListeners.forEach(ButtonPressEvent::onPress);
|
attachmentListeners.forEach(ButtonPressEvent::onPress);
|
||||||
}
|
}
|
||||||
public void onSend() {
|
public void onSend() {
|
||||||
sendListeners.forEach((l) -> l.onSend(findSavedText()));
|
if (remoteUser != null) {
|
||||||
|
remoteUser.sendTextMessage(textField.getText(), this::onSendError);
|
||||||
|
} else {
|
||||||
|
Log.e(this.getClass().getSimpleName(), "Error: remote user not set");
|
||||||
|
}
|
||||||
textField.setText("");
|
textField.setText("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onSendError(Exception e) {
|
||||||
|
Log.e(this.getClass().getSimpleName(), "Error: Could not send message", e);
|
||||||
|
sendErrorListeners.forEach((l) -> l.onError(e));
|
||||||
|
}
|
||||||
|
|
||||||
public void setEnabled(boolean enabled) {
|
public void setEnabled(boolean enabled) {
|
||||||
container.setDisable(!enabled);
|
container.setDisable(!enabled);
|
||||||
}
|
}
|
||||||
|
@ -72,7 +81,7 @@ public class ChatFooterController implements Initializable {
|
||||||
public void initialize(URL location, ResourceBundle resources) {
|
public void initialize(URL location, ResourceBundle resources) {
|
||||||
savedText = new HashMap<>();
|
savedText = new HashMap<>();
|
||||||
attachmentListeners = new ArrayList<>();
|
attachmentListeners = new ArrayList<>();
|
||||||
sendListeners = new ArrayList<>();
|
sendErrorListeners = new ArrayList<>();
|
||||||
textField.textProperty().addListener(this::onTextChange);
|
textField.textProperty().addListener(this::onTextChange);
|
||||||
textField.setOnKeyPressed(event -> {
|
textField.setOnKeyPressed(event -> {
|
||||||
if (event.getCode() == KeyCode.ENTER) {
|
if (event.getCode() == KeyCode.ENTER) {
|
||||||
|
|
|
@ -6,6 +6,7 @@ import fr.insa.clavardator.network.PeerConnection;
|
||||||
import fr.insa.clavardator.util.ErrorCallback;
|
import fr.insa.clavardator.util.ErrorCallback;
|
||||||
import fr.insa.clavardator.util.Log;
|
import fr.insa.clavardator.util.Log;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.io.EOFException;
|
import java.io.EOFException;
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
|
@ -67,6 +68,19 @@ public class PeerUser extends User implements Comparable<PeerUser> {
|
||||||
init(connection, callback, errorCallback);
|
init(connection, callback, errorCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void sendTextMessage(String msg, @Nullable ErrorCallback errorCallback) {
|
||||||
|
if (connection != null) {
|
||||||
|
Log.v(this.getClass().getSimpleName(),
|
||||||
|
"Sending message to " + this.getUsername() + " / " + this.getId() + ": " + msg);
|
||||||
|
final Message message = new Message(CurrentUser.getInstance(), this, msg);
|
||||||
|
connection.send(
|
||||||
|
message,
|
||||||
|
() -> history.addMessage(message),
|
||||||
|
errorCallback);
|
||||||
|
} else {
|
||||||
|
Log.e(this.getClass().getSimpleName(), "Could not send message: connection is not initialized");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void init(PeerConnection thisConnection, UserConnectedCallback callback, ErrorCallback errorCallback) {
|
private void init(PeerConnection thisConnection, UserConnectedCallback callback, ErrorCallback errorCallback) {
|
||||||
// Send our username
|
// Send our username
|
||||||
|
|
Loading…
Reference in a new issue