From 357109c5a5518db5925f49a6700a87e7ed30ca14 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 28 Dec 2011 16:19:29 -0500
Subject: [PATCH] Unit testing. Documentation.
---
src/com/gitblit/client/SearchDialog.java | 125 +++++++++++++++++++++++++++--------------
1 files changed, 82 insertions(+), 43 deletions(-)
diff --git a/src/com/gitblit/client/SearchDialog.java b/src/com/gitblit/client/SearchDialog.java
index 5dbea78..628a209 100644
--- a/src/com/gitblit/client/SearchDialog.java
+++ b/src/com/gitblit/client/SearchDialog.java
@@ -16,6 +16,7 @@
package com.gitblit.client;
import java.awt.BorderLayout;
+import java.awt.Cursor;
import java.awt.FlowLayout;
import java.awt.Insets;
import java.awt.Rectangle;
@@ -43,8 +44,8 @@
import javax.swing.event.ListSelectionListener;
import com.gitblit.Constants;
+import com.gitblit.models.FeedEntryModel;
import com.gitblit.models.RepositoryModel;
-import com.gitblit.models.SyndicatedEntryModel;
import com.gitblit.utils.StringUtils;
/**
@@ -58,9 +59,11 @@
private static final long serialVersionUID = 1L;
+ private final boolean isSearch;
+
private final GitblitClient gitblit;
- private SyndicatedEntryTableModel tableModel;
+ private FeedEntryTableModel tableModel;
private HeaderPanel header;
@@ -84,13 +87,14 @@
private JButton next;
- public SearchDialog(GitblitClient gitblit) {
+ public SearchDialog(GitblitClient gitblit, boolean isSearch) {
super();
this.gitblit = gitblit;
- setTitle(Translation.get("gb.search"));
+ this.isSearch = isSearch;
+ setTitle(Translation.get(isSearch ? "gb.search" : "gb.log"));
setIconImage(new ImageIcon(getClass().getResource("/gitblt-favicon.png")).getImage());
initialize();
- setSize(900, 400);
+ setSize(900, 550);
}
private void initialize() {
@@ -113,7 +117,7 @@
}
});
- final JButton search = new JButton(Translation.get("gb.search"));
+ final JButton search = new JButton(Translation.get(isSearch ? "gb.search" : "gb.refresh"));
search.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
search(0);
@@ -150,20 +154,21 @@
controls.add(viewTree);
NameRenderer nameRenderer = new NameRenderer();
- tableModel = new SyndicatedEntryTableModel();
- header = new HeaderPanel(Translation.get("gb.search"), "search-icon.png");
+ tableModel = new FeedEntryTableModel();
+ header = new HeaderPanel(Translation.get(isSearch ? "gb.search" : "gb.log"),
+ isSearch ? "search-icon.png" : "commit_changes_16x16.png");
table = Utils.newTable(tableModel, Utils.DATE_FORMAT);
- String name = table.getColumnName(SyndicatedEntryTableModel.Columns.Author.ordinal());
+ String name = table.getColumnName(FeedEntryTableModel.Columns.Author.ordinal());
table.setRowHeight(nameRenderer.getFont().getSize() + 8);
table.getColumn(name).setCellRenderer(nameRenderer);
- name = table.getColumnName(SyndicatedEntryTableModel.Columns.Repository.ordinal());
+ name = table.getColumnName(FeedEntryTableModel.Columns.Repository.ordinal());
table.getColumn(name).setCellRenderer(nameRenderer);
- name = table.getColumnName(SyndicatedEntryTableModel.Columns.Branch.ordinal());
+ name = table.getColumnName(FeedEntryTableModel.Columns.Branch.ordinal());
table.getColumn(name).setCellRenderer(new BranchRenderer());
- name = table.getColumnName(SyndicatedEntryTableModel.Columns.Message.ordinal());
+ name = table.getColumnName(FeedEntryTableModel.Columns.Message.ordinal());
table.getColumn(name).setCellRenderer(new MessageRenderer());
table.addMouseListener(new MouseAdapter() {
@@ -203,9 +208,16 @@
selectedBranch = branchSelector.getSelectedItem().toString();
}
updateBranches();
- if (selectedBranch != null) {
+ if (StringUtils.isEmpty(selectedBranch)) {
+ // do not select branch
+ branchSelector.setSelectedIndex(-1);
+ } else {
if (branchChoices.getIndexOf(selectedBranch) > -1) {
+ // select branch
branchChoices.setSelectedItem(selectedBranch);
+ } else {
+ // branch does not exist, do not select branch
+ branchSelector.setSelectedIndex(-1);
}
}
}
@@ -228,19 +240,29 @@
}
});
- JPanel northControls = new JPanel(new FlowLayout(FlowLayout.LEFT, Utils.MARGIN, 0));
- northControls.add(new JLabel(Translation.get("gb.repository")));
- northControls.add(repositorySelector);
- northControls.add(new JLabel(Translation.get("gb.branch")));
- northControls.add(branchSelector);
- northControls.add(new JLabel(Translation.get("gb.type")));
- northControls.add(searchTypeSelector);
- northControls.add(new JLabel(Translation.get("gb.maxHits")));
- northControls.add(maxHitsSelector);
- northControls.add(searchFragment);
- northControls.add(search);
- northControls.add(prev);
- northControls.add(next);
+ JPanel queryPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, Utils.MARGIN, 0));
+ queryPanel.add(new JLabel(Translation.get("gb.repository")));
+ queryPanel.add(repositorySelector);
+ queryPanel.add(new JLabel(Translation.get("gb.branch")));
+ queryPanel.add(branchSelector);
+ if (isSearch) {
+ queryPanel.add(new JLabel(Translation.get("gb.type")));
+ queryPanel.add(searchTypeSelector);
+ }
+ queryPanel.add(new JLabel(Translation.get("gb.maxHits")));
+ queryPanel.add(maxHitsSelector);
+
+ JPanel actionsPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, Utils.MARGIN, 0));
+ actionsPanel.add(search);
+ actionsPanel.add(prev);
+ actionsPanel.add(next);
+
+ JPanel northControls = new JPanel(new BorderLayout(Utils.MARGIN, Utils.MARGIN));
+ northControls.add(queryPanel, BorderLayout.WEST);
+ if (isSearch) {
+ northControls.add(searchFragment, BorderLayout.CENTER);
+ }
+ northControls.add(actionsPanel, BorderLayout.EAST);
JPanel northPanel = new JPanel(new BorderLayout(0, Utils.MARGIN));
northPanel.add(header, BorderLayout.NORTH);
@@ -264,12 +286,18 @@
addWindowListener(new WindowAdapter() {
@Override
public void windowOpened(WindowEvent event) {
- searchFragment.requestFocus();
+ if (isSearch) {
+ searchFragment.requestFocus();
+ } else {
+ search(0);
+ }
}
@Override
public void windowActivated(WindowEvent event) {
- searchFragment.requestFocus();
+ if (isSearch) {
+ searchFragment.requestFocus();
+ }
}
});
}
@@ -297,25 +325,35 @@
.getSelectedItem().toString() : null;
final Constants.SearchType searchType = (Constants.SearchType) searchTypeSelector
.getSelectedItem();
- final String fragment = searchFragment.getText();
+ final String fragment = isSearch ? searchFragment.getText() : null;
final int maxEntryCount = maxHitsSelector.getSelectedIndex() > -1 ? ((Integer) maxHitsSelector
.getSelectedItem()) : -1;
- if (StringUtils.isEmpty(fragment)) {
+ if (isSearch && StringUtils.isEmpty(fragment)) {
return;
}
- SwingWorker<List<SyndicatedEntryModel>, Void> worker = new SwingWorker<List<SyndicatedEntryModel>, Void>() {
+ setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
+ SwingWorker<List<FeedEntryModel>, Void> worker = new SwingWorker<List<FeedEntryModel>, Void>() {
@Override
- protected List<SyndicatedEntryModel> doInBackground() throws IOException {
- return gitblit
- .search(repository, branch, fragment, searchType, maxEntryCount, page);
+ protected List<FeedEntryModel> doInBackground() throws IOException {
+ if (isSearch) {
+ return gitblit.search(repository, branch, fragment, searchType, maxEntryCount,
+ page);
+ } else {
+ return gitblit.log(repository, branch, maxEntryCount, page);
+ }
}
@Override
protected void done() {
+ setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
try {
- List<SyndicatedEntryModel> results = get();
- updateTable(true, fragment, results);
+ List<FeedEntryModel> results = get();
+ if (isSearch) {
+ updateTable(true, fragment, results);
+ } else {
+ updateTable(true, branch == null ? "" : branch, results);
+ }
} catch (Throwable t) {
Utils.showException(SearchDialog.this, t);
}
@@ -324,11 +362,12 @@
worker.execute();
}
- protected void updateTable(boolean pack, String fragment, List<SyndicatedEntryModel> entries) {
+ protected void updateTable(boolean pack, String text, List<FeedEntryModel> entries) {
tableModel.entries.clear();
tableModel.entries.addAll(entries);
tableModel.fireTableDataChanged();
- setTitle(Translation.get("gb.search") + ": " + fragment + " (" + entries.size()
+ setTitle(Translation.get(isSearch ? "gb.search" : "gb.log")
+ + (StringUtils.isEmpty(text) ? "" : (": " + text)) + " (" + entries.size()
+ (page > 0 ? (", pg " + (page + 1)) : "") + ")");
header.setText(getTitle());
if (pack) {
@@ -342,25 +381,25 @@
prev.setEnabled(page > 0);
}
- protected SyndicatedEntryModel getSelectedSyndicatedEntry() {
+ protected FeedEntryModel getSelectedSyndicatedEntry() {
int viewRow = table.getSelectedRow();
int modelRow = table.convertRowIndexToModel(viewRow);
- SyndicatedEntryModel entry = tableModel.get(modelRow);
+ FeedEntryModel entry = tableModel.get(modelRow);
return entry;
}
protected void viewCommit() {
- SyndicatedEntryModel entry = getSelectedSyndicatedEntry();
+ FeedEntryModel entry = getSelectedSyndicatedEntry();
Utils.browse(entry.link);
}
protected void viewCommitDiff() {
- SyndicatedEntryModel entry = getSelectedSyndicatedEntry();
+ FeedEntryModel entry = getSelectedSyndicatedEntry();
Utils.browse(entry.link.replace("/commit/", "/commitdiff/"));
}
protected void viewTree() {
- SyndicatedEntryModel entry = getSelectedSyndicatedEntry();
+ FeedEntryModel entry = getSelectedSyndicatedEntry();
Utils.browse(entry.link.replace("/commit/", "/tree/"));
}
}
--
Gitblit v1.9.1