diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/Dispatcher.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/Dispatcher.java index b16dffe270..685c4b81a9 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/Dispatcher.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/Dispatcher.java @@ -80,6 +80,7 @@ import com.google.gerrit.client.ui.Screen; import com.google.gerrit.common.PageLinks; import com.google.gerrit.common.data.PatchSetDetail; import com.google.gerrit.reviewdb.client.Account; +import com.google.gerrit.reviewdb.client.AccountGeneralPreferences.DiffView; import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.Patch; @@ -603,6 +604,18 @@ public class Dispatcher { baseId // ); } else if ("cm".equals(panel)) { + if (Gerrit.isSignedIn() + && DiffView.UNIFIED_DIFF.equals(Gerrit.getUserAccount() + .getGeneralPreferences().getDiffView())) { + return new PatchScreen.Unified( // + id, // + patchIndex, // + patchSetDetail, // + patchTable, // + top, // + baseId // + ); + } return new SideBySide2(baseId, id.getParentKey(), id.get()); } } 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 917c078d60..28a9614943 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 @@ -26,6 +26,7 @@ public interface AccountConstants extends Constants { String accountId(); String commentVisibilityLabel(); + String diffViewLabel(); String maximumPageSizeFieldLabel(); String dateFormatLabel(); String contextWholeFile(); 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 7175b6a09b..ab7e5a93ce 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 @@ -12,6 +12,7 @@ reversePatchSetOrder = Display Patch Sets In Reverse Order showUsernameInReviewCategory = Display Person Name In Review Category maximumPageSizeFieldLabel = Maximum Page Size: commentVisibilityLabel = Comment Visibility: +diffViewLabel = Diff View (ChangeScreen2 only): dateFormatLabel = Date/Time Format: contextWholeFile = Whole File buttonSaveChanges = Save Changes 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 3d1d30e065..dbc848015f 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 @@ -48,6 +48,7 @@ public class MyPreferencesScreen extends SettingsScreen { private ListBox dateFormat; private ListBox timeFormat; private ListBox commentVisibilityStrategy; + private ListBox diffView; private Button save; @Override @@ -82,6 +83,16 @@ public class MyPreferencesScreen extends SettingsScreen { AccountGeneralPreferences.CommentVisibilityStrategy.EXPAND_ALL.name() ); + diffView = new ListBox(); + diffView.addItem( + com.google.gerrit.client.changes.Util.C.sideBySide(), + AccountGeneralPreferences.DiffView.SIDE_BY_SIDE.name() + ); + diffView.addItem( + com.google.gerrit.client.changes.Util.C.unifiedDiff(), + AccountGeneralPreferences.DiffView.UNIFIED_DIFF.name() + ); + Date now = new Date(); dateFormat = new ListBox(); for (AccountGeneralPreferences.DateFormat fmt : AccountGeneralPreferences.DateFormat @@ -118,7 +129,7 @@ public class MyPreferencesScreen extends SettingsScreen { relativeDateInChangeTable = new CheckBox(Util.C.showRelativeDateInChangeTable()); - final Grid formGrid = new Grid(9, 2); + final Grid formGrid = new Grid(10, 2); int row = 0; formGrid.setText(row, labelIdx, ""); @@ -157,6 +168,10 @@ public class MyPreferencesScreen extends SettingsScreen { formGrid.setWidget(row, fieldIdx, commentVisibilityStrategy); row++; + formGrid.setText(row, labelIdx, Util.C.diffViewLabel()); + formGrid.setWidget(row, fieldIdx, diffView); + row++; + add(formGrid); save = new Button(Util.C.buttonSaveChanges()); @@ -180,6 +195,7 @@ public class MyPreferencesScreen extends SettingsScreen { e.listenTo(timeFormat); e.listenTo(relativeDateInChangeTable); e.listenTo(commentVisibilityStrategy); + e.listenTo(diffView); } @Override @@ -203,6 +219,7 @@ public class MyPreferencesScreen extends SettingsScreen { timeFormat.setEnabled(on); relativeDateInChangeTable.setEnabled(on); commentVisibilityStrategy.setEnabled(on); + diffView.setEnabled(on); } private void display(final AccountGeneralPreferences p) { @@ -220,6 +237,9 @@ public class MyPreferencesScreen extends SettingsScreen { setListBox(commentVisibilityStrategy, AccountGeneralPreferences.CommentVisibilityStrategy.EXPAND_RECENT, p.getCommentVisibilityStrategy()); + setListBox(diffView, + AccountGeneralPreferences.DiffView.SIDE_BY_SIDE, + p.getDiffView()); } private void setListBox(final ListBox f, final short defaultValue, @@ -287,6 +307,9 @@ public class MyPreferencesScreen extends SettingsScreen { p.setCommentVisibilityStrategy(getListBox(commentVisibilityStrategy, CommentVisibilityStrategy.EXPAND_RECENT, CommentVisibilityStrategy.values())); + p.setDiffView(getListBox(diffView, + AccountGeneralPreferences.DiffView.SIDE_BY_SIDE, + AccountGeneralPreferences.DiffView.values())); enable(false); save.setEnabled(false); 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 f0a9dc43fd..45687231a4 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 @@ -126,6 +126,9 @@ public interface ChangeConstants extends Constants { String messageCollapseAll(); String messageNeedsRebaseOrHasDependency(); + String sideBySide(); + String unifiedDiff(); + String patchSetInfoAuthor(); String patchSetInfoCommitter(); String patchSetInfoDownload(); 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 c39db2186e..43d59562a1 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 @@ -104,6 +104,9 @@ messageExpandAll = Expand All messageCollapseAll = Collapse All messageNeedsRebaseOrHasDependency = Need Rebase or Has Dependency +sideBySide = Side by Side +unifiedDiff = Unified Diff + patchSetInfoAuthor = Author patchSetInfoCommitter = Committer patchSetInfoDownload = Download 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 1feec1205f..53ca908fef 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 @@ -72,6 +72,11 @@ public final class AccountGeneralPreferences { EXPAND_ALL; } + public static enum DiffView { + SIDE_BY_SIDE, + UNIFIED_DIFF + } + public static enum TimeFormat { /** 12-hour clock: 1:15 am, 2:13 pm */ HHMM_12("h:mm a"), @@ -136,6 +141,9 @@ public final class AccountGeneralPreferences { @Column(id = 13, length = 20, notNull = false) protected String commentVisibilityStrategy; + @Column(id = 14, length = 20, notNull = false) + protected String diffView; + public AccountGeneralPreferences() { } @@ -259,6 +267,17 @@ public final class AccountGeneralPreferences { commentVisibilityStrategy = strategy.name(); } + public DiffView getDiffView() { + if (diffView == null) { + return DiffView.SIDE_BY_SIDE; + } + return DiffView.valueOf(diffView); + } + + public void setDiffView(DiffView diffView) { + this.diffView = diffView.name(); + } + public void resetToDefaults() { maximumPageSize = DEFAULT_PAGESIZE; showSiteHeader = true; @@ -271,5 +290,6 @@ public final class AccountGeneralPreferences { dateFormat = null; timeFormat = null; relativeDateInChangeTable = false; + diffView = null; } } 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 0e34f1e992..99bc817340 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_82.class; + public static final Class C = Schema_83.class; public static class Module extends AbstractModule { @Override diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_83.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_83.java new file mode 100644 index 0000000000..160d41c984 --- /dev/null +++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_83.java @@ -0,0 +1,26 @@ +// Copyright (C) 2013 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_83 extends SchemaVersion { + + @Inject + Schema_83(Provider prior) { + super(prior); + } +}