summaryrefslogtreecommitdiffstats
path: root/src/com/gitblit
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2011-11-01 18:19:44 -0400
committerJames Moger <james.moger@gitblit.com>2011-11-01 18:19:44 -0400
commitc25a1d65ed2c94b65741d81862a7612ae12bdf76 (patch)
tree5833a3d1c81fe0b6ee05de5a24a6a157d80ae577 /src/com/gitblit
parent773bb653359611e2816cb317404849d8cd8e7643 (diff)
downloadgitblit-c25a1d65ed2c94b65741d81862a7612ae12bdf76.tar.gz
gitblit-c25a1d65ed2c94b65741d81862a7612ae12bdf76.zip
Branch renderer. String change. Config section name changes.
Diffstat (limited to 'src/com/gitblit')
-rw-r--r--src/com/gitblit/client/BranchRenderer.java78
-rw-r--r--src/com/gitblit/client/FeedsPanel.java6
-rw-r--r--src/com/gitblit/client/GitblitClient.java4
-rw-r--r--src/com/gitblit/client/GitblitManager.java30
-rw-r--r--src/com/gitblit/client/GitblitPanel.java11
-rw-r--r--src/com/gitblit/client/SyndicatedEntryTableModel.java2
-rw-r--r--src/com/gitblit/models/FeedModel.java19
-rw-r--r--src/com/gitblit/utils/SyndicationUtils.java41
-rw-r--r--src/com/gitblit/wicket/GitBlitWebApp.properties2
9 files changed, 134 insertions, 59 deletions
diff --git a/src/com/gitblit/client/BranchRenderer.java b/src/com/gitblit/client/BranchRenderer.java
new file mode 100644
index 00000000..f9c9f361
--- /dev/null
+++ b/src/com/gitblit/client/BranchRenderer.java
@@ -0,0 +1,78 @@
+/*
+ * 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.Color;
+import java.awt.Component;
+import java.awt.FlowLayout;
+import java.io.Serializable;
+
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTable;
+import javax.swing.border.Border;
+import javax.swing.border.LineBorder;
+import javax.swing.table.TableCellRenderer;
+
+/**
+ * Branch renderer displays refs/heads and refs/remotes in a style like the
+ * site.
+ *
+ * @author James Moger
+ *
+ */
+public class BranchRenderer extends JPanel implements TableCellRenderer, Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ private static final String R_HEADS = "refs/heads/";
+
+ private static final String R_REMOTES = "refs/remotes/";
+
+ private JLabel branchLabel;
+
+ public BranchRenderer() {
+ super(new FlowLayout(FlowLayout.CENTER, 0, 1));
+ branchLabel = new JLabel();
+ branchLabel.setOpaque(true);
+ add(branchLabel);
+ }
+
+ public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
+ boolean hasFocus, int row, int column) {
+ if (isSelected)
+ setBackground(table.getSelectionBackground());
+ else
+ setBackground(table.getBackground());
+
+ String name = value.toString();
+ Color bg = getBackground();
+ Border border = null;
+ if (name.startsWith(R_HEADS)) {
+ bg = Color.decode("#CCFFCC");
+ name = name.substring(R_HEADS.length());
+ border = new LineBorder(Color.decode("#00CC33"), 1, true);
+ } else if (name.startsWith(R_REMOTES)) {
+ bg = Color.decode("#CAC2F5");
+ name = name.substring(R_REMOTES.length());
+ border = new LineBorder(Color.decode("#6C6CBF"), 1, true);
+ }
+ branchLabel.setText(" " + name + " ");
+ branchLabel.setBackground(bg);
+ branchLabel.setBorder(border);
+ return this;
+ }
+} \ No newline at end of file
diff --git a/src/com/gitblit/client/FeedsPanel.java b/src/com/gitblit/client/FeedsPanel.java
index e2b8527c..c6b464d6 100644
--- a/src/com/gitblit/client/FeedsPanel.java
+++ b/src/com/gitblit/client/FeedsPanel.java
@@ -109,7 +109,7 @@ public abstract class FeedsPanel extends JPanel {
NameRenderer nameRenderer = new NameRenderer();
tableModel = new SyndicatedEntryTableModel();
- header = new HeaderPanel(Translation.get("gb.recentActivity"), "feed_16x16.png");
+ header = new HeaderPanel(Translation.get("gb.timeline"), "feed_16x16.png");
table = Utils.newTable(tableModel, Utils.DATE_FORMAT);
String name = table.getColumnName(SyndicatedEntryTableModel.Columns.Author.ordinal());
table.setRowHeight(nameRenderer.getFont().getSize() + 8);
@@ -118,7 +118,7 @@ public abstract class FeedsPanel extends JPanel {
table.getColumn(name).setCellRenderer(nameRenderer);
name = table.getColumnName(SyndicatedEntryTableModel.Columns.Branch.ordinal());
- table.getColumn(name).setCellRenderer(nameRenderer);
+ table.getColumn(name).setCellRenderer(new BranchRenderer());
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
@@ -179,7 +179,7 @@ public abstract class FeedsPanel extends JPanel {
tableModel.entries.clear();
tableModel.entries.addAll(gitblit.getSyndicatedEntries());
tableModel.fireTableDataChanged();
- header.setText(Translation.get("gb.recentActivity") + " ("
+ header.setText(Translation.get("gb.timeline") + " ("
+ gitblit.getSyndicatedEntries().size() + ")");
if (pack) {
Utils.packColumns(table, Utils.MARGIN);
diff --git a/src/com/gitblit/client/GitblitClient.java b/src/com/gitblit/client/GitblitClient.java
index a432c130..2a08b85c 100644
--- a/src/com/gitblit/client/GitblitClient.java
+++ b/src/com/gitblit/client/GitblitClient.java
@@ -215,7 +215,7 @@ public class GitblitClient implements Serializable {
for (FeedModel feed : reg.feeds) {
feed.lastRefresh = new Date();
List<SyndicatedEntryModel> entries = SyndicationUtils.readFeed(url,
- feed.repository, feed.branch, feed.maxRetrieval, account, password);
+ feed.repository, feed.branch, -1, account, password);
allEntries.addAll(entries);
}
}
@@ -290,7 +290,7 @@ public class GitblitClient implements Serializable {
public boolean createRepository(RepositoryModel repository, List<String> permittedUsers)
throws IOException {
boolean success = true;
- success &= RpcUtils.createRepository(repository, url, account, password);
+ success &= RpcUtils.createRepository(repository, url, account, password);
if (permittedUsers.size() > 0) {
// if new repository has named members, set them
success &= RpcUtils.setRepositoryMembers(repository, permittedUsers, url, account,
diff --git a/src/com/gitblit/client/GitblitManager.java b/src/com/gitblit/client/GitblitManager.java
index f4ca7c5c..22f98eb6 100644
--- a/src/com/gitblit/client/GitblitManager.java
+++ b/src/com/gitblit/client/GitblitManager.java
@@ -73,6 +73,8 @@ import com.gitblit.utils.StringUtils;
public class GitblitManager extends JFrame implements RegistrationsDialog.RegistrationListener {
private static final long serialVersionUID = 1L;
+ private static final String SERVER = "server";
+ private static final String FEED = "feed";
private final SimpleDateFormat dateFormat;
private JTabbedPane serverTabs;
private File configFile = new File(System.getProperty("user.home"), ".gitblit/config");
@@ -292,24 +294,24 @@ public class GitblitManager extends JFrame implements RegistrationsDialog.Regist
private void loadRegistrations() {
try {
StoredConfig config = getConfig();
- Set<String> servers = config.getSubsections("servers");
+ Set<String> servers = config.getSubsections(SERVER);
for (String server : servers) {
Date lastLogin = new Date(0);
- String date = config.getString("servers", server, "lastLogin");
+ String date = config.getString(SERVER, server, "lastLogin");
if (!StringUtils.isEmpty(date)) {
lastLogin = dateFormat.parse(date);
}
- String url = config.getString("servers", server, "url");
- String account = config.getString("servers", server, "account");
+ String url = config.getString(SERVER, server, "url");
+ String account = config.getString(SERVER, server, "account");
char[] password;
- String pw = config.getString("servers", server, "password");
+ String pw = config.getString(SERVER, server, "password");
if (StringUtils.isEmpty(pw)) {
password = new char[0];
} else {
password = new String(Base64.decode(pw)).toCharArray();
}
GitblitRegistration reg = new GitblitRegistration(server, url, account, password);
- String[] feeds = config.getStringList("servers", server, "feeds");
+ String[] feeds = config.getStringList(SERVER, server, FEED);
if (feeds != null) {
// deserialize the field definitions
for (String definition : feeds) {
@@ -332,20 +334,20 @@ public class GitblitManager extends JFrame implements RegistrationsDialog.Regist
if (!StringUtils.isEmpty(name) && !name.equals(reg.name)) {
// delete old registration
registrations.remove(name);
- config.unsetSection("servers", name);
+ config.unsetSection(SERVER, name);
}
// update registration
- config.setString("servers", reg.name, "url", reg.url);
- config.setString("servers", reg.name, "account", reg.account);
+ config.setString(SERVER, reg.name, "url", reg.url);
+ config.setString(SERVER, reg.name, "account", reg.account);
if (reg.savePassword) {
- config.setString("servers", reg.name, "password",
+ config.setString(SERVER, reg.name, "password",
Base64.encodeBytes(new String(reg.password).getBytes("UTF-8")));
} else {
- config.setString("servers", reg.name, "password", "");
+ config.setString(SERVER, reg.name, "password", "");
}
if (reg.lastLogin != null) {
- config.setString("servers", reg.name, "lastLogin", dateFormat.format(reg.lastLogin));
+ config.setString(SERVER, reg.name, "lastLogin", dateFormat.format(reg.lastLogin));
}
// serialize the feed definitions
List<String> definitions = new ArrayList<String>();
@@ -353,7 +355,7 @@ public class GitblitManager extends JFrame implements RegistrationsDialog.Regist
definitions.add(feed.toString());
}
if (definitions.size() > 0) {
- config.setStringList("servers", reg.name, "feeds", definitions);
+ config.setStringList(SERVER, reg.name, FEED, definitions);
}
config.save();
return true;
@@ -369,7 +371,7 @@ public class GitblitManager extends JFrame implements RegistrationsDialog.Regist
try {
StoredConfig config = getConfig();
for (GitblitRegistration reg : list) {
- config.unsetSection("servers", reg.name);
+ config.unsetSection(SERVER, reg.name);
registrations.remove(reg.name);
}
config.save();
diff --git a/src/com/gitblit/client/GitblitPanel.java b/src/com/gitblit/client/GitblitPanel.java
index 6c65328b..f675b4a6 100644
--- a/src/com/gitblit/client/GitblitPanel.java
+++ b/src/com/gitblit/client/GitblitPanel.java
@@ -30,8 +30,7 @@ import com.gitblit.client.ClosableTabComponent.CloseTabListener;
import com.gitblit.models.FeedModel;
/**
- * GitblitPanel performs the login, all business logic, and contains all widgets
- * to represent the state of a repository for the given account credentials.
+ * GitblitPanel is a container for the repository, users, settings, etc panels.
*
* @author James Moger
*
@@ -62,15 +61,15 @@ public class GitblitPanel extends JPanel implements CloseTabListener {
tabs = new JTabbedPane(JTabbedPane.BOTTOM);
tabs.addTab(Translation.get("gb.repositories"), createRepositoriesPanel());
- tabs.addTab(Translation.get("gb.recentActivity"), createFeedsPanel());
+ tabs.addTab(Translation.get("gb.timeline"), createFeedsPanel());
tabs.addTab(Translation.get("gb.users"), createUsersPanel());
tabs.addTab(Translation.get("gb.settings"), createSettingsPanel());
tabs.addTab(Translation.get("gb.status"), createStatusPanel());
tabs.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
- tabs.getSelectedComponent().requestFocus();
+ tabs.getSelectedComponent().requestFocus();
}
- });
+ });
setLayout(new BorderLayout());
add(tabs, BorderLayout.CENTER);
@@ -145,7 +144,7 @@ public class GitblitPanel extends JPanel implements CloseTabListener {
settingsPanel.updateTable(true);
statusPanel.updateTable(false);
} else {
- // remove the settings tab
+ // remove the settings and status tab
String[] titles = { Translation.get("gb.settings"), Translation.get("gb.status") };
for (String title : titles) {
for (int i = 0; i < tabs.getTabCount(); i++) {
diff --git a/src/com/gitblit/client/SyndicatedEntryTableModel.java b/src/com/gitblit/client/SyndicatedEntryTableModel.java
index db62b1ae..73783a5d 100644
--- a/src/com/gitblit/client/SyndicatedEntryTableModel.java
+++ b/src/com/gitblit/client/SyndicatedEntryTableModel.java
@@ -37,7 +37,7 @@ public class SyndicatedEntryTableModel extends AbstractTableModel {
List<SyndicatedEntryModel> entries;
enum Columns {
- Date, Repository, Branch, Author, Message;
+ Date, Repository,Author, Message, Branch;
@Override
public String toString() {
diff --git a/src/com/gitblit/models/FeedModel.java b/src/com/gitblit/models/FeedModel.java
index bed0a9cd..d5535850 100644
--- a/src/com/gitblit/models/FeedModel.java
+++ b/src/com/gitblit/models/FeedModel.java
@@ -16,9 +16,6 @@
package com.gitblit.models;
import java.io.Serializable;
-import java.text.MessageFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
import java.util.Date;
import com.gitblit.utils.StringUtils;
@@ -32,7 +29,6 @@ public class FeedModel implements Serializable, Comparable<FeedModel> {
public String repository;
public String branch;
- public int maxRetrieval;
public Date lastRefresh;
public boolean subscribed;
@@ -41,29 +37,26 @@ public class FeedModel implements Serializable, Comparable<FeedModel> {
public FeedModel() {
this("");
+ subscribed = false;
}
public FeedModel(String definition) {
- maxRetrieval = -1;
+ subscribed = true;
lastRefresh = new Date(0);
String[] fields = definition.split(":");
repository = fields[0];
if (fields.length > 1) {
branch = fields[1];
- maxRetrieval = Integer.parseInt(fields[2]);
- try {
- lastRefresh = new SimpleDateFormat("yyyyMMddHHmmss").parse(fields[3]);
- } catch (ParseException e) {
- }
- subscribed = true;
}
}
@Override
public String toString() {
- return MessageFormat.format("{0}:{1}:{2,number,0}:{3,date,yyyyMMddHHmmss}", repository,
- branch, maxRetrieval, lastRefresh);
+ if (StringUtils.isEmpty(branch)) {
+ return repository;
+ }
+ return repository + ":" + branch;
}
@Override
diff --git a/src/com/gitblit/utils/SyndicationUtils.java b/src/com/gitblit/utils/SyndicationUtils.java
index 6ea5f0e1..9aedeb4c 100644
--- a/src/com/gitblit/utils/SyndicationUtils.java
+++ b/src/com/gitblit/utils/SyndicationUtils.java
@@ -117,27 +117,30 @@ public class SyndicationUtils {
*/
public static List<SyndicatedEntryModel> readFeed(String url, String repository, String branch,
int numberOfEntries, String username, char[] password) throws IOException {
- String feedUrl;
- if (StringUtils.isEmpty(branch)) {
- // no branch specified
- if (numberOfEntries > 0) {
- // fixed number of entries
- feedUrl = MessageFormat.format("{0}/feed/{1}?l={2,number,0}", url, repository);
- } else {
- // server default number of entries
- feedUrl = MessageFormat.format("{0}/feed/{1}", url, repository);
- }
- } else {
- // branch specified
- if (numberOfEntries > 0) {
- // fixed number of entries
- feedUrl = MessageFormat.format("{0}/feed/{1}?h={2}&l={3,number,0}", url,
- repository, branch, numberOfEntries);
- } else {
- // server default number of entries
- feedUrl = MessageFormat.format("{0}/feed/{1}?h={2}", url, repository, branch);
+ // build feed url
+ List<String> parameters = new ArrayList<String>();
+ if (numberOfEntries > 0) {
+ parameters.add("l=" + numberOfEntries);
+ }
+ if (!StringUtils.isEmpty(branch)) {
+ parameters.add("h=" + branch);
+ }
+ StringBuilder sb = new StringBuilder();
+ sb.append(MessageFormat.format("{0}/feed/{1}", url, repository));
+ if (parameters.size() > 0) {
+ boolean first = true;
+ for (String parameter : parameters) {
+ if (first) {
+ sb.append('?');
+ first = false;
+ } else {
+ sb.append('&');
+ }
+ sb.append(parameter);
}
}
+ String feedUrl = sb.toString();
+
URLConnection conn = ConnectionUtils.openReadConnection(feedUrl, username, password);
InputStream is = conn.getInputStream();
SyndFeedInput input = new SyndFeedInput();
diff --git a/src/com/gitblit/wicket/GitBlitWebApp.properties b/src/com/gitblit/wicket/GitBlitWebApp.properties
index 6d20a729..96a5bc86 100644
--- a/src/com/gitblit/wicket/GitBlitWebApp.properties
+++ b/src/com/gitblit/wicket/GitBlitWebApp.properties
@@ -177,6 +177,6 @@ gb.free = free
gb.version = version
gb.releaseDate = release date
gb.date = date
-gb.recentActivity = recent activity
+gb.timeline = timeline
gb.subscribe = subscribe
gb.branch = branch \ No newline at end of file