summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/gitblit/client/StatusPanel.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/gitblit/client/StatusPanel.java')
-rw-r--r--src/main/java/com/gitblit/client/StatusPanel.java169
1 files changed, 169 insertions, 0 deletions
diff --git a/src/main/java/com/gitblit/client/StatusPanel.java b/src/main/java/com/gitblit/client/StatusPanel.java
new file mode 100644
index 00000000..6d004f16
--- /dev/null
+++ b/src/main/java/com/gitblit/client/StatusPanel.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright 2011 gitblit.com.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gitblit.client;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+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;
+
+/**
+ * This panel displays the server status.
+ *
+ * @author James Moger
+ */
+public class StatusPanel extends JPanel {
+
+ private static final long serialVersionUID = 1L;
+ private final GitblitClient gitblit;
+ private JLabel bootDate;
+ private JLabel url;
+ private JLabel servletContainer;
+ private JLabel heapMaximum;
+ private JLabel heapAllocated;
+ private JLabel heapUsed;
+ private PropertiesTableModel tableModel;
+ private HeaderPanel header;
+ private JLabel version;
+ private JLabel releaseDate;
+
+ public StatusPanel(GitblitClient gitblit) {
+ super();
+ this.gitblit = gitblit;
+ initialize();
+ }
+
+ 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();
+ url = new JLabel();
+ servletContainer = new JLabel();
+
+ heapMaximum = new JLabel();
+ heapAllocated = new JLabel();
+ heapUsed = new JLabel();
+
+ JPanel fieldsPanel = new JPanel(new GridLayout(0, 1, 0, Utils.MARGIN)) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public Insets getInsets() {
+ return Utils.INSETS;
+ }
+ };
+ fieldsPanel.add(createFieldPanel("gb.version", version));
+ fieldsPanel.add(createFieldPanel("gb.releaseDate", releaseDate));
+ fieldsPanel.add(createFieldPanel("gb.bootDate", bootDate));
+ fieldsPanel.add(createFieldPanel("gb.url", url));
+ fieldsPanel.add(createFieldPanel("gb.servletContainer", servletContainer));
+ fieldsPanel.add(createFieldPanel("gb.heapUsed", heapUsed));
+ fieldsPanel.add(createFieldPanel("gb.heapAllocated", heapAllocated));
+ fieldsPanel.add(createFieldPanel("gb.heapMaximum", heapMaximum));
+
+ tableModel = new PropertiesTableModel();
+ JTable propertiesTable = Utils.newTable(tableModel, Utils.DATE_FORMAT);
+ String name = propertiesTable.getColumnName(PropertiesTableModel.Columns.Name.ordinal());
+ NameRenderer nameRenderer = new NameRenderer();
+ propertiesTable.getColumn(name).setCellRenderer(nameRenderer);
+
+ JPanel centerPanel = new JPanel(new BorderLayout(Utils.MARGIN, Utils.MARGIN));
+ centerPanel.add(fieldsPanel, BorderLayout.NORTH);
+ centerPanel.add(new JScrollPane(propertiesTable), BorderLayout.CENTER);
+
+ JPanel controls = new JPanel(new FlowLayout(FlowLayout.CENTER, Utils.MARGIN, 0));
+ controls.add(refreshStatus);
+
+ header = new HeaderPanel(Translation.get("gb.status"), "health_16x16.png");
+ setLayout(new BorderLayout(Utils.MARGIN, Utils.MARGIN));
+ 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, Utils.MARGIN, 0));
+ JLabel textLabel = new JLabel(Translation.get(key));
+ textLabel.setFont(textLabel.getFont().deriveFont(Font.BOLD));
+ textLabel.setPreferredSize(new Dimension(120, 10));
+ panel.add(textLabel);
+ panel.add(valueLabel);
+ return panel;
+ }
+
+ @Override
+ public Insets getInsets() {
+ return Utils.INSETS;
+ }
+
+ 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() + " (" + Translation.getTimeUtils().timeAgo(status.bootDate)
+ + ")");
+ 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") + ")");
+ tableModel.setProperties(status.systemProperties);
+ tableModel.fireTableDataChanged();
+ }
+}