From 5269a6090d5544ddbeec7c2dbd9b64fd76e1ff1b Mon Sep 17 00:00:00 2001 From: Rob Ward Date: Fri, 2 May 2014 17:16:12 +0100 Subject: [PATCH] Add option to show ID in change table Adds the ability for users to optionally select if they would like to see the Change ID in the change table. The following behaviour is expected: As an anonymous/not logged in user the change table should not show the ID. For a logged in user by default the ID should not be shown in the change table. Once the user changes the setting in preferences the ID should be shown in the change table. The setting the user selects should be persistant across server restarts. Also updates Schema to 96. Bug: issue 2646 Change-Id: I4f2d2df0b1d6e45958ddca952581410822f4895d --- .../com/google/gerrit/client/GerritCss.java | 2 ++ .../client/account/AccountConstants.java | 1 + .../account/AccountConstants.properties | 1 + .../client/account/MyPreferencesScreen.java | 12 ++++++- .../gerrit/client/account/Preferences.java | 7 ++++ .../client/changes/ChangeConstants.java | 1 + .../client/changes/ChangeConstants.properties | 1 + .../gerrit/client/changes/ChangeTable2.java | 36 +++++++++++++------ .../java/com/google/gerrit/client/gerrit.css | 8 +++++ .../client/AccountGeneralPreferences.java | 12 +++++++ .../gerrit/server/account/GetPreferences.java | 2 ++ .../gerrit/server/account/SetPreferences.java | 4 +++ .../gerrit/server/config/SetPreferences.java | 1 + .../gerrit/server/schema/SchemaVersion.java | 2 +- .../gerrit/server/schema/Schema_96.java | 25 +++++++++++++ 15 files changed, 103 insertions(+), 12 deletions(-) create mode 100644 gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_96.java diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/GerritCss.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/GerritCss.java index 12a1fea0a9..42a8d74003 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/GerritCss.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/GerritCss.java @@ -85,7 +85,9 @@ public interface GerritCss extends CssResource { String createGroupLink(); String createProjectPanel(); String dataCell(); + String dataCellHidden(); String dataHeader(); + String dataHeaderHidden(); String diffLinkCell(); String diffText(); String diffTextCONTEXT(); diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/AccountConstants.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/AccountConstants.java index ba36464b43..6ccb30d240 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/AccountConstants.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/AccountConstants.java @@ -39,6 +39,7 @@ public interface AccountConstants extends Constants { String buttonSaveChanges(); String showRelativeDateInChangeTable(); String showSizeBarInChangeTable(); + String showLegacycidInChangeTable(); String myMenu(); String myMenuInfo(); String myMenuName(); diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/AccountConstants.properties b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/AccountConstants.properties index 2a8cae237e..b0e88f8bec 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/AccountConstants.properties +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/AccountConstants.properties @@ -19,6 +19,7 @@ contextWholeFile = Whole File buttonSaveChanges = Save Changes showRelativeDateInChangeTable = Show Relative Dates In Changes Table showSizeBarInChangeTable = Show Change Sizes As Colored Bars In Changes Table +showLegacycidInChangeTable = Show Change Number In Changes Table myMenu = My Menu myMenuInfo = \ Menu items for the 'My' top level menu. \ diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyPreferencesScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyPreferencesScreen.java index eef6ca16da..aa40bddb9a 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyPreferencesScreen.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyPreferencesScreen.java @@ -52,6 +52,7 @@ public class MyPreferencesScreen extends SettingsScreen { private CheckBox showUsernameInReviewCategory; private CheckBox relativeDateInChangeTable; private CheckBox sizeBarInChangeTable; + private CheckBox legacycidInChangeTable; private ListBox maximumPageSize; private ListBox dateFormat; private ListBox timeFormat; @@ -145,8 +146,9 @@ public class MyPreferencesScreen extends SettingsScreen { relativeDateInChangeTable = new CheckBox(Util.C.showRelativeDateInChangeTable()); sizeBarInChangeTable = new CheckBox(Util.C.showSizeBarInChangeTable()); + legacycidInChangeTable = new CheckBox(Util.C.showLegacycidInChangeTable()); - final Grid formGrid = new Grid(12, 2); + final Grid formGrid = new Grid(13, 2); int row = 0; formGrid.setText(row, labelIdx, ""); @@ -185,6 +187,10 @@ public class MyPreferencesScreen extends SettingsScreen { formGrid.setText(row, labelIdx, ""); formGrid.setWidget(row, fieldIdx, sizeBarInChangeTable); row++; + + formGrid.setText(row, labelIdx, ""); + formGrid.setWidget(row, fieldIdx, legacycidInChangeTable); + row++; } formGrid.setText(row, labelIdx, Util.C.commentVisibilityLabel()); @@ -226,6 +232,7 @@ public class MyPreferencesScreen extends SettingsScreen { e.listenTo(timeFormat); e.listenTo(relativeDateInChangeTable); e.listenTo(sizeBarInChangeTable); + e.listenTo(legacycidInChangeTable); e.listenTo(commentVisibilityStrategy); e.listenTo(changeScreen); e.listenTo(diffView); @@ -254,6 +261,7 @@ public class MyPreferencesScreen extends SettingsScreen { timeFormat.setEnabled(on); relativeDateInChangeTable.setEnabled(on); sizeBarInChangeTable.setEnabled(on); + legacycidInChangeTable.setEnabled(on); commentVisibilityStrategy.setEnabled(on); changeScreen.setEnabled(on); diffView.setEnabled(on); @@ -272,6 +280,7 @@ public class MyPreferencesScreen extends SettingsScreen { p.timeFormat()); relativeDateInChangeTable.setValue(p.relativeDateInChangeTable()); sizeBarInChangeTable.setValue(p.sizeBarInChangeTable()); + legacycidInChangeTable.setValue(p.legacycidInChangeTable()); setListBox(commentVisibilityStrategy, AccountGeneralPreferences.CommentVisibilityStrategy.EXPAND_RECENT, p.commentVisibilityStrategy()); @@ -359,6 +368,7 @@ public class MyPreferencesScreen extends SettingsScreen { AccountGeneralPreferences.TimeFormat.values())); p.setRelativeDateInChangeTable(relativeDateInChangeTable.getValue()); p.setSizeBarInChangeTable(sizeBarInChangeTable.getValue()); + p.setLegacycidInChangeTable(legacycidInChangeTable.getValue()); p.setCommentVisibilityStrategy(getListBox(commentVisibilityStrategy, CommentVisibilityStrategy.EXPAND_RECENT, CommentVisibilityStrategy.values())); diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/Preferences.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/Preferences.java index 3e66e22f94..e81fa7c5da 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/Preferences.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/Preferences.java @@ -46,6 +46,7 @@ public class Preferences extends JavaScriptObject { p.showUsernameInReviewCategory(in.isShowUsernameInReviewCategory()); p.relativeDateInChangeTable(in.isRelativeDateInChangeTable()); p.sizeBarInChangeTable(in.isSizeBarInChangeTable()); + p.legacycidInChangeTable(in.isLegacycidInChangeTable()); p.commentVisibilityStrategy(in.getCommentVisibilityStrategy()); p.diffView(in.getDiffView()); p.changeScreen(in.getChangeScreen()); @@ -108,6 +109,9 @@ public class Preferences extends JavaScriptObject { public final native boolean sizeBarInChangeTable() /*-{ return this.size_bar_in_change_table || false }-*/; + public final native boolean legacycidInChangeTable() + /*-{ return this.legacycid_in_change_table || false }-*/; + public final CommentVisibilityStrategy commentVisibilityStrategy() { String s = commentVisibilityStrategyRaw(); return s != null ? CommentVisibilityStrategy.valueOf(s) : null; @@ -180,6 +184,9 @@ public class Preferences extends JavaScriptObject { public final native void sizeBarInChangeTable(boolean s) /*-{ this.size_bar_in_change_table = s }-*/; + public final native void legacycidInChangeTable(boolean s) + /*-{ this.legacycid_in_change_table = s }-*/; + public final void commentVisibilityStrategy(CommentVisibilityStrategy s) { commentVisibilityStrategyRaw(s != null ? s.toString() : null); } diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.java index b4f3e17c29..03c58d2d7f 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.java @@ -47,6 +47,7 @@ public interface ChangeConstants extends Constants { String changeTableColumnProject(); String changeTableColumnBranch(); String changeTableColumnLastUpdate(); + String changeTableColumnID(); String changeTableNone(); String changeTableNotMergeable(); diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.properties b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.properties index fb713b6fbb..c904cac216 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.properties +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.properties @@ -27,6 +27,7 @@ changeTableColumnReviewers = Reviewers changeTableColumnProject = Project changeTableColumnBranch = Branch changeTableColumnLastUpdate = Updated +changeTableColumnID = ID changeTableNone = (None) changeTableNotMergeable = Merge Conflict diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeTable2.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeTable2.java index ca9fbfd56c..386387fa23 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeTable2.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeTable2.java @@ -48,14 +48,16 @@ import java.util.List; public class ChangeTable2 extends NavigationTable { private static final int C_STAR = 1; - private static final int C_SUBJECT = 2; - private static final int C_STATUS = 3; - private static final int C_OWNER = 4; - private static final int C_PROJECT = 5; - private static final int C_BRANCH = 6; - private static final int C_LAST_UPDATE = 7; - private static final int C_SIZE = 8; - private static final int BASE_COLUMNS = 9; + private static final int C_ID = 2; + private static final int C_SUBJECT = 3; + private static final int C_STATUS = 4; + private static final int C_OWNER = 5; + private static final int C_PROJECT = 6; + private static final int C_BRANCH = 7; + private static final int C_LAST_UPDATE = 8; + private static final int C_SIZE = 9; + private static final int BASE_COLUMNS = 10; + private final boolean useNewFeatures = Gerrit.getConfig().getNewFeatures(); private final List
sections; @@ -73,6 +75,7 @@ public class ChangeTable2 extends NavigationTable { sections = new ArrayList<>(); table.setText(0, C_STAR, ""); + table.setText(0, C_ID, Util.C.changeTableColumnID()); table.setText(0, C_SUBJECT, Util.C.changeTableColumnSubject()); table.setText(0, C_STATUS, Util.C.changeTableColumnStatus()); table.setText(0, C_OWNER, Util.C.changeTableColumnOwner()); @@ -85,10 +88,16 @@ public class ChangeTable2 extends NavigationTable { final FlexCellFormatter fmt = table.getFlexCellFormatter(); fmt.addStyleName(0, C_STAR, Gerrit.RESOURCES.css().iconHeader()); - for (int i = C_SUBJECT; i < columns; i++) { + for (int i = C_ID; i < columns; i++) { fmt.addStyleName(0, i, Gerrit.RESOURCES.css().dataHeader()); } + if (!Gerrit.isSignedIn() || + (!Gerrit.getUserAccount().getGeneralPreferences() + .isLegacycidInChangeTable())) { + fmt.addStyleName(0, C_ID, Gerrit.RESOURCES.css().dataHeaderHidden()); + } + table.addClickHandler(new ClickHandler() { @Override public void onClick(final ClickEvent event) { @@ -139,7 +148,7 @@ public class ChangeTable2 extends NavigationTable { super.applyDataRowStyle(row); final CellFormatter fmt = table.getCellFormatter(); fmt.addStyleName(row, C_STAR, Gerrit.RESOURCES.css().iconCell()); - for (int i = C_SUBJECT; i < columns; i++) { + for (int i = C_ID; i < columns; i++) { fmt.addStyleName(row, i, Gerrit.RESOURCES.css().dataCell()); } fmt.addStyleName(row, C_SUBJECT, Gerrit.RESOURCES.css().cSUBJECT()); @@ -147,6 +156,12 @@ public class ChangeTable2 extends NavigationTable { fmt.addStyleName(row, C_OWNER, Gerrit.RESOURCES.css().cOWNER()); fmt.addStyleName(row, C_LAST_UPDATE, Gerrit.RESOURCES.css().cLastUpdate()); + if (!Gerrit.isSignedIn() || + (!Gerrit.getUserAccount().getGeneralPreferences() + .isLegacycidInChangeTable())) { + fmt.addStyleName(row, C_ID, Gerrit.RESOURCES.css().dataCellHidden()); + } + int i = C_SIZE; if (useNewFeatures) { fmt.addStyleName(row, i++, Gerrit.RESOURCES.css().cSIZE()); @@ -207,6 +222,7 @@ public class ChangeTable2 extends NavigationTable { c.legacy_id(), c.starred())); } + table.setWidget(row, C_ID, new TableChangeLink(String.valueOf(c.legacy_id()), c)); String subject = Util.cropSubject(c.subject()); table.setWidget(row, C_SUBJECT, new TableChangeLink(subject, c)); diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/gerrit.css b/gerrit-gwtui/src/main/java/com/google/gerrit/client/gerrit.css index 3c811a8949..b6691556f5 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/gerrit.css +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/gerrit.css @@ -545,6 +545,10 @@ a:hover { height: 20px; } +.changeTable .dataCellHidden { + display: none; +} + .changeTable a.gwt-InlineHyperlink, .changeTable a.gwt-Anchor { color: #222 !important; @@ -632,6 +636,10 @@ a:hover { color: textColor; } +.changeTable .dataHeaderHidden { + display: none; +} + .changeTable .sectionHeader { border-top: 8px solid backgroundColor; padding: 2px 6px 1px; diff --git a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/AccountGeneralPreferences.java b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/AccountGeneralPreferences.java index 82e405351e..56ceebea6b 100644 --- a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/AccountGeneralPreferences.java +++ b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/AccountGeneralPreferences.java @@ -164,6 +164,9 @@ public final class AccountGeneralPreferences { @Column(id = 16) protected boolean sizeBarInChangeTable; + @Column(id = 17) + protected boolean legacycidInChangeTable; + public AccountGeneralPreferences() { } @@ -314,6 +317,14 @@ public final class AccountGeneralPreferences { this.sizeBarInChangeTable = sizeBarInChangeTable; } + public boolean isLegacycidInChangeTable() { + return legacycidInChangeTable; + } + + public void setLegacycidInChangeTable(boolean legacycidInChangeTable) { + this.legacycidInChangeTable = legacycidInChangeTable; + } + public void resetToDefaults() { maximumPageSize = DEFAULT_PAGESIZE; showSiteHeader = true; @@ -330,5 +341,6 @@ public final class AccountGeneralPreferences { diffView = null; changeScreen = null; sizeBarInChangeTable = true; + legacycidInChangeTable = false; } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/GetPreferences.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/GetPreferences.java index 5089c3ad06..5cd912d02e 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/GetPreferences.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/GetPreferences.java @@ -111,6 +111,7 @@ public class GetPreferences implements RestReadView { Boolean showUsernameInReviewCategory; Boolean relativeDateInChangeTable; Boolean sizeBarInChangeTable; + Boolean legacycidInChangeTable; CommentVisibilityStrategy commentVisibilityStrategy; DiffView diffView; ChangeScreen changeScreen; @@ -131,6 +132,7 @@ public class GetPreferences implements RestReadView { showUsernameInReviewCategory = p.isShowUsernameInReviewCategory() ? true : null; relativeDateInChangeTable = p.isRelativeDateInChangeTable() ? true : null; sizeBarInChangeTable = p.isSizeBarInChangeTable() ? true : null; + legacycidInChangeTable = p.isLegacycidInChangeTable() ? true : null; commentVisibilityStrategy = p.getCommentVisibilityStrategy(); diffView = p.getDiffView(); changeScreen = p.getChangeScreen(); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/SetPreferences.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/SetPreferences.java index df985ec0db..fcbf46b80c 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/SetPreferences.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/SetPreferences.java @@ -63,6 +63,7 @@ public class SetPreferences implements RestModifyView { public Boolean showUsernameInReviewCategory; public Boolean relativeDateInChangeTable; public Boolean sizeBarInChangeTable; + public Boolean legacycidInChangeTable; public CommentVisibilityStrategy commentVisibilityStrategy; public DiffView diffView; public ChangeScreen changeScreen; @@ -153,6 +154,9 @@ public class SetPreferences implements RestModifyView { if (i.sizeBarInChangeTable != null) { p.setSizeBarInChangeTable(i.sizeBarInChangeTable); } + if (i.legacycidInChangeTable != null) { + p.setLegacycidInChangeTable(i.legacycidInChangeTable); + } if (i.commentVisibilityStrategy != null) { p.setCommentVisibilityStrategy(i.commentVisibilityStrategy); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/config/SetPreferences.java b/gerrit-server/src/main/java/com/google/gerrit/server/config/SetPreferences.java index e6f5253d59..7fe9f42ce2 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/config/SetPreferences.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/config/SetPreferences.java @@ -51,6 +51,7 @@ public class SetPreferences implements RestModifyView { || i.showUsernameInReviewCategory != null || i.relativeDateInChangeTable != null || i.sizeBarInChangeTable != null + || i.legacycidInChangeTable != null || i.commentVisibilityStrategy != null || i.diffView != null || i.changeScreen != null) { throw new BadRequestException("unsupported option"); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaVersion.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaVersion.java index 90d23ff928..fe5ffd8215 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaVersion.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaVersion.java @@ -32,7 +32,7 @@ import java.util.List; /** A version of the database schema. */ public abstract class SchemaVersion { /** The current schema version. */ - public static final Class C = Schema_95.class; + public static final Class C = Schema_96.class; public static class Module extends AbstractModule { @Override diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_96.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_96.java new file mode 100644 index 0000000000..bf1921386e --- /dev/null +++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_96.java @@ -0,0 +1,25 @@ +// Copyright (C) 2014 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.server.schema; + +import com.google.inject.Inject; +import com.google.inject.Provider; + +public class Schema_96 extends SchemaVersion { + @Inject + Schema_96(Provider prior) { + super(prior); + } +}