Adiciona painel de usuários online

This commit is contained in:
tonyhcj 2026-07-17 21:49:04 -03:00
parent eff5fd2f12
commit d2c155a2fa
2 changed files with 58 additions and 0 deletions

View File

@ -11,10 +11,12 @@ import java.util.List;
import javax.swing.JMenu; import javax.swing.JMenu;
import pitiupi.control.PluginLoader; import pitiupi.control.PluginLoader;
import pitiupi.plugin.Plugin; import pitiupi.plugin.Plugin;
import pitiupi.control.HeartbeatManager;
/** /**
* *
* @author flavio * @author flavio
* @author tony
*/ */
public class MainWindow extends javax.swing.JFrame { 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.JPanel statusPanel;
private javax.swing.JTabbedPane tabbedPane; private javax.swing.JTabbedPane tabbedPane;
private HeartbeatManager heartbeatManager;
private OnlineUsersPanel onlineUsersPanel;
private Socket socket; private Socket socket;
private final String userName; private final String userName;
@ -64,6 +70,12 @@ public class MainWindow extends javax.swing.JFrame {
this.socket = new Socket(this); this.socket = new Socket(this);
this.socket.start(); 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.setSize(new java.awt.Dimension(1024, 768));
this.pluginManager = new PluginLoader(this); this.pluginManager = new PluginLoader(this);
this.pluginManager.loadPlugins(); this.pluginManager.loadPlugins();
@ -76,6 +88,10 @@ public class MainWindow extends javax.swing.JFrame {
System.exit(0); System.exit(0);
} }
public HeartbeatManager getHeartbeatManager() {
return heartbeatManager;
}
public String getUserName(){ public String getUserName(){
return this.userName; return this.userName;
} }

View File

@ -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<String> listModel;
private final JList<String> 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<PeerInfo> peers) {
SwingUtilities.invokeLater(() -> {
listModel.clear();
for (PeerInfo peer : peers) {
listModel.addElement(peer.toString());
}
});
}
}