Novos menus e envio de mensagens
This commit is contained in:
1 parent
6538dac8af
commit
7c9e61ce0f
55 files changed
+683
-368
No files matched your search
@@ -1,11 +1,13 @@
|
||||
package GUI;
|
||||
|
||||
import pitiupi.models.Menus.MenuCategory;
|
||||
import pitiupi.models.Menus.MulticastMenus.MulticastSubMenu;
|
||||
import plugin.MultiProtocolChat;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
|
||||
public class ChatMenu extends JMenu {
|
||||
public class ChatMenu extends MulticastSubMenu {
|
||||
private final MultiProtocolChat multiProtocolChat;
|
||||
|
||||
public ChatMenu(MultiProtocolChat multiProtocolChat) {
|
||||
@@ -28,54 +30,11 @@ public class ChatMenu extends JMenu {
|
||||
}
|
||||
|
||||
private void showPrivateChatDialog() {
|
||||
JDialog dialog = new JDialog(
|
||||
SwingUtilities.getWindowAncestor(this),
|
||||
"Novo chat privado",
|
||||
Dialog.ModalityType.APPLICATION_MODAL
|
||||
);
|
||||
|
||||
JTextField ipField = new JTextField();
|
||||
}
|
||||
|
||||
JButton startButton = new JButton("Iniciar");
|
||||
JButton cancelButton = new JButton("Cancelar");
|
||||
|
||||
JPanel contentPanel = new JPanel(new BorderLayout(10, 10));
|
||||
contentPanel.setBorder(
|
||||
BorderFactory.createEmptyBorder(10, 10, 10, 10)
|
||||
);
|
||||
|
||||
JPanel ipPanel = new JPanel(new BorderLayout(5, 5));
|
||||
ipPanel.add(new JLabel("IP:"), BorderLayout.WEST);
|
||||
ipPanel.add(ipField, BorderLayout.CENTER);
|
||||
|
||||
JPanel buttonsPanel = new JPanel(
|
||||
new FlowLayout(FlowLayout.RIGHT)
|
||||
);
|
||||
|
||||
buttonsPanel.add(cancelButton);
|
||||
buttonsPanel.add(startButton);
|
||||
|
||||
JLabel errorLabel = new JLabel("Não foi possível estabelecer a conexão.");
|
||||
errorLabel.setForeground(Color.RED);
|
||||
errorLabel.setVisible(false);
|
||||
|
||||
contentPanel.add(errorLabel, BorderLayout.NORTH);
|
||||
contentPanel.add(ipPanel, BorderLayout.CENTER);
|
||||
contentPanel.add(buttonsPanel, BorderLayout.SOUTH);
|
||||
|
||||
cancelButton.addActionListener(e -> dialog.dispose());
|
||||
|
||||
startButton.addActionListener(e -> {
|
||||
String ip = ipField.getText();
|
||||
|
||||
if (multiProtocolChat.openConnection(ip)) dialog.dispose();
|
||||
else errorLabel.setVisible(true);
|
||||
|
||||
});
|
||||
|
||||
dialog.setContentPane(contentPanel);
|
||||
dialog.pack();
|
||||
dialog.setLocationRelativeTo(SwingUtilities.getWindowAncestor(this));
|
||||
dialog.setVisible(true);
|
||||
@Override
|
||||
public String getText() {
|
||||
return "MP-Chat";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package GUI;
|
||||
|
||||
import control.ChatController;
|
||||
import pitiupi.models.Menus.UnicastMenus.UnicastActionMenu;
|
||||
import pitiupi.models.User;
|
||||
import plugin.MultiProtocolChat;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.net.InetAddress;
|
||||
|
||||
public class PrivateChatMenu extends UnicastActionMenu {
|
||||
PrivateChatWindow privateChatWindow;
|
||||
private final MultiProtocolChat multiProtocolChat;
|
||||
private final ChatController chatController;
|
||||
|
||||
public PrivateChatMenu(PrivateChatWindow PrivateChatWindow, MultiProtocolChat multiProtocolChat, ChatController chatController) {
|
||||
this.privateChatWindow = PrivateChatWindow;
|
||||
this.multiProtocolChat = multiProtocolChat;
|
||||
this.chatController = chatController;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(User user) {
|
||||
if (multiProtocolChat.openConnection(user.getAddress())
|
||||
else errorLabel.setVisible(true);
|
||||
|
||||
dialog.setContentPane(contentPanel);
|
||||
dialog.pack();
|
||||
dialog.setLocationRelativeTo(SwingUtilities.getWindowAncestor(privateChatWindow));
|
||||
dialog.setVisible(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getText() {
|
||||
return "start Private Chat";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package GUI;
|
||||
|
||||
import pitiupi.models.Menus.MulticastMenus.MulticastActionMenu;
|
||||
|
||||
public class PublicChatMenu extends MulticastActionMenu {
|
||||
PublicChatWindow publicChatWindow;
|
||||
|
||||
PublicChatMenu(PublicChatWindow publicChatWindow) {
|
||||
this.publicChatWindow = publicChatWindow;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick() {
|
||||
publicChatWindow.setVisible(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getText() {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
File renamed without changes.
@@ -6,18 +6,21 @@ import GUI.PrivateChatWindow;
|
||||
import GUI.PublicChatWindow;
|
||||
import net.MpChatMessage;
|
||||
import pitiupi.control.ConnectionManager;
|
||||
import pitiupi.control.PeerListener;
|
||||
import pitiupi.models.User;
|
||||
import pitiupi.net.tcp.TcpConnection;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.net.InetAddress;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
public class ChatController {
|
||||
public class ChatController implements PeerListener {
|
||||
ConnectionManager connectionManager;
|
||||
ChatMenu chatMenu;
|
||||
|
||||
PublicChatWindow publicChatWindow;
|
||||
|
||||
private final HashMap<TcpConnection, JMenuItem> chatMenus;
|
||||
private final HashMap<TcpConnection, ChatWindow> chatWindows;
|
||||
|
||||
public ChatController(ConnectionManager connectionManager, ChatMenu chatMenu) {
|
||||
@@ -58,4 +61,13 @@ public class ChatController {
|
||||
public void receivePrivate(TcpConnection tcpConnection, MpChatMessage message) {
|
||||
chatWindows.get(tcpConnection).receiveMessage(message);
|
||||
}
|
||||
|
||||
public void openChatWindow(InetAddress address) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPeersChanged(List<User> list) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package net;
|
||||
|
||||
import pitiupi.net.Message;
|
||||
import pitiupi.models.Messages.Message;
|
||||
|
||||
public class MpChatMessage extends Message {
|
||||
private String nome;
|
||||
|
||||
@@ -5,9 +5,9 @@ import control.ChatController;
|
||||
import net.MpChatMessage;
|
||||
import pitiupi.control.ConnectionManager;
|
||||
import pitiupi.control.GuiManager;
|
||||
import pitiupi.net.Message;
|
||||
import pitiupi.models.Messages.Message;
|
||||
import pitiupi.net.tcp.TcpConnection;
|
||||
import pitiupi.plugin.PrivateConnectionPlugin;
|
||||
import pitiupi.models.Plugin;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.io.ByteArrayInputStream;
|
||||
@@ -15,7 +15,7 @@ import java.io.IOException;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.net.InetAddress;
|
||||
|
||||
public class MultiProtocolChat implements PrivateConnectionPlugin{
|
||||
public class MultiProtocolChat extends Plugin {
|
||||
ChatController chatController;
|
||||
ConnectionManager connectionManager;
|
||||
GuiManager guiManager;
|
||||
@@ -47,7 +47,7 @@ public class MultiProtocolChat implements PrivateConnectionPlugin{
|
||||
|
||||
ChatMenu chatMenu = new ChatMenu(this);
|
||||
chatController = new ChatController(connectionManager, chatMenu);
|
||||
guiManager.addMenu(chatMenu);
|
||||
guiManager.addMulticastMenu(chatMenu);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -61,23 +61,25 @@ public class MultiProtocolChat implements PrivateConnectionPlugin{
|
||||
chatController.receivePublic(mpChatMessage);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void receivePrivateConnection(TcpConnection tcpConnection) {
|
||||
public boolean receivePrivateConnection(TcpConnection connection) {
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
chatController.addChatWindow(tcpConnection);
|
||||
chatController.addChatWindow(connection);
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receiveBytes(TcpConnection connection, byte[] bytes) {
|
||||
public boolean receiveBytes(TcpConnection connection, byte[] bytes) {
|
||||
MpChatMessage mpChatMessage = parseMessage(bytes);
|
||||
chatController.receivePrivate(connection, mpChatMessage);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSocketClosed(TcpConnection tcpConnection) {
|
||||
chatController.removeChatWindow(tcpConnection);
|
||||
public boolean onSocketClosed(TcpConnection connection) {
|
||||
chatController.removeChatWindow(connection);
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean openConnection(String ip) {
|
||||
|
||||
Reference in new issue
Block a user