From c7e7e9f6d3cdc358234d1d1bfa5f3d0398226c6c Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 10 Nov 2011 17:12:58 -0500 Subject: [PATCH] Display more refs (still not all) per rss entry. Misc ui tweaks. --- src/com/gitblit/client/MessageRenderer.java | 142 ++++++++++++++++++++++++++++++++++------------- 1 files changed, 103 insertions(+), 39 deletions(-) diff --git a/src/com/gitblit/client/MessageRenderer.java b/src/com/gitblit/client/MessageRenderer.java index 9769c19..2fe3415 100644 --- a/src/com/gitblit/client/MessageRenderer.java +++ b/src/com/gitblit/client/MessageRenderer.java @@ -21,12 +21,15 @@ import java.awt.Font; import java.io.Serializable; +import javax.swing.ImageIcon; 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; + +import org.eclipse.jgit.lib.Constants; import com.gitblit.models.FeedEntryModel; @@ -41,33 +44,91 @@ private static final long serialVersionUID = 1L; - private static final String R_TAGS = "refs/tags/"; - - private static final String R_HEADS = "refs/heads/"; - - private static final String R_REMOTES = "refs/remotes/"; - private final GitblitClient gitblit; - + + private final ImageIcon mergeIcon; + + private final ImageIcon blankIcon; + private final JLabel messageLabel; + private final JLabel headLabel; + private final JLabel branchLabel; + + private final JLabel remoteLabel; + + private final JLabel tagLabel; public MessageRenderer() { this(null); } public MessageRenderer(GitblitClient gitblit) { - super(new FlowLayout(FlowLayout.LEFT, 10, 1)); + super(new FlowLayout(FlowLayout.LEFT, Utils.MARGIN, 1)); this.gitblit = gitblit; + + mergeIcon = new ImageIcon(getClass().getResource("/commit_merge_16x16.png")); + blankIcon = new ImageIcon(getClass().getResource("/blank.png")); messageLabel = new JLabel(); - branchLabel = new JLabel(); - branchLabel.setOpaque(true); - Font font = branchLabel.getFont(); - branchLabel.setFont(font.deriveFont(font.getSize2D() - 1f)); + + headLabel = newRefLabel(); + branchLabel = newRefLabel(); + remoteLabel = newRefLabel(); + tagLabel = newRefLabel(); + add(messageLabel); + add(headLabel); add(branchLabel); + add(remoteLabel); + add(tagLabel); + } + + private JLabel newRefLabel() { + JLabel label = new JLabel(); + label.setOpaque(true); + Font font = label.getFont(); + label.setFont(font.deriveFont(font.getSize2D() - 1f)); + return label; + } + + private void resetRef(JLabel label) { + label.setText(""); + label.setBackground(messageLabel.getBackground()); + label.setBorder(null); + label.setVisible(false); + } + + private void showRef(String ref, JLabel label) { + String name = ref; + Color bg = getBackground(); + Border border = null; + if (name.startsWith(Constants.R_HEADS)) { + // local branch + bg = Color.decode("#CCFFCC"); + name = name.substring(Constants.R_HEADS.length()); + border = new LineBorder(Color.decode("#00CC33"), 1); + } else if (name.startsWith(Constants.R_REMOTES)) { + // remote branch + bg = Color.decode("#CAC2F5"); + name = name.substring(Constants.R_REMOTES.length()); + border = new LineBorder(Color.decode("#6C6CBF"), 1); + } else if (name.startsWith(Constants.R_TAGS)) { + // tag + bg = Color.decode("#FFFFAA"); + name = name.substring(Constants.R_TAGS.length()); + border = new LineBorder(Color.decode("#FFCC00"), 1); + } else if (name.equals(Constants.HEAD)) { + // HEAD + bg = Color.decode("#FFAAFF"); + border = new LineBorder(Color.decode("#FF00EE"), 1); + } else { + } + label.setText(name); + label.setBackground(bg); + label.setBorder(border); + label.setVisible(true); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, @@ -96,46 +157,49 @@ } // reset ref label - branchLabel.setText(""); - branchLabel.setBackground(messageLabel.getBackground()); - branchLabel.setBorder(null); + resetRef(headLabel); + resetRef(branchLabel); + resetRef(remoteLabel); + resetRef(tagLabel); + int parentCount = 0; if (entry.tags != null) { for (String tag : entry.tags) { + if (tag.startsWith("ref:")) { + // strip ref: + tag = tag.substring("ref:".length()); + } else { + // count parents + if (tag.startsWith("parent:")) { + parentCount++; + } + } if (tag.equals(entry.branch)) { + // skip current branch label continue; } - String name = tag; - Color bg = getBackground(); - Border border = null; - if (name.startsWith(R_HEADS)) { + if (tag.startsWith(Constants.R_HEADS)) { // local branch - bg = Color.decode("#CCFFCC"); - name = name.substring(R_HEADS.length()); - border = new LineBorder(Color.decode("#00CC33"), 1); - } else if (name.startsWith(R_REMOTES)) { - // origin branch - bg = Color.decode("#CAC2F5"); - name = name.substring(R_REMOTES.length()); - border = new LineBorder(Color.decode("#6C6CBF"), 1); - } else if (name.startsWith(R_TAGS)) { + showRef(tag, branchLabel); + } else if (tag.startsWith(Constants.R_REMOTES)) { + // remote branch + showRef(tag, remoteLabel); + } else if (tag.startsWith(Constants.R_TAGS)) { // tag - bg = Color.decode("#FFFFAA"); - name = name.substring(R_TAGS.length()); - border = new LineBorder(Color.decode("#FFCC00"), 1); - } else if (name.equals("HEAD")) { + showRef(tag, tagLabel); + } else if (tag.equals(Constants.HEAD)) { // HEAD - bg = Color.decode("#FFAAFF"); - border = new LineBorder(Color.decode("#FF00EE"), 1); - } else { - + showRef(tag, headLabel); } - branchLabel.setText(" " + name + " "); - branchLabel.setBackground(bg); - branchLabel.setBorder(border); } } + if (parentCount > 1) { + // multiple parents, show merge icon + messageLabel.setIcon(mergeIcon); + } else { + messageLabel.setIcon(blankIcon); + } return this; } } \ No newline at end of file -- Gitblit v1.9.1