122 lines
3.2 KiB
Java
122 lines
3.2 KiB
Java
package GUI;
|
|
|
|
import net.MpChatMessage;
|
|
import pitiupi.net.tcp.TcpConnection;
|
|
import pitiupi.plugin.Pitiupi;
|
|
|
|
import javax.swing.*;
|
|
import java.awt.*;
|
|
import java.net.InetAddress;
|
|
import java.util.logging.Level;
|
|
import java.util.logging.Logger;
|
|
|
|
public class PrivateChatWindow extends JFrame {
|
|
|
|
private final Pitiupi pitiupi;
|
|
private final TcpConnection connection;
|
|
|
|
private final JTextArea receivedMessagesArea;
|
|
private final JTextField messageField;
|
|
|
|
public PrivateChatWindow(
|
|
Pitiupi pitiupi,
|
|
TcpConnection connection
|
|
) {
|
|
this.pitiupi = pitiupi;
|
|
this.connection = connection;
|
|
|
|
setTitle("Chat privado");
|
|
setSize(700, 500);
|
|
setLocationRelativeTo(null);
|
|
setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
|
|
|
|
JPanel mainPanel = new JPanel(new BorderLayout(10, 10));
|
|
mainPanel.setBorder(
|
|
BorderFactory.createEmptyBorder(10, 10, 10, 10)
|
|
);
|
|
|
|
receivedMessagesArea = new JTextArea();
|
|
receivedMessagesArea.setEditable(false);
|
|
receivedMessagesArea.setLineWrap(true);
|
|
receivedMessagesArea.setWrapStyleWord(true);
|
|
|
|
JScrollPane messagesScrollPane =
|
|
new JScrollPane(receivedMessagesArea);
|
|
|
|
messagesScrollPane.setBorder(
|
|
BorderFactory.createTitledBorder("Mensagens")
|
|
);
|
|
|
|
mainPanel.add(
|
|
messagesScrollPane,
|
|
BorderLayout.CENTER
|
|
);
|
|
|
|
JPanel bottomPanel = new JPanel(
|
|
new BorderLayout(10, 10)
|
|
);
|
|
|
|
messageField = new JTextField();
|
|
|
|
JButton tcpButton = new JButton("TCP");
|
|
tcpButton.addActionListener(e -> sendTCP());
|
|
|
|
bottomPanel.add(
|
|
messageField,
|
|
BorderLayout.CENTER
|
|
);
|
|
|
|
bottomPanel.add(
|
|
tcpButton,
|
|
BorderLayout.EAST
|
|
);
|
|
|
|
mainPanel.add(
|
|
bottomPanel,
|
|
BorderLayout.SOUTH
|
|
);
|
|
|
|
setContentPane(mainPanel);
|
|
}
|
|
|
|
private void sendTCP() {
|
|
try {
|
|
String nome = pitiupi.getUserName();
|
|
|
|
MpChatMessage message = new MpChatMessage(
|
|
nome,
|
|
InetAddress.getLocalHost().getHostAddress(),
|
|
"TCP Private",
|
|
messageField.getText()
|
|
);
|
|
|
|
connection.send(message.toByteArray());
|
|
receiveMessage(message);
|
|
|
|
messageField.setText("");
|
|
|
|
} catch (Exception ex) {
|
|
Logger.getLogger(
|
|
PrivateChatWindow.class.getName()
|
|
).log(Level.SEVERE, null, ex);
|
|
}
|
|
}
|
|
|
|
public void receiveMessage(MpChatMessage message) {
|
|
SwingUtilities.invokeLater(() -> {
|
|
String texto = String.format(
|
|
"[%s] %s (%s): %s%n",
|
|
message.getTipoMensagem(),
|
|
message.getNome(),
|
|
message.getIp(),
|
|
message.getMessage()
|
|
);
|
|
|
|
receivedMessagesArea.append(texto);
|
|
|
|
receivedMessagesArea.setCaretPosition(
|
|
receivedMessagesArea.getDocument().getLength()
|
|
);
|
|
});
|
|
}
|
|
} |