Adding display of project state to Projects -> List page
This is intended to make it more obvious if a project is hidden,
read-only, or active.
This shows an icon in the Projects list only if project is hidden
or read-only, but not when the project is active.
Change-Id: Ibb7f84abfc82483bdef9866265e823fed139d592
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/GerritResources.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/GerritResources.java
index 80d65b0..dffa7c4 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/GerritResources.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/GerritResources.java
@@ -57,4 +57,7 @@
@Source("draftComments.png")
public ImageResource draftComments();
+
+ @Source("readOnly.png")
+ public ImageResource readOnly();
}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/ProjectListScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/ProjectListScreen.java
index da88034..23e13d4 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/ProjectListScreen.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/ProjectListScreen.java
@@ -37,6 +37,7 @@
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwtexpui.globalkey.client.NpTextBox;
@@ -131,6 +132,23 @@
@Override
protected void populate(final int row, final ProjectInfo k) {
+ Image state = new Image();
+ switch (k.state()) {
+ case HIDDEN:
+ state.setResource(Gerrit.RESOURCES.redNot());
+ state.setTitle(Util.toLongString(k.state()));
+ table.setWidget(row, ProjectsTable.C_STATE, state);
+ break;
+ case READ_ONLY:
+ state.setResource(Gerrit.RESOURCES.readOnly());
+ state.setTitle(Util.toLongString(k.state()));
+ table.setWidget(row, ProjectsTable.C_STATE, state);
+ break;
+ default:
+ // Intentionally left blank, do not show an icon when active.
+ break;
+ }
+
FlowPanel fp = new FlowPanel();
fp.add(new ProjectSearchLink(k.name_key()));
fp.add(new HighlightingInlineHyperlink(k.name(), link(k), subname));
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/projects/ProjectInfo.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/projects/ProjectInfo.java
index 80c1feb..cab45b5 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/projects/ProjectInfo.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/projects/ProjectInfo.java
@@ -28,6 +28,12 @@
public final native String name() /*-{ return this.name; }-*/;
public final native String description() /*-{ return this.description; }-*/;
+ public final Project.State state() {
+ return Project.State.valueOf(getStringState());
+ }
+
+ private final native String getStringState() /*-{ return this.state; }-*/;
+
@Override
public final String getDisplayString() {
if (description() != null) {
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/readOnly.png b/gerrit-gwtui/src/main/java/com/google/gerrit/client/readOnly.png
new file mode 100644
index 0000000..32ba406
--- /dev/null
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/readOnly.png
Binary files differ
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectsTable.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectsTable.java
index a99348d..289e6fe 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectsTable.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectsTable.java
@@ -25,9 +25,10 @@
import java.util.List;
public class ProjectsTable extends NavigationTable<ProjectInfo> {
- public static final int C_NAME = 1;
- public static final int C_DESCRIPTION = 2;
- public static final int C_REPO_BROWSER = 3;
+ public static final int C_STATE = 1;
+ public static final int C_NAME = 2;
+ public static final int C_DESCRIPTION = 3;
+ public static final int C_REPO_BROWSER = 4;
public ProjectsTable() {
super(Util.C.projectItemHelp());
@@ -35,10 +36,14 @@
}
protected void initColumnHeaders() {
+ table.setText(0, C_STATE, Util.C.projectStateAbbrev());
+ table.getCellFormatter().getElement(0, C_STATE)
+ .setTitle(Util.C.projectStateHelp());
table.setText(0, C_NAME, Util.C.projectName());
table.setText(0, C_DESCRIPTION, Util.C.projectDescription());
final FlexCellFormatter fmt = table.getFlexCellFormatter();
+ fmt.addStyleName(0, C_STATE, Gerrit.RESOURCES.css().iconHeader());
fmt.addStyleName(0, C_NAME, Gerrit.RESOURCES.css().dataHeader());
fmt.addStyleName(0, C_DESCRIPTION, Gerrit.RESOURCES.css().dataHeader());
}
@@ -78,6 +83,7 @@
applyDataRowStyle(row);
final FlexCellFormatter fmt = table.getFlexCellFormatter();
+ fmt.addStyleName(row, C_STATE, Gerrit.RESOURCES.css().iconCell());
fmt.addStyleName(row, C_NAME, Gerrit.RESOURCES.css().dataCell());
fmt.addStyleName(row, C_NAME, Gerrit.RESOURCES.css().projectNameColumn());
fmt.addStyleName(row, C_DESCRIPTION, Gerrit.RESOURCES.css().dataCell());
@@ -86,6 +92,7 @@
}
protected void populate(final int row, final ProjectInfo k) {
+ table.setText(row, C_STATE, k.state().toString());
table.setText(row, C_NAME, k.name());
table.setText(row, C_DESCRIPTION, k.description());
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/UIConstants.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/UIConstants.java
index 1919cd3..bcfb394 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/UIConstants.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/UIConstants.java
@@ -23,4 +23,6 @@
String projectName();
String projectDescription();
String projectItemHelp();
+ String projectStateAbbrev();
+ String projectStateHelp();
}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/UIConstants.properties b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/UIConstants.properties
index 8a72355..1e0e185 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/UIConstants.properties
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/UIConstants.properties
@@ -3,4 +3,6 @@
projectName = Project Name
projectDescription = Project Description
-projectItemHelp = project
\ No newline at end of file
+projectItemHelp = project
+projectStateAbbrev = S
+projectStateHelp = State
\ No newline at end of file
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/ListProjects.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/ListProjects.java
index 59b544a..f777039 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/project/ListProjects.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/ListProjects.java
@@ -271,6 +271,7 @@
info.name = parentState.getProject().getName();
info.description = Strings.emptyToNull(
parentState.getProject().getDescription());
+ info.state = parentState.getProject().getState();
} else {
rejected.add(parentState.getProject().getName());
continue;
@@ -313,6 +314,8 @@
info.description = Strings.emptyToNull(e.getProject().getDescription());
}
+ info.state = e.getProject().getState();
+
try {
if (!showBranch.isEmpty()) {
Repository git = repoManager.openRepository(projectName);
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectJson.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectJson.java
index 8db5cbb..72910a3 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectJson.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectJson.java
@@ -41,6 +41,7 @@
Project.NameKey parentName = p.getParent(allProjects);
info.parent = parentName != null ? parentName.get() : null;
info.description = Strings.emptyToNull(p.getDescription());
+ info.state = p.getState();
info.finish();
return info;
}
@@ -51,6 +52,7 @@
public String name;
public String parent;
public String description;
+ public Project.State state;
public Map<String, String> branches;
void finish() {
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectResource.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectResource.java
index f4449f0..459e392 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectResource.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectResource.java
@@ -41,6 +41,10 @@
return control.getProject().getNameKey();
}
+ public Project.State getState() {
+ return control.getProject().getState();
+ }
+
public ProjectControl getControl() {
return control;
}