Projects UI: Factor common code out to PaginatedProjectScreen
Change-Id: Ic2615fb996bb29fb77f0337143baa5f56d7e3efe
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
// Copyright (C) 2015 The Android Open Source Project
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.google.gerrit.client.admin;
|
||||
|
||||
import com.google.gerrit.client.Gerrit;
|
||||
import com.google.gerrit.client.ui.Hyperlink;
|
||||
import com.google.gerrit.reviewdb.client.Project;
|
||||
import com.google.gwt.http.client.URL;
|
||||
|
||||
abstract class PaginatedProjectScreen extends ProjectScreen {
|
||||
protected int pageSize;
|
||||
protected String match;
|
||||
protected int start;
|
||||
|
||||
PaginatedProjectScreen(Project.NameKey toShow) {
|
||||
super(toShow);
|
||||
pageSize = Gerrit.getUserPreferences().changesPerPage();
|
||||
}
|
||||
|
||||
protected void parseToken(String token) {
|
||||
for (String kvPair : token.split("[,;&/?]")) {
|
||||
String[] kv = kvPair.split("=", 2);
|
||||
if (kv.length != 2 || kv[0].isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ("filter".equals(kv[0])) {
|
||||
match = URL.decodeQueryString(kv[1]);
|
||||
}
|
||||
|
||||
if ("skip".equals(kv[0])
|
||||
&& URL.decodeQueryString(kv[1]).matches("^[\\d]+")) {
|
||||
start = Integer.parseInt(URL.decodeQueryString(kv[1]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void parseToken() {
|
||||
parseToken(getToken());
|
||||
}
|
||||
|
||||
protected String getTokenForScreen(String filter, int skip) {
|
||||
String token = getScreenToken();
|
||||
if (filter != null && !filter.isEmpty()) {
|
||||
token += "?filter=" + URL.encodeQueryString(filter);
|
||||
}
|
||||
if (skip > 0) {
|
||||
if (token.contains("?filter=")) {
|
||||
token += ",";
|
||||
} else {
|
||||
token += "?";
|
||||
}
|
||||
token += "skip=" + skip;
|
||||
}
|
||||
return token;
|
||||
}
|
||||
|
||||
protected abstract String getScreenToken();
|
||||
|
||||
protected void setupNavigationLink(Hyperlink link, String filter, int skip) {
|
||||
link.setTargetHistoryToken(getTokenForScreen(filter, skip));
|
||||
link.setVisible(true);
|
||||
}
|
||||
}
|
||||
@@ -53,7 +53,6 @@ import com.google.gwt.event.dom.client.KeyUpEvent;
|
||||
import com.google.gwt.event.dom.client.KeyUpHandler;
|
||||
import com.google.gwt.event.logical.shared.ValueChangeEvent;
|
||||
import com.google.gwt.event.logical.shared.ValueChangeHandler;
|
||||
import com.google.gwt.http.client.URL;
|
||||
import com.google.gwt.user.client.ui.Anchor;
|
||||
import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.CheckBox;
|
||||
@@ -74,7 +73,7 @@ import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class ProjectBranchesScreen extends ProjectScreen {
|
||||
public class ProjectBranchesScreen extends PaginatedProjectScreen {
|
||||
private Hyperlink prev;
|
||||
private Hyperlink next;
|
||||
private BranchesTable branchTable;
|
||||
@@ -83,56 +82,16 @@ public class ProjectBranchesScreen extends ProjectScreen {
|
||||
private HintTextBox nameTxtBox;
|
||||
private HintTextBox irevTxtBox;
|
||||
private FlowPanel addPanel;
|
||||
private int pageSize;
|
||||
private int start;
|
||||
private NpTextBox filterTxt;
|
||||
private String match;
|
||||
private Query query;
|
||||
|
||||
public ProjectBranchesScreen(final Project.NameKey toShow) {
|
||||
super(toShow);
|
||||
pageSize = Gerrit.getUserPreferences().changesPerPage();
|
||||
}
|
||||
|
||||
private void parseToken() {
|
||||
String token = getToken();
|
||||
|
||||
for (String kvPair : token.split("[,;&/?]")) {
|
||||
String[] kv = kvPair.split("=", 2);
|
||||
if (kv.length != 2 || kv[0].isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ("filter".equals(kv[0])) {
|
||||
match = URL.decodeQueryString(kv[1]);
|
||||
}
|
||||
|
||||
if ("skip".equals(kv[0])
|
||||
&& URL.decodeQueryString(kv[1]).matches("^[\\d]+")) {
|
||||
start = Integer.parseInt(URL.decodeQueryString(kv[1]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setupNavigationLink(Hyperlink link, String filter, int skip) {
|
||||
link.setTargetHistoryToken(getTokenForScreen(filter, skip));
|
||||
link.setVisible(true);
|
||||
}
|
||||
|
||||
private String getTokenForScreen(String filter, int skip) {
|
||||
String token = PageLinks.toProjectBranches(getProjectKey());
|
||||
if (filter != null && !filter.isEmpty()) {
|
||||
token += "?filter=" + URL.encodeQueryString(filter);
|
||||
}
|
||||
if (skip > 0) {
|
||||
if (token.contains("?filter=")) {
|
||||
token += ",";
|
||||
} else {
|
||||
token += "?";
|
||||
}
|
||||
token += "skip=" + skip;
|
||||
}
|
||||
return token;
|
||||
@Override
|
||||
public String getScreenToken() {
|
||||
return PageLinks.toProjectBranches(getProjectKey());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -28,12 +28,10 @@ import com.google.gerrit.client.ui.HighlightingInlineHyperlink;
|
||||
import com.google.gerrit.client.ui.Hyperlink;
|
||||
import com.google.gerrit.client.ui.ProjectSearchLink;
|
||||
import com.google.gerrit.client.ui.ProjectsTable;
|
||||
import com.google.gerrit.client.ui.Screen;
|
||||
import com.google.gerrit.common.PageLinks;
|
||||
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.http.client.URL;
|
||||
import com.google.gwt.user.client.History;
|
||||
import com.google.gwt.user.client.ui.Anchor;
|
||||
import com.google.gwt.user.client.ui.FlowPanel;
|
||||
@@ -44,37 +42,21 @@ import com.google.gwtexpui.globalkey.client.NpTextBox;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ProjectListScreen extends Screen {
|
||||
public class ProjectListScreen extends PaginatedProjectScreen {
|
||||
private Hyperlink prev;
|
||||
private Hyperlink next;
|
||||
private ProjectsTable projects;
|
||||
private NpTextBox filterTxt;
|
||||
private int pageSize;
|
||||
|
||||
private String match = "";
|
||||
private int start;
|
||||
private Query query;
|
||||
|
||||
public ProjectListScreen() {
|
||||
pageSize = Gerrit.getUserPreferences().changesPerPage();
|
||||
super(null);
|
||||
}
|
||||
|
||||
public ProjectListScreen(String params) {
|
||||
this();
|
||||
for (String kvPair : params.split("[,;&]")) {
|
||||
String[] kv = kvPair.split("=", 2);
|
||||
if (kv.length != 2 || kv[0].isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ("filter".equals(kv[0])) {
|
||||
match = URL.decodeQueryString(kv[1]);
|
||||
}
|
||||
|
||||
if ("skip".equals(kv[0]) && URL.decodeQueryString(kv[1]).matches("^[\\d]+")) {
|
||||
start = Integer.parseInt(URL.decodeQueryString(kv[1]));
|
||||
}
|
||||
}
|
||||
parseToken(params);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -83,25 +65,9 @@ public class ProjectListScreen extends Screen {
|
||||
query = new Query(match).start(start).run();
|
||||
}
|
||||
|
||||
private void setupNavigationLink(Hyperlink link, String filter, int skip) {
|
||||
link.setTargetHistoryToken(getTokenForScreen(filter, skip));
|
||||
link.setVisible(true);
|
||||
}
|
||||
|
||||
private String getTokenForScreen(String filter, int skip) {
|
||||
String token = ADMIN_PROJECTS;
|
||||
if (filter != null && !filter.isEmpty()) {
|
||||
token += "?filter=" + URL.encodeQueryString(filter);
|
||||
}
|
||||
if (skip > 0) {
|
||||
if (token.contains("?filter=")) {
|
||||
token += ",";
|
||||
} else {
|
||||
token += "?";
|
||||
}
|
||||
token += "skip=" + skip;
|
||||
}
|
||||
return token;
|
||||
@Override
|
||||
public String getScreenToken() {
|
||||
return ADMIN_PROJECTS;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -47,7 +47,9 @@ public abstract class ProjectScreen extends Screen {
|
||||
@Override
|
||||
protected void onInitUI() {
|
||||
super.onInitUI();
|
||||
setPageTitle(Util.M.project(name.get()));
|
||||
if (name != null) {
|
||||
setPageTitle(Util.M.project(name.get()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user