From 38688b1f17bb2d43a144e92b086768e3e2523d2a Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Tue, 01 Nov 2011 17:21:09 -0400 Subject: [PATCH] Refactored monolithic GitblitPanel into pieces. Revised feed generation. --- src/com/gitblit/client/StatusPanel.java | 73 +++++++++++++++++++++++++----------- 1 files changed, 51 insertions(+), 22 deletions(-) diff --git a/src/com/gitblit/client/StatusPanel.java b/src/com/gitblit/client/StatusPanel.java index 797ae9b..669aa47 100644 --- a/src/com/gitblit/client/StatusPanel.java +++ b/src/com/gitblit/client/StatusPanel.java @@ -21,13 +21,18 @@ import java.awt.Font; import java.awt.GridLayout; import java.awt.Insets; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.IOException; +import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import com.gitblit.Constants; +import com.gitblit.Constants.RpcRequest; import com.gitblit.models.ServerStatus; import com.gitblit.utils.ByteFormat; import com.gitblit.utils.TimeUtils; @@ -40,29 +45,32 @@ public class StatusPanel extends JPanel { private static final long serialVersionUID = 1L; - private final Insets insets = new Insets(5, 5, 5, 5); + private final GitblitClient gitblit; private JLabel bootDate; private JLabel url; private JLabel servletContainer; private JLabel heapMaximum; private JLabel heapAllocated; private JLabel heapUsed; - private PropertiesTableModel model; - private HeaderPanel headerPanel; + private PropertiesTableModel tableModel; + private HeaderPanel header; private JLabel version; private JLabel releaseDate; - public StatusPanel() { + public StatusPanel(GitblitClient gitblit) { super(); + this.gitblit = gitblit; initialize(); } - public StatusPanel(String url, ServerStatus status) { - this(); - setStatus(url, status); - } - private void initialize() { + JButton refreshStatus = new JButton(Translation.get("gb.refresh")); + refreshStatus.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + refreshStatus(); + } + }); + version = new JLabel(); releaseDate = new JLabel(); bootDate = new JLabel(); @@ -73,13 +81,13 @@ heapAllocated = new JLabel(); heapUsed = new JLabel(); - JPanel fieldsPanel = new JPanel(new GridLayout(0, 1, 0, 5)) { + JPanel fieldsPanel = new JPanel(new GridLayout(0, 1, 0, Utils.MARGIN)) { private static final long serialVersionUID = 1L; @Override public Insets getInsets() { - return insets; + return Utils.INSETS; } }; fieldsPanel.add(createFieldPanel("gb.version", version)); @@ -91,8 +99,8 @@ fieldsPanel.add(createFieldPanel("gb.heapAllocated", heapAllocated)); fieldsPanel.add(createFieldPanel("gb.heapMaximum", heapMaximum)); - model = new PropertiesTableModel(); - JTable propertiesTable = Utils.newTable(model, Utils.DATE_FORMAT); + tableModel = new PropertiesTableModel(); + JTable propertiesTable = Utils.newTable(tableModel, Utils.DATE_FORMAT); String name = propertiesTable.getColumnName(PropertiesTableModel.Columns.Name.ordinal()); NameRenderer nameRenderer = new NameRenderer(); propertiesTable.setRowHeight(nameRenderer.getFont().getSize() + 8); @@ -102,14 +110,18 @@ centerPanel.add(fieldsPanel, BorderLayout.NORTH); centerPanel.add(new JScrollPane(propertiesTable), BorderLayout.CENTER); - headerPanel = new HeaderPanel(Translation.get("gb.status"), "health_16x16.png"); + JPanel controls = new JPanel(); + controls.add(refreshStatus); + + header = new HeaderPanel(Translation.get("gb.status"), "health_16x16.png"); setLayout(new BorderLayout()); - add(headerPanel, BorderLayout.NORTH); + add(header, BorderLayout.NORTH); add(centerPanel, BorderLayout.CENTER); + add(controls, BorderLayout.SOUTH); } private JPanel createFieldPanel(String key, JLabel valueLabel) { - JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT, 5, 0)); + JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT, Utils.MARGIN, 0)); JLabel textLabel = new JLabel(Translation.get(key)); textLabel.setFont(textLabel.getFont().deriveFont(Font.BOLD)); textLabel.setPreferredSize(new Dimension(120, 10)); @@ -120,23 +132,40 @@ @Override public Insets getInsets() { - return insets; + return Utils.INSETS; } - public void setStatus(String url, ServerStatus status) { - headerPanel.setText(Translation.get("gb.status")); + protected void refreshStatus() { + GitblitWorker worker = new GitblitWorker(StatusPanel.this, RpcRequest.LIST_STATUS) { + @Override + protected Boolean doRequest() throws IOException { + gitblit.refreshStatus(); + return true; + } + + @Override + protected void onSuccess() { + updateTable(false); + } + }; + worker.execute(); + } + + protected void updateTable(boolean pack) { + ServerStatus status = gitblit.getStatus(); + header.setText(Translation.get("gb.status")); version.setText(Constants.NAME + (status.isGO ? " GO v" : " WAR v") + status.version); releaseDate.setText(status.releaseDate); bootDate.setText(status.bootDate.toString() + " (" + TimeUtils.timeAgo(status.bootDate) + ")"); - this.url.setText(url); + url.setText(gitblit.url); servletContainer.setText(status.servletContainer); ByteFormat byteFormat = new ByteFormat(); heapMaximum.setText(byteFormat.format(status.heapMaximum)); heapAllocated.setText(byteFormat.format(status.heapAllocated)); heapUsed.setText(byteFormat.format(status.heapAllocated - status.heapFree) + " (" + byteFormat.format(status.heapFree) + " " + Translation.get("gb.free") + ")"); - model.setProperties(status.systemProperties); - model.fireTableDataChanged(); + tableModel.setProperties(status.systemProperties); + tableModel.fireTableDataChanged(); } } -- Gitblit v1.9.1