From 9275bd77ebc70efeea44bbc9fc3b5723c697a475 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Mon, 07 Nov 2011 21:18:14 -0500 Subject: [PATCH] Moved ObjectCache class --- src/com/gitblit/client/SearchDialog.java | 89 +++++++++++++++++++++++++++++++++++--------- 1 files changed, 70 insertions(+), 19 deletions(-) diff --git a/src/com/gitblit/client/SearchDialog.java b/src/com/gitblit/client/SearchDialog.java index 2f45611..448aaef 100644 --- a/src/com/gitblit/client/SearchDialog.java +++ b/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() { -- Gitblit v1.9.1