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.dom.client.KeyUpHandler;
|
||||||
import com.google.gwt.event.logical.shared.ValueChangeEvent;
|
import com.google.gwt.event.logical.shared.ValueChangeEvent;
|
||||||
import com.google.gwt.event.logical.shared.ValueChangeHandler;
|
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.Anchor;
|
||||||
import com.google.gwt.user.client.ui.Button;
|
import com.google.gwt.user.client.ui.Button;
|
||||||
import com.google.gwt.user.client.ui.CheckBox;
|
import com.google.gwt.user.client.ui.CheckBox;
|
||||||
@@ -74,7 +73,7 @@ import java.util.HashSet;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class ProjectBranchesScreen extends ProjectScreen {
|
public class ProjectBranchesScreen extends PaginatedProjectScreen {
|
||||||
private Hyperlink prev;
|
private Hyperlink prev;
|
||||||
private Hyperlink next;
|
private Hyperlink next;
|
||||||
private BranchesTable branchTable;
|
private BranchesTable branchTable;
|
||||||
@@ -83,56 +82,16 @@ public class ProjectBranchesScreen extends ProjectScreen {
|
|||||||
private HintTextBox nameTxtBox;
|
private HintTextBox nameTxtBox;
|
||||||
private HintTextBox irevTxtBox;
|
private HintTextBox irevTxtBox;
|
||||||
private FlowPanel addPanel;
|
private FlowPanel addPanel;
|
||||||
private int pageSize;
|
|
||||||
private int start;
|
|
||||||
private NpTextBox filterTxt;
|
private NpTextBox filterTxt;
|
||||||
private String match;
|
|
||||||
private Query query;
|
private Query query;
|
||||||
|
|
||||||
public ProjectBranchesScreen(final Project.NameKey toShow) {
|
public ProjectBranchesScreen(final Project.NameKey toShow) {
|
||||||
super(toShow);
|
super(toShow);
|
||||||
pageSize = Gerrit.getUserPreferences().changesPerPage();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void parseToken() {
|
@Override
|
||||||
String token = getToken();
|
public String getScreenToken() {
|
||||||
|
return PageLinks.toProjectBranches(getProjectKey());
|
||||||
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
|
@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.Hyperlink;
|
||||||
import com.google.gerrit.client.ui.ProjectSearchLink;
|
import com.google.gerrit.client.ui.ProjectSearchLink;
|
||||||
import com.google.gerrit.client.ui.ProjectsTable;
|
import com.google.gerrit.client.ui.ProjectsTable;
|
||||||
import com.google.gerrit.client.ui.Screen;
|
|
||||||
import com.google.gerrit.common.PageLinks;
|
import com.google.gerrit.common.PageLinks;
|
||||||
import com.google.gwt.event.dom.client.KeyCodes;
|
import com.google.gwt.event.dom.client.KeyCodes;
|
||||||
import com.google.gwt.event.dom.client.KeyUpEvent;
|
import com.google.gwt.event.dom.client.KeyUpEvent;
|
||||||
import com.google.gwt.event.dom.client.KeyUpHandler;
|
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.History;
|
||||||
import com.google.gwt.user.client.ui.Anchor;
|
import com.google.gwt.user.client.ui.Anchor;
|
||||||
import com.google.gwt.user.client.ui.FlowPanel;
|
import com.google.gwt.user.client.ui.FlowPanel;
|
||||||
@@ -44,37 +42,21 @@ import com.google.gwtexpui.globalkey.client.NpTextBox;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class ProjectListScreen extends Screen {
|
public class ProjectListScreen extends PaginatedProjectScreen {
|
||||||
private Hyperlink prev;
|
private Hyperlink prev;
|
||||||
private Hyperlink next;
|
private Hyperlink next;
|
||||||
private ProjectsTable projects;
|
private ProjectsTable projects;
|
||||||
private NpTextBox filterTxt;
|
private NpTextBox filterTxt;
|
||||||
private int pageSize;
|
|
||||||
|
|
||||||
private String match = "";
|
|
||||||
private int start;
|
|
||||||
private Query query;
|
private Query query;
|
||||||
|
|
||||||
public ProjectListScreen() {
|
public ProjectListScreen() {
|
||||||
pageSize = Gerrit.getUserPreferences().changesPerPage();
|
super(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ProjectListScreen(String params) {
|
public ProjectListScreen(String params) {
|
||||||
this();
|
this();
|
||||||
for (String kvPair : params.split("[,;&]")) {
|
parseToken(params);
|
||||||
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]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -83,25 +65,9 @@ public class ProjectListScreen extends Screen {
|
|||||||
query = new Query(match).start(start).run();
|
query = new Query(match).start(start).run();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupNavigationLink(Hyperlink link, String filter, int skip) {
|
@Override
|
||||||
link.setTargetHistoryToken(getTokenForScreen(filter, skip));
|
public String getScreenToken() {
|
||||||
link.setVisible(true);
|
return ADMIN_PROJECTS;
|
||||||
}
|
|
||||||
|
|
||||||
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
|
@Override
|
||||||
|
|||||||
@@ -47,7 +47,9 @@ public abstract class ProjectScreen extends Screen {
|
|||||||
@Override
|
@Override
|
||||||
protected void onInitUI() {
|
protected void onInitUI() {
|
||||||
super.onInitUI();
|
super.onInitUI();
|
||||||
setPageTitle(Util.M.project(name.get()));
|
if (name != null) {
|
||||||
|
setPageTitle(Util.M.project(name.get()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user