summaryrefslogtreecommitdiffstats
path: root/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectListPopup.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectListPopup.java')
-rw-r--r--gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectListPopup.java71
1 files changed, 53 insertions, 18 deletions
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectListPopup.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectListPopup.java
index 217ca5aace..cac766794e 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectListPopup.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectListPopup.java
@@ -14,36 +14,46 @@
package com.google.gerrit.client.ui;
+import com.google.gerrit.client.Gerrit;
import com.google.gerrit.client.account.Util;
import com.google.gerrit.client.projects.ProjectMap;
import com.google.gerrit.client.rpc.GerritCallback;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.KeyCodes;
+import com.google.gwt.event.dom.client.KeyUpEvent;
+import com.google.gwt.event.dom.client.KeyUpHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.PopupPanel;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwtexpui.globalkey.client.GlobalKey;
import com.google.gwtexpui.globalkey.client.HidePopupPanelCommand;
+import com.google.gwtexpui.globalkey.client.NpTextBox;
import com.google.gwtexpui.user.client.PluginSafeDialogBox;
/** It creates a popup containing all the projects. */
-public class ProjectListPopup {
- private ProjectsTable projectsTab;
+public class ProjectListPopup implements FilteredUserInterface {
+ private HighlightingProjectsTable projectsTab;
private PluginSafeDialogBox popup;
+ private NpTextBox filterTxt;
+ private HorizontalPanel filterPanel;
+ private String subname;
private Button close;
private ScrollPanel sp;
private PopupPanel.PositionCallback popupPosition;
private int preferredTop;
private int preferredLeft;
- private boolean popingUp;
+ private boolean poppingUp;
private boolean firstPopupLoad = true;
public void initPopup(final String popupText, final String currentPageLink) {
createWidgets(popupText, currentPageLink);
final FlowPanel pfp = new FlowPanel();
+ pfp.add(filterPanel);
sp = new ScrollPanel(projectsTab);
sp.setSize("100%", "100%");
pfp.add(sp);
@@ -84,13 +94,30 @@ public class ProjectListPopup {
protected void openRow(String projectName) {
}
- public boolean isPopingUp() {
- return popingUp;
+ public boolean isPoppingUp() {
+ return poppingUp;
}
private void createWidgets(final String popupText,
final String currentPageLink) {
- projectsTab = new ProjectsTable() {
+ filterPanel = new HorizontalPanel();
+ filterPanel.setStyleName(Gerrit.RESOURCES.css().projectFilterPanel());
+ final Label filterLabel =
+ new Label(com.google.gerrit.client.admin.Util.C.projectFilter());
+ filterLabel.setStyleName(Gerrit.RESOURCES.css().projectFilterLabel());
+ filterPanel.add(filterLabel);
+ filterTxt = new NpTextBox();
+ filterTxt.setValue(subname);
+ filterTxt.addKeyUpHandler(new KeyUpHandler() {
+ @Override
+ public void onKeyUp(KeyUpEvent event) {
+ subname = filterTxt.getValue();
+ populateProjects();
+ }
+ });
+ filterPanel.add(filterTxt);
+
+ projectsTab = new HighlightingProjectsTable() {
@Override
protected void movePointerTo(final int row, final boolean scroll) {
super.movePointerTo(row, scroll);
@@ -119,7 +146,7 @@ public class ProjectListPopup {
}
public void displayPopup() {
- popingUp = true;
+ poppingUp = true;
if (firstPopupLoad) { // For sizing/positioning, delay display until loaded
populateProjects();
} else {
@@ -132,7 +159,8 @@ public class ProjectListPopup {
}
projectsTab.setRegisterKeys(true);
projectsTab.finishDisplay();
- popingUp = false;
+ filterTxt.setFocus(true);
+ poppingUp = false;
}
}
@@ -146,15 +174,22 @@ public class ProjectListPopup {
}
protected void populateProjects() {
- ProjectMap.all(new GerritCallback<ProjectMap>() {
- @Override
- public void onSuccess(final ProjectMap result) {
- projectsTab.display(result);
- if (firstPopupLoad) { // Display was delayed until table was loaded
- firstPopupLoad = false;
- displayPopup();
- }
- }
- });
+ ProjectMap.match(subname,
+ new IgnoreOutdatedFilterResultsCallbackWrapper<ProjectMap>(this,
+ new GerritCallback<ProjectMap>() {
+ @Override
+ public void onSuccess(final ProjectMap result) {
+ projectsTab.display(result, subname);
+ if (firstPopupLoad) { // Display was delayed until table was loaded
+ firstPopupLoad = false;
+ displayPopup();
+ }
+ }
+ }));
+ }
+
+ @Override
+ public String getCurrentFilter() {
+ return subname;
}
}