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 80d65b0c29..dffa7c4e20 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 @@ public interface GerritResources extends ClientBundle { @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 da88034ebc..23e13d4030 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.History; 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 @@ public class ProjectListScreen extends Screen implements FilteredUserInterface { @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 80c1febbd7..cab45b5e25 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 class ProjectInfo 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 0000000000..32ba406653 Binary files /dev/null and b/gerrit-gwtui/src/main/java/com/google/gerrit/client/readOnly.png 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 a99348dd41..289e6fe234 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.Comparator; import java.util.List; public class ProjectsTable extends NavigationTable { - 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 @@ public class ProjectsTable extends NavigationTable { } 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 @@ public class ProjectsTable extends NavigationTable { 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 @@ public class ProjectsTable extends NavigationTable { } 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 1919cd3b03..bcfb394ec0 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 @@ public interface UIConstants extends Constants { 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 8a723555d8..1e0e18563d 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 @@ commentedActionButtonCancel = Cancel 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 59b544afd2..f7770398b8 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 @@ public class ListProjects implements RestReadView { 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 @@ public class ListProjects implements RestReadView { 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 8db5cbbf0b..72910a3292 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 @@ public class ProjectJson { 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 class ProjectJson { public String name; public String parent; public String description; + public Project.State state; public Map 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 f4449f01b5..459e3928b3 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 @@ public class ProjectResource implements RestResource { return control.getProject().getNameKey(); } + public Project.State getState() { + return control.getProject().getState(); + } + public ProjectControl getControl() { return control; }