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,21 +71,25 @@ public class MainController implements Initializable {
|
|||
}
|
||||
});
|
||||
editUserDialogController.setOnSuccessListener(() -> {
|
||||
try {
|
||||
final FXMLLoader loader = new FXMLLoader(getClass().getResource("dialogs/snackbar.fxml"));
|
||||
snackbar.enqueue(new JFXSnackbar.SnackbarEvent(
|
||||
loader.load()
|
||||
));
|
||||
final SnackbarController controller = loader.getController();
|
||||
controller.setText("Nom d'utilisateur changé !");
|
||||
controller.setMode(SnackbarController.Mode.SUCCESS);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
showSnackbarEvent("Nom d'utilisateur changé !", SnackbarController.Mode.SUCCESS);
|
||||
});
|
||||
editUserDialogController.show(root, mode);
|
||||
}
|
||||
|
||||
private void showSnackbarEvent(String text, SnackbarController.Mode mode) {
|
||||
try {
|
||||
final FXMLLoader loader = new FXMLLoader(getClass().getResource("dialogs/snackbar.fxml"));
|
||||
snackbar.enqueue(new JFXSnackbar.SnackbarEvent(
|
||||
loader.load()
|
||||
));
|
||||
final SnackbarController controller = loader.getController();
|
||||
controller.setText(text);
|
||||
controller.setMode(mode);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private void openAboutDialog() {
|
||||
aboutDialogController.show(root);
|
||||
}
|
||||
|
@ -133,7 +137,7 @@ public class MainController implements Initializable {
|
|||
|
||||
listController.setUserSelectedListener((user) -> chatController.setRemoteUser(user));
|
||||
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.addAboutListener(this::openAboutDialog);
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import fr.insa.clavardator.ui.ButtonPressEvent;
|
|||
import fr.insa.clavardator.ui.LoadingScreenController;
|
||||
import fr.insa.clavardator.ui.NoSelectionModel;
|
||||
import fr.insa.clavardator.users.PeerUser;
|
||||
import fr.insa.clavardator.util.ErrorCallback;
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.fxml.Initializable;
|
||||
|
@ -38,8 +39,8 @@ public class ChatController implements Initializable {
|
|||
chatFooterController.addAttachmentListener(listener);
|
||||
}
|
||||
|
||||
public void addSendListener(ChatFooterController.SendMessageEvent listener) {
|
||||
chatFooterController.addSendListener(listener);
|
||||
public void addSendErrorListener(ErrorCallback listener) {
|
||||
chatFooterController.addSendErrorListener(listener);
|
||||
}
|
||||
|
||||
public void setRemoteUser(PeerUser remoteUser) {
|
||||
|
|
|
@ -3,12 +3,12 @@ package fr.insa.clavardator.ui.chat;
|
|||
import com.jfoenix.controls.JFXTextField;
|
||||
import fr.insa.clavardator.ui.ButtonPressEvent;
|
||||
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.event.EventHandler;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.fxml.Initializable;
|
||||
import javafx.scene.input.KeyCode;
|
||||
import javafx.scene.input.KeyEvent;
|
||||
import javafx.scene.layout.HBox;
|
||||
|
||||
import java.net.URL;
|
||||
|
@ -25,7 +25,7 @@ public class ChatFooterController implements Initializable {
|
|||
private JFXTextField textField;
|
||||
|
||||
private List<ButtonPressEvent> attachmentListeners;
|
||||
private List<SendMessageEvent> sendListeners;
|
||||
private List<ErrorCallback> sendErrorListeners;
|
||||
|
||||
private PeerUser remoteUser;
|
||||
private HashMap<PeerUser, String> savedText;
|
||||
|
@ -34,18 +34,27 @@ public class ChatFooterController implements Initializable {
|
|||
public void addAttachmentListener(ButtonPressEvent listener) {
|
||||
attachmentListeners.add(listener);
|
||||
}
|
||||
public void addSendListener(SendMessageEvent listener) {
|
||||
sendListeners.add(listener);
|
||||
public void addSendErrorListener(ErrorCallback listener) {
|
||||
sendErrorListeners.add(listener);
|
||||
}
|
||||
|
||||
public void onAttachmentPress() {
|
||||
attachmentListeners.forEach(ButtonPressEvent::onPress);
|
||||
}
|
||||
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("");
|
||||
}
|
||||
|
||||
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) {
|
||||
container.setDisable(!enabled);
|
||||
}
|
||||
|
@ -72,7 +81,7 @@ public class ChatFooterController implements Initializable {
|
|||
public void initialize(URL location, ResourceBundle resources) {
|
||||
savedText = new HashMap<>();
|
||||
attachmentListeners = new ArrayList<>();
|
||||
sendListeners = new ArrayList<>();
|
||||
sendErrorListeners = new ArrayList<>();
|
||||
textField.textProperty().addListener(this::onTextChange);
|
||||
textField.setOnKeyPressed(event -> {
|
||||
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.Log;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.EOFException;
|
||||
import java.net.InetAddress;
|
||||
|
@ -67,6 +68,19 @@ public class PeerUser extends User implements Comparable<PeerUser> {
|
|||
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) {
|
||||
// Send our username
|
||||
|
|
Loading…
Reference in a new issue