]> source.dussan.org Git - gitblit.git/commitdiff
Display more refs (still not all) per rss entry. Misc ui tweaks.
authorJames Moger <james.moger@gitblit.com>
Thu, 10 Nov 2011 22:12:58 +0000 (17:12 -0500)
committerJames Moger <james.moger@gitblit.com>
Thu, 10 Nov 2011 22:12:58 +0000 (17:12 -0500)
build.xml
docs/05_roadmap.mkd
src/com/gitblit/client/MessageRenderer.java
src/com/gitblit/client/SearchDialog.java
src/com/gitblit/client/SubscriptionsDialog.java

index a896cb2716445ea05c61081dd776bc8b2eda8fe0..52d9d94e4d4d1e395ffa42d53feb2138434e3f79 100644 (file)
--- a/build.xml
+++ b/build.xml
                        <resource file="${basedir}/resources/bullet_feed.png" />\r
                        <resource file="${basedir}/resources/search-icon.png" />\r
                        <resource file="${basedir}/resources/commit_changes_16x16.png" />\r
+                       <resource file="${basedir}/resources/commit_merge_16x16.png" />\r
                        <resource file="${basedir}/resources/blank.png" />\r
                        <resource file="${basedir}/src/com/gitblit/wicket/GitBlitWebApp.properties" />\r
                                \r
index da84a6a3d8133c98c384d1ba7de763bbd721ecaa..237952b10dc0754cfd9b3c92c3f21f7c976db0ad 100644 (file)
@@ -7,6 +7,7 @@ This list is volatile.
 \r
 * Eclipse: create plugin to enumerate repositories and delegate cloning to EGit\r
 * Manager: support federation RPCs\r
+* Manager: redesign ref indicators in log, search, and activity views to support multiple local branches, remote branches, and tags\r
 \r
 ### TODO (medium priority)\r
 \r
index 9769c196f2e7b0b7cf976c51d01b42fde306a27a..2fe3415a806ba17c0aac47352c338365b84b1ffa 100644 (file)
@@ -21,6 +21,7 @@ import java.awt.FlowLayout;
 import java.awt.Font;\r
 import java.io.Serializable;\r
 \r
+import javax.swing.ImageIcon;\r
 import javax.swing.JLabel;\r
 import javax.swing.JPanel;\r
 import javax.swing.JTable;\r
@@ -28,6 +29,8 @@ import javax.swing.border.Border;
 import javax.swing.border.LineBorder;\r
 import javax.swing.table.TableCellRenderer;\r
 \r
+import org.eclipse.jgit.lib.Constants;\r
+\r
 import com.gitblit.models.FeedEntryModel;\r
 \r
 /**\r
@@ -41,33 +44,91 @@ public class MessageRenderer extends JPanel implements TableCellRenderer, Serial
 \r
        private static final long serialVersionUID = 1L;\r
 \r
-       private static final String R_TAGS = "refs/tags/";\r
-\r
-       private static final String R_HEADS = "refs/heads/";\r
-\r
-       private static final String R_REMOTES = "refs/remotes/";\r
-\r
        private final GitblitClient gitblit;\r
-\r
+       \r
+       private final ImageIcon mergeIcon;\r
+       \r
+       private final ImageIcon blankIcon;\r
+       \r
        private final JLabel messageLabel;\r
 \r
+       private final JLabel headLabel;\r
+\r
        private final JLabel branchLabel;\r
 \r
+       private final JLabel remoteLabel;\r
+\r
+       private final JLabel tagLabel;\r
+\r
        public MessageRenderer() {\r
                this(null);\r
        }\r
 \r
        public MessageRenderer(GitblitClient gitblit) {\r
-               super(new FlowLayout(FlowLayout.LEFT, 10, 1));\r
+               super(new FlowLayout(FlowLayout.LEFT, Utils.MARGIN, 1));\r
                this.gitblit = gitblit;\r
+       \r
+               mergeIcon = new ImageIcon(getClass().getResource("/commit_merge_16x16.png"));\r
+               blankIcon = new ImageIcon(getClass().getResource("/blank.png"));\r
 \r
                messageLabel = new JLabel();\r
-               branchLabel = new JLabel();\r
-               branchLabel.setOpaque(true);\r
-               Font font = branchLabel.getFont();\r
-               branchLabel.setFont(font.deriveFont(font.getSize2D() - 1f));\r
+       \r
+               headLabel = newRefLabel();\r
+               branchLabel = newRefLabel();\r
+               remoteLabel = newRefLabel();\r
+               tagLabel = newRefLabel();\r
+\r
                add(messageLabel);\r
+               add(headLabel);\r
                add(branchLabel);\r
+               add(remoteLabel);\r
+               add(tagLabel);\r
+       }\r
+\r
+       private JLabel newRefLabel() {          \r
+               JLabel label = new JLabel();\r
+               label.setOpaque(true);\r
+               Font font = label.getFont();\r
+               label.setFont(font.deriveFont(font.getSize2D() - 1f));\r
+               return label;\r
+       }\r
+\r
+       private void resetRef(JLabel label) {\r
+               label.setText("");\r
+               label.setBackground(messageLabel.getBackground());\r
+               label.setBorder(null);\r
+               label.setVisible(false);\r
+       }\r
+\r
+       private void showRef(String ref, JLabel label) {\r
+               String name = ref;\r
+               Color bg = getBackground();\r
+               Border border = null;\r
+               if (name.startsWith(Constants.R_HEADS)) {\r
+                       // local branch\r
+                       bg = Color.decode("#CCFFCC");\r
+                       name = name.substring(Constants.R_HEADS.length());\r
+                       border = new LineBorder(Color.decode("#00CC33"), 1);\r
+               } else if (name.startsWith(Constants.R_REMOTES)) {\r
+                       // remote branch\r
+                       bg = Color.decode("#CAC2F5");\r
+                       name = name.substring(Constants.R_REMOTES.length());\r
+                       border = new LineBorder(Color.decode("#6C6CBF"), 1);\r
+               } else if (name.startsWith(Constants.R_TAGS)) {\r
+                       // tag\r
+                       bg = Color.decode("#FFFFAA");\r
+                       name = name.substring(Constants.R_TAGS.length());\r
+                       border = new LineBorder(Color.decode("#FFCC00"), 1);\r
+               } else if (name.equals(Constants.HEAD)) {\r
+                       // HEAD\r
+                       bg = Color.decode("#FFAAFF");\r
+                       border = new LineBorder(Color.decode("#FF00EE"), 1);\r
+               } else {\r
+               }\r
+               label.setText(name);\r
+               label.setBackground(bg);\r
+               label.setBorder(border);\r
+               label.setVisible(true);\r
        }\r
 \r
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,\r
@@ -96,46 +157,49 @@ public class MessageRenderer extends JPanel implements TableCellRenderer, Serial
                }\r
 \r
                // reset ref label\r
-               branchLabel.setText("");\r
-               branchLabel.setBackground(messageLabel.getBackground());\r
-               branchLabel.setBorder(null);\r
+               resetRef(headLabel);\r
+               resetRef(branchLabel);\r
+               resetRef(remoteLabel);\r
+               resetRef(tagLabel);\r
 \r
+               int parentCount = 0;\r
                if (entry.tags != null) {\r
                        for (String tag : entry.tags) {\r
+                               if (tag.startsWith("ref:")) {\r
+                                       // strip ref:\r
+                                       tag = tag.substring("ref:".length());\r
+                               } else {\r
+                                       // count parents\r
+                                       if (tag.startsWith("parent:")) {\r
+                                               parentCount++;\r
+                                       }\r
+                               }\r
                                if (tag.equals(entry.branch)) {\r
+                                       // skip current branch label\r
                                        continue;\r
                                }\r
-                               String name = tag;\r
-                               Color bg = getBackground();\r
-                               Border border = null;\r
-                               if (name.startsWith(R_HEADS)) {\r
+                               if (tag.startsWith(Constants.R_HEADS)) {\r
                                        // local branch\r
-                                       bg = Color.decode("#CCFFCC");\r
-                                       name = name.substring(R_HEADS.length());\r
-                                       border = new LineBorder(Color.decode("#00CC33"), 1);\r
-                               } else if (name.startsWith(R_REMOTES)) {\r
-                                       // origin branch\r
-                                       bg = Color.decode("#CAC2F5");\r
-                                       name = name.substring(R_REMOTES.length());\r
-                                       border = new LineBorder(Color.decode("#6C6CBF"), 1);\r
-                               } else if (name.startsWith(R_TAGS)) {\r
+                                       showRef(tag, branchLabel);\r
+                               } else if (tag.startsWith(Constants.R_REMOTES)) {\r
+                                       // remote branch\r
+                                       showRef(tag, remoteLabel);\r
+                               } else if (tag.startsWith(Constants.R_TAGS)) {\r
                                        // tag\r
-                                       bg = Color.decode("#FFFFAA");\r
-                                       name = name.substring(R_TAGS.length());\r
-                                       border = new LineBorder(Color.decode("#FFCC00"), 1);\r
-                               } else if (name.equals("HEAD")) {\r
+                                       showRef(tag, tagLabel);\r
+                               } else if (tag.equals(Constants.HEAD)) {\r
                                        // HEAD\r
-                                       bg = Color.decode("#FFAAFF");\r
-                                       border = new LineBorder(Color.decode("#FF00EE"), 1);\r
-                               } else {\r
-\r
+                                       showRef(tag, headLabel);\r
                                }\r
-                               branchLabel.setText(" " + name + " ");\r
-                               branchLabel.setBackground(bg);\r
-                               branchLabel.setBorder(border);\r
                        }\r
                }\r
 \r
+               if (parentCount > 1) {\r
+                       // multiple parents, show merge icon\r
+                       messageLabel.setIcon(mergeIcon);\r
+               } else {\r
+                       messageLabel.setIcon(blankIcon);\r
+               }\r
                return this;\r
        }\r
 }
\ No newline at end of file
index 88864a919a51f9f2ea8c0f51a28448aab5f6511a..628a2097d7f874488c0a48e36ef6a5ce0e661aef 100644 (file)
@@ -92,8 +92,7 @@ public class SearchDialog extends JFrame {
                this.gitblit = gitblit;\r
                this.isSearch = isSearch;\r
                setTitle(Translation.get(isSearch ? "gb.search" : "gb.log"));\r
-               setIconImage(new ImageIcon(getClass().getResource(\r
-                               isSearch ? "/gitblt-favicon.png" : "/commit_changes_16x16.png")).getImage());\r
+               setIconImage(new ImageIcon(getClass().getResource("/gitblt-favicon.png")).getImage());\r
                initialize();\r
                setSize(900, 550);\r
        }\r
index 20a6429220ffa5693f58157073c73f68e698dd5a..ed0b971f85a392a2b88b5b9917ea11bd9627907b 100644 (file)
@@ -57,7 +57,7 @@ public abstract class SubscriptionsDialog extends JDialog {
        public SubscriptionsDialog(List<FeedModel> registrations) {\r
                super();\r
                this.feeds = registrations;\r
-               setTitle(Translation.get("gb.manage"));\r
+               setTitle(Translation.get("gb.subscribe"));\r
                setIconImage(new ImageIcon(getClass().getResource("/gitblt-favicon.png")).getImage());\r
                initialize();\r
                setSize(600, 400);\r