From d2c155a2faa6034754d50023b8272a7dd6573b8e Mon Sep 17 00:00:00 2001 From: tonyhcj Date: Fri, 17 Jul 2026 21:49:04 -0300 Subject: [PATCH] =?UTF-8?q?Adiciona=20painel=20de=20usu=C3=A1rios=20online?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pitiupi/src/pitiupi/GUI/MainWindow.java | 16 +++++++ pitiupi/src/pitiupi/GUI/OnlineUsersPanel.java | 42 +++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 pitiupi/src/pitiupi/GUI/OnlineUsersPanel.java diff --git a/pitiupi/src/pitiupi/GUI/MainWindow.java b/pitiupi/src/pitiupi/GUI/MainWindow.java index bcd03fe..009f66d 100644 --- a/pitiupi/src/pitiupi/GUI/MainWindow.java +++ b/pitiupi/src/pitiupi/GUI/MainWindow.java @@ -11,10 +11,12 @@ import java.util.List; import javax.swing.JMenu; import pitiupi.control.PluginLoader; import pitiupi.plugin.Plugin; +import pitiupi.control.HeartbeatManager; /** * * @author flavio + * @author tony */ public class MainWindow extends javax.swing.JFrame { @@ -24,6 +26,10 @@ public class MainWindow extends javax.swing.JFrame { private javax.swing.JPanel statusPanel; private javax.swing.JTabbedPane tabbedPane; + private HeartbeatManager heartbeatManager; + private OnlineUsersPanel onlineUsersPanel; + + private Socket socket; private final String userName; @@ -64,6 +70,12 @@ public class MainWindow extends javax.swing.JFrame { this.socket = new Socket(this); this.socket.start(); + this.heartbeatManager = new HeartbeatManager(this); + this.onlineUsersPanel = new OnlineUsersPanel(); + this.heartbeatManager.addPeerListener(this.onlineUsersPanel); + this.getContentPane().add(this.onlineUsersPanel, java.awt.BorderLayout.LINE_END); + this.heartbeatManager.start(); + this.setSize(new java.awt.Dimension(1024, 768)); this.pluginManager = new PluginLoader(this); this.pluginManager.loadPlugins(); @@ -76,6 +88,10 @@ public class MainWindow extends javax.swing.JFrame { System.exit(0); } + public HeartbeatManager getHeartbeatManager() { + return heartbeatManager; + } + public String getUserName(){ return this.userName; } diff --git a/pitiupi/src/pitiupi/GUI/OnlineUsersPanel.java b/pitiupi/src/pitiupi/GUI/OnlineUsersPanel.java new file mode 100644 index 0000000..5821bbd --- /dev/null +++ b/pitiupi/src/pitiupi/GUI/OnlineUsersPanel.java @@ -0,0 +1,42 @@ +package pitiupi.GUI; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.util.List; +import javax.swing.BorderFactory; +import javax.swing.DefaultListModel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.SwingUtilities; +import pitiupi.control.PeerInfo; +import pitiupi.control.PeerListener; +/** + * + * @author tony + */ +public class OnlineUsersPanel extends JPanel implements PeerListener { + + private final DefaultListModel listModel; + private final JList userList; + + public OnlineUsersPanel() { + setLayout(new BorderLayout()); + setBorder(BorderFactory.createTitledBorder("Online")); + setPreferredSize(new Dimension(160, 0)); + + listModel = new DefaultListModel<>(); + userList = new JList<>(listModel); + add(new JScrollPane(userList), BorderLayout.CENTER); + } + + @Override + public void onPeersChanged(List peers) { + SwingUtilities.invokeLater(() -> { + listModel.clear(); + for (PeerInfo peer : peers) { + listModel.addElement(peer.toString()); + } + }); + } +} \ No newline at end of file