diff options
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.java | 71 |
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; } } |