package ch.ethz.syslab.telesto.console.gui; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTabbedPane; import ch.ethz.syslab.telesto.server.db.Database; public class ConsoleWindow extends JFrame { private static final long serialVersionUID = 1L; private List<Panel> panels = new ArrayList<>(3); Database database = new Database(); public ConsoleWindow() { // Main window setTitle("Telesto Management Console"); setSize(800, 600); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); // Main panel JPanel mainPanel = new JPanel(new BorderLayout()); // Tabs JTabbedPane tabs = new JTabbedPane(); tabs.addTab("Clients", createPanel("clients")); tabs.addTab("Queues", createPanel("queues")); tabs.addTab("Messages", createPanel("messages")); mainPanel.add(tabs, BorderLayout.CENTER); // Refresh button JButton refreshButton = new JButton("Refresh"); refreshButton.addActionListener(new RefreshActionListener()); mainPanel.add(refreshButton, BorderLayout.SOUTH); setContentPane(mainPanel); setVisible(true); database.initialize(); refresh(); } private Panel createPanel(String table) { Panel panel = new Panel(table); panels.add(panel); return panel; } private void refresh() { for (Panel panel : panels) { try { panel.refresh(database); } catch (SQLException e) { e.printStackTrace(); } } } private class RefreshActionListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { refresh(); } } }