James Moger
2011-11-07 074b4b4599383cd1b9ed1132c7474a5aaf292e78
src/com/gitblit/client/SearchDialog.java
@@ -18,6 +18,7 @@
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
@@ -77,6 +78,12 @@
   private JComboBox maxHitsSelector;
   private int page;
   private JButton prev;
   private JButton next;
   public SearchDialog(GitblitClient gitblit) {
      super();
      this.gitblit = gitblit;
@@ -88,10 +95,28 @@
   private void initialize() {
      prev = new JButton("<");
      prev.setToolTipText(Translation.get("gb.pagePrevious"));
      prev.setEnabled(false);
      prev.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            search(--page);
         }
      });
      next = new JButton(">");
      next.setToolTipText(Translation.get("gb.pageNext"));
      next.setEnabled(false);
      next.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            search(++page);
         }
      });
      final JButton search = new JButton(Translation.get("gb.search"));
      search.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            search();
            search(0);
         }
      });
@@ -178,9 +203,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);
               }
            }
         }
@@ -188,32 +220,41 @@
      branchChoices = new DefaultComboBoxModel();
      branchSelector = new JComboBox(branchChoices);
      branchSelector.setRenderer(new BranchRenderer());
      branchSelector.setRenderer(new BranchRenderer());
      searchTypeSelector = new JComboBox(Constants.SearchType.values());
      searchTypeSelector.setSelectedItem(Constants.SearchType.COMMIT);
      maxHitsSelector = new JComboBox(new Integer[] { 25, 50, 75, 100 });
      maxHitsSelector.setSelectedIndex(-1);
      maxHitsSelector.setSelectedIndex(0);
      searchFragment = new JTextField(25);
      searchFragment.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent event) {
            search();
            search(0);
         }
      });
      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);
      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);
      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);
      northControls.add(searchFragment, BorderLayout.CENTER);
      northControls.add(actionsPanel, BorderLayout.EAST);
      JPanel northPanel = new JPanel(new BorderLayout(0, Utils.MARGIN));
      northPanel.add(header, BorderLayout.NORTH);
@@ -263,7 +304,8 @@
      }
   }
   protected void search() {
   protected void search(final int page) {
      this.page = page;
      final String repository = repositorySelector.getSelectedItem().toString();
      final String branch = branchSelector.getSelectedIndex() > -1 ? branchSelector
            .getSelectedItem().toString() : null;
@@ -272,13 +314,15 @@
      final String fragment = searchFragment.getText();
      final int maxEntryCount = maxHitsSelector.getSelectedIndex() > -1 ? ((Integer) maxHitsSelector
            .getSelectedItem()) : -1;
      if (StringUtils.isEmpty(fragment)) {
         return;
      }
      SwingWorker<List<SyndicatedEntryModel>, Void> worker = new SwingWorker<List<SyndicatedEntryModel>, Void>() {
         @Override
         protected List<SyndicatedEntryModel> doInBackground() throws IOException {
            return gitblit.search(repository, branch, fragment, searchType, maxEntryCount);
            return gitblit
                  .search(repository, branch, fragment, searchType, maxEntryCount, page);
         }
         @Override
@@ -298,11 +342,18 @@
      tableModel.entries.clear();
      tableModel.entries.addAll(entries);
      tableModel.fireTableDataChanged();
      setTitle(Translation.get("gb.search") + ": " + fragment + " (" + entries.size() + ")");
      setTitle(Translation.get("gb.search") + ": " + fragment + " (" + entries.size()
            + (page > 0 ? (", pg " + (page + 1)) : "") + ")");
      header.setText(getTitle());
      if (pack) {
         Utils.packColumns(table, Utils.MARGIN);
      }
      table.scrollRectToVisible(new Rectangle(table.getCellRect(0, 0, true)));
      // update pagination buttons
      int maxHits = (Integer) maxHitsSelector.getSelectedItem();
      next.setEnabled(entries.size() == maxHits);
      prev.setEnabled(page > 0);
   }
   protected SyndicatedEntryModel getSelectedSyndicatedEntry() {