Add settings screen for global diff preferences
The account preferences are available under the Settings menu, but not the diff preferences. The diff preferences are only accessible from the diff screen by clicking on the gear icon. It's confusing to users that they cannot find all preferences under the Settings menu. This is why it makes sense to make the diff preferences available in the Settings menu too. There are a few diff settings which are only applicable when looking at a concrete file diff and which are not stored on server side (show/hide left side, language). These settings are not available when the diff preferences are accessed from the Settings menu. The diff preferences in the Settings menu are rendered with the same style as the diff preferences in the popup. This makes it easy for users to see that these are actually the same settings, just accessed through different paths. Change-Id: I35f45a4784592b9ce2fe35d86fd6974acc14f5c6 Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
@@ -25,6 +25,7 @@ import com.google.gwtorm.client.KeyUtil;
|
|||||||
public class PageLinks {
|
public class PageLinks {
|
||||||
public static final String SETTINGS = "/settings/";
|
public static final String SETTINGS = "/settings/";
|
||||||
public static final String SETTINGS_PREFERENCES = "/settings/preferences";
|
public static final String SETTINGS_PREFERENCES = "/settings/preferences";
|
||||||
|
public static final String SETTINGS_DIFF_PREFERENCES = "/settings/diff-preferences";
|
||||||
public static final String SETTINGS_SSHKEYS = "/settings/ssh-keys";
|
public static final String SETTINGS_SSHKEYS = "/settings/ssh-keys";
|
||||||
public static final String SETTINGS_GPGKEYS = "/settings/gpg-keys";
|
public static final String SETTINGS_GPGKEYS = "/settings/gpg-keys";
|
||||||
public static final String SETTINGS_HTTP_PASSWORD = "/settings/http-password";
|
public static final String SETTINGS_HTTP_PASSWORD = "/settings/http-password";
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import static com.google.gerrit.common.PageLinks.REGISTER;
|
|||||||
import static com.google.gerrit.common.PageLinks.SETTINGS;
|
import static com.google.gerrit.common.PageLinks.SETTINGS;
|
||||||
import static com.google.gerrit.common.PageLinks.SETTINGS_AGREEMENTS;
|
import static com.google.gerrit.common.PageLinks.SETTINGS_AGREEMENTS;
|
||||||
import static com.google.gerrit.common.PageLinks.SETTINGS_CONTACT;
|
import static com.google.gerrit.common.PageLinks.SETTINGS_CONTACT;
|
||||||
|
import static com.google.gerrit.common.PageLinks.SETTINGS_DIFF_PREFERENCES;
|
||||||
import static com.google.gerrit.common.PageLinks.SETTINGS_EXTENSION;
|
import static com.google.gerrit.common.PageLinks.SETTINGS_EXTENSION;
|
||||||
import static com.google.gerrit.common.PageLinks.SETTINGS_GPGKEYS;
|
import static com.google.gerrit.common.PageLinks.SETTINGS_GPGKEYS;
|
||||||
import static com.google.gerrit.common.PageLinks.SETTINGS_HTTP_PASSWORD;
|
import static com.google.gerrit.common.PageLinks.SETTINGS_HTTP_PASSWORD;
|
||||||
@@ -41,6 +42,7 @@ import static com.google.gerrit.common.PageLinks.toChangeQuery;
|
|||||||
|
|
||||||
import com.google.gerrit.client.account.MyAgreementsScreen;
|
import com.google.gerrit.client.account.MyAgreementsScreen;
|
||||||
import com.google.gerrit.client.account.MyContactInformationScreen;
|
import com.google.gerrit.client.account.MyContactInformationScreen;
|
||||||
|
import com.google.gerrit.client.account.MyDiffPreferencesScreen;
|
||||||
import com.google.gerrit.client.account.MyGpgKeysScreen;
|
import com.google.gerrit.client.account.MyGpgKeysScreen;
|
||||||
import com.google.gerrit.client.account.MyGroupsScreen;
|
import com.google.gerrit.client.account.MyGroupsScreen;
|
||||||
import com.google.gerrit.client.account.MyIdentitiesScreen;
|
import com.google.gerrit.client.account.MyIdentitiesScreen;
|
||||||
@@ -527,6 +529,10 @@ public class Dispatcher {
|
|||||||
return new MyPreferencesScreen();
|
return new MyPreferencesScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (matchExact(SETTINGS_DIFF_PREFERENCES, token)) {
|
||||||
|
return new MyDiffPreferencesScreen();
|
||||||
|
}
|
||||||
|
|
||||||
if (matchExact(SETTINGS_PROJECTS, token)) {
|
if (matchExact(SETTINGS_PROJECTS, token)) {
|
||||||
return new MyWatchedProjectsScreen();
|
return new MyWatchedProjectsScreen();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ public interface AccountConstants extends Constants {
|
|||||||
String tabAccountSummary();
|
String tabAccountSummary();
|
||||||
String tabAgreements();
|
String tabAgreements();
|
||||||
String tabContactInformation();
|
String tabContactInformation();
|
||||||
|
String tabDiffPreferences();
|
||||||
String tabGpgKeys();
|
String tabGpgKeys();
|
||||||
String tabHttpAccess();
|
String tabHttpAccess();
|
||||||
String tabMyGroups();
|
String tabMyGroups();
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ changeScreenNewUi = New Screen
|
|||||||
tabAccountSummary = Profile
|
tabAccountSummary = Profile
|
||||||
tabAgreements = Agreements
|
tabAgreements = Agreements
|
||||||
tabContactInformation = Contact Information
|
tabContactInformation = Contact Information
|
||||||
|
tabDiffPreferences = Diff Preferences
|
||||||
tabGpgKeys = GPG Public Keys
|
tabGpgKeys = GPG Public Keys
|
||||||
tabHttpAccess = HTTP Password
|
tabHttpAccess = HTTP Password
|
||||||
tabMyGroups = Groups
|
tabMyGroups = Groups
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
// 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.account;
|
||||||
|
|
||||||
|
import com.google.gerrit.client.Gerrit;
|
||||||
|
import com.google.gerrit.client.diff.PreferencesBox;
|
||||||
|
import com.google.gwt.user.client.ui.FlowPanel;
|
||||||
|
|
||||||
|
public class MyDiffPreferencesScreen extends SettingsScreen {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onInitUI() {
|
||||||
|
super.onInitUI();
|
||||||
|
|
||||||
|
PreferencesBox pb = new PreferencesBox(null);
|
||||||
|
pb.set(DiffPreferences.create(Gerrit.getAccountDiffPreference()));
|
||||||
|
FlowPanel p = new FlowPanel();
|
||||||
|
p.setStyleName(pb.getStyle().dialog());
|
||||||
|
p.add(pb);
|
||||||
|
add(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onLoad() {
|
||||||
|
super.onLoad();
|
||||||
|
display();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -37,6 +37,7 @@ public abstract class SettingsScreen extends MenuScreen {
|
|||||||
|
|
||||||
linkByGerrit(Util.C.tabAccountSummary(), PageLinks.SETTINGS);
|
linkByGerrit(Util.C.tabAccountSummary(), PageLinks.SETTINGS);
|
||||||
linkByGerrit(Util.C.tabPreferences(), PageLinks.SETTINGS_PREFERENCES);
|
linkByGerrit(Util.C.tabPreferences(), PageLinks.SETTINGS_PREFERENCES);
|
||||||
|
linkByGerrit(Util.C.tabDiffPreferences(), PageLinks.SETTINGS_DIFF_PREFERENCES);
|
||||||
linkByGerrit(Util.C.tabWatchedProjects(), PageLinks.SETTINGS_PROJECTS);
|
linkByGerrit(Util.C.tabWatchedProjects(), PageLinks.SETTINGS_PROJECTS);
|
||||||
linkByGerrit(Util.C.tabContactInformation(), PageLinks.SETTINGS_CONTACT);
|
linkByGerrit(Util.C.tabContactInformation(), PageLinks.SETTINGS_CONTACT);
|
||||||
if (Gerrit.info().hasSshd()) {
|
if (Gerrit.info().hasSshd()) {
|
||||||
|
|||||||
@@ -35,6 +35,8 @@ import com.google.gerrit.reviewdb.client.AccountDiffPreference.Whitespace;
|
|||||||
import com.google.gerrit.reviewdb.client.Patch;
|
import com.google.gerrit.reviewdb.client.Patch;
|
||||||
import com.google.gerrit.reviewdb.client.Patch.ChangeType;
|
import com.google.gerrit.reviewdb.client.Patch.ChangeType;
|
||||||
import com.google.gwt.core.client.GWT;
|
import com.google.gwt.core.client.GWT;
|
||||||
|
import com.google.gwt.dom.client.Element;
|
||||||
|
import com.google.gwt.dom.client.Style.Visibility;
|
||||||
import com.google.gwt.event.dom.client.ChangeEvent;
|
import com.google.gwt.event.dom.client.ChangeEvent;
|
||||||
import com.google.gwt.event.dom.client.ClickEvent;
|
import com.google.gwt.event.dom.client.ClickEvent;
|
||||||
import com.google.gwt.event.dom.client.KeyDownEvent;
|
import com.google.gwt.event.dom.client.KeyDownEvent;
|
||||||
@@ -54,6 +56,7 @@ import com.google.gwt.user.client.ui.HTMLPanel;
|
|||||||
import com.google.gwt.user.client.ui.ListBox;
|
import com.google.gwt.user.client.ui.ListBox;
|
||||||
import com.google.gwt.user.client.ui.PopupPanel;
|
import com.google.gwt.user.client.ui.PopupPanel;
|
||||||
import com.google.gwt.user.client.ui.ToggleButton;
|
import com.google.gwt.user.client.ui.ToggleButton;
|
||||||
|
import com.google.gwt.user.client.ui.UIObject;
|
||||||
|
|
||||||
import net.codemirror.mode.ModeInfo;
|
import net.codemirror.mode.ModeInfo;
|
||||||
import net.codemirror.mode.ModeInjector;
|
import net.codemirror.mode.ModeInjector;
|
||||||
@@ -62,11 +65,11 @@ import net.codemirror.theme.ThemeLoader;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
/** Displays current diff preferences. */
|
/** Displays current diff preferences. */
|
||||||
class PreferencesBox extends Composite {
|
public class PreferencesBox extends Composite {
|
||||||
interface Binder extends UiBinder<HTMLPanel, PreferencesBox> {}
|
interface Binder extends UiBinder<HTMLPanel, PreferencesBox> {}
|
||||||
private static final Binder uiBinder = GWT.create(Binder.class);
|
private static final Binder uiBinder = GWT.create(Binder.class);
|
||||||
|
|
||||||
interface Style extends CssResource {
|
public interface Style extends CssResource {
|
||||||
String dialog();
|
String dialog();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -76,6 +79,7 @@ class PreferencesBox extends Composite {
|
|||||||
private Timer updateContextTimer;
|
private Timer updateContextTimer;
|
||||||
|
|
||||||
@UiField Style style;
|
@UiField Style style;
|
||||||
|
@UiField Element header;
|
||||||
@UiField Anchor close;
|
@UiField Anchor close;
|
||||||
@UiField ListBox ignoreWhitespace;
|
@UiField ListBox ignoreWhitespace;
|
||||||
@UiField NpIntTextBox tabWidth;
|
@UiField NpIntTextBox tabWidth;
|
||||||
@@ -87,6 +91,7 @@ class PreferencesBox extends Composite {
|
|||||||
@UiField ToggleButton whitespaceErrors;
|
@UiField ToggleButton whitespaceErrors;
|
||||||
@UiField ToggleButton showTabs;
|
@UiField ToggleButton showTabs;
|
||||||
@UiField ToggleButton lineNumbers;
|
@UiField ToggleButton lineNumbers;
|
||||||
|
@UiField Element leftSideLabel;
|
||||||
@UiField ToggleButton leftSide;
|
@UiField ToggleButton leftSide;
|
||||||
@UiField ToggleButton emptyPane;
|
@UiField ToggleButton emptyPane;
|
||||||
@UiField ToggleButton topMenu;
|
@UiField ToggleButton topMenu;
|
||||||
@@ -95,17 +100,24 @@ class PreferencesBox extends Composite {
|
|||||||
@UiField ToggleButton expandAllComments;
|
@UiField ToggleButton expandAllComments;
|
||||||
@UiField ToggleButton renderEntireFile;
|
@UiField ToggleButton renderEntireFile;
|
||||||
@UiField ListBox theme;
|
@UiField ListBox theme;
|
||||||
|
@UiField Element modeLabel;
|
||||||
@UiField ListBox mode;
|
@UiField ListBox mode;
|
||||||
@UiField Button apply;
|
@UiField Button apply;
|
||||||
@UiField Button save;
|
@UiField Button save;
|
||||||
|
|
||||||
PreferencesBox(SideBySide view) {
|
public PreferencesBox(SideBySide view) {
|
||||||
this.view = view;
|
this.view = view;
|
||||||
|
|
||||||
initWidget(uiBinder.createAndBindUi(this));
|
initWidget(uiBinder.createAndBindUi(this));
|
||||||
initIgnoreWhitespace();
|
initIgnoreWhitespace();
|
||||||
initTheme();
|
initTheme();
|
||||||
initMode();
|
|
||||||
|
if (view != null) {
|
||||||
|
initMode();
|
||||||
|
} else {
|
||||||
|
UIObject.setVisible(header, false);
|
||||||
|
apply.getElement().getStyle().setVisibility(Visibility.HIDDEN);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -113,40 +125,47 @@ class PreferencesBox extends Composite {
|
|||||||
super.onLoad();
|
super.onLoad();
|
||||||
|
|
||||||
save.setVisible(Gerrit.isSignedIn());
|
save.setVisible(Gerrit.isSignedIn());
|
||||||
addDomHandler(new KeyDownHandler() {
|
|
||||||
@Override
|
|
||||||
public void onKeyDown(KeyDownEvent event) {
|
|
||||||
if (event.getNativeKeyCode() == KEY_ESCAPE
|
|
||||||
|| event.getNativeKeyCode() == ',') {
|
|
||||||
close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, KeyDownEvent.getType());
|
|
||||||
|
|
||||||
updateContextTimer = new Timer() {
|
if (view != null) {
|
||||||
@Override
|
addDomHandler(new KeyDownHandler() {
|
||||||
public void run() {
|
@Override
|
||||||
if (prefs.context() == WHOLE_FILE_CONTEXT) {
|
public void onKeyDown(KeyDownEvent event) {
|
||||||
contextEntireFile.setValue(true);
|
if (event.getNativeKeyCode() == KEY_ESCAPE
|
||||||
|
|| event.getNativeKeyCode() == ',') {
|
||||||
|
close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (view.canRenderEntireFile(prefs)) {
|
}, KeyDownEvent.getType());
|
||||||
renderEntireFile.setEnabled(true);
|
|
||||||
renderEntireFile.setValue(prefs.renderEntireFile());
|
updateContextTimer = new Timer() {
|
||||||
} else {
|
@Override
|
||||||
renderEntireFile.setValue(false);
|
public void run() {
|
||||||
renderEntireFile.setEnabled(false);
|
if (prefs.context() == WHOLE_FILE_CONTEXT) {
|
||||||
|
contextEntireFile.setValue(true);
|
||||||
|
}
|
||||||
|
if (view.canRenderEntireFile(prefs)) {
|
||||||
|
renderEntireFile.setEnabled(true);
|
||||||
|
renderEntireFile.setValue(prefs.renderEntireFile());
|
||||||
|
} else {
|
||||||
|
renderEntireFile.setValue(false);
|
||||||
|
renderEntireFile.setEnabled(false);
|
||||||
|
}
|
||||||
|
view.setContext(prefs.context());
|
||||||
}
|
}
|
||||||
view.setContext(prefs.context());
|
};
|
||||||
}
|
}
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void set(DiffPreferences prefs) {
|
public Style getStyle() {
|
||||||
|
return style;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void set(DiffPreferences prefs) {
|
||||||
this.prefs = prefs;
|
this.prefs = prefs;
|
||||||
|
|
||||||
setIgnoreWhitespace(prefs.ignoreWhitespace());
|
setIgnoreWhitespace(prefs.ignoreWhitespace());
|
||||||
tabWidth.setIntValue(prefs.tabSize());
|
tabWidth.setIntValue(prefs.tabSize());
|
||||||
if (Patch.COMMIT_MSG.equals(view.getPath())) {
|
if (view != null && Patch.COMMIT_MSG.equals(view.getPath())) {
|
||||||
lineLength.setEnabled(false);
|
lineLength.setEnabled(false);
|
||||||
lineLength.setIntValue(72);
|
lineLength.setIntValue(72);
|
||||||
} else {
|
} else {
|
||||||
@@ -157,17 +176,22 @@ class PreferencesBox extends Composite {
|
|||||||
whitespaceErrors.setValue(prefs.showWhitespaceErrors());
|
whitespaceErrors.setValue(prefs.showWhitespaceErrors());
|
||||||
showTabs.setValue(prefs.showTabs());
|
showTabs.setValue(prefs.showTabs());
|
||||||
lineNumbers.setValue(prefs.showLineNumbers());
|
lineNumbers.setValue(prefs.showLineNumbers());
|
||||||
leftSide.setValue(view.diffTable.isVisibleA());
|
|
||||||
emptyPane.setValue(!prefs.hideEmptyPane());
|
emptyPane.setValue(!prefs.hideEmptyPane());
|
||||||
leftSide.setEnabled(!(prefs.hideEmptyPane()
|
if (view != null) {
|
||||||
&& view.diffTable.getChangeType() == ChangeType.ADDED));
|
leftSide.setValue(view.diffTable.isVisibleA());
|
||||||
|
leftSide.setEnabled(!(prefs.hideEmptyPane()
|
||||||
|
&& view.diffTable.getChangeType() == ChangeType.ADDED));
|
||||||
|
} else {
|
||||||
|
UIObject.setVisible(leftSideLabel, false);
|
||||||
|
leftSide.setVisible(false);
|
||||||
|
}
|
||||||
topMenu.setValue(!prefs.hideTopMenu());
|
topMenu.setValue(!prefs.hideTopMenu());
|
||||||
autoHideDiffTableHeader.setValue(!prefs.autoHideDiffTableHeader());
|
autoHideDiffTableHeader.setValue(!prefs.autoHideDiffTableHeader());
|
||||||
manualReview.setValue(prefs.manualReview());
|
manualReview.setValue(prefs.manualReview());
|
||||||
expandAllComments.setValue(prefs.expandAllComments());
|
expandAllComments.setValue(prefs.expandAllComments());
|
||||||
setTheme(prefs.theme());
|
setTheme(prefs.theme());
|
||||||
|
|
||||||
if (view.canRenderEntireFile(prefs)) {
|
if (view == null || view.canRenderEntireFile(prefs)) {
|
||||||
renderEntireFile.setValue(prefs.renderEntireFile());
|
renderEntireFile.setValue(prefs.renderEntireFile());
|
||||||
renderEntireFile.setEnabled(true);
|
renderEntireFile.setEnabled(true);
|
||||||
} else {
|
} else {
|
||||||
@@ -175,22 +199,31 @@ class PreferencesBox extends Composite {
|
|||||||
renderEntireFile.setEnabled(false);
|
renderEntireFile.setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
mode.setEnabled(prefs.syntaxHighlighting());
|
if (view != null) {
|
||||||
if (prefs.syntaxHighlighting()) {
|
mode.setEnabled(prefs.syntaxHighlighting());
|
||||||
setMode(view.getCmFromSide(DisplaySide.B).getStringOption("mode"));
|
if (prefs.syntaxHighlighting()) {
|
||||||
|
setMode(view.getCmFromSide(DisplaySide.B).getStringOption("mode"));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
UIObject.setVisible(modeLabel, false);
|
||||||
|
mode.setVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (view.getIntraLineStatus()) {
|
if (view != null) {
|
||||||
case OFF:
|
switch (view.getIntraLineStatus()) {
|
||||||
case OK:
|
case OFF:
|
||||||
intralineDifference.setValue(prefs.intralineDifference());
|
case OK:
|
||||||
break;
|
intralineDifference.setValue(prefs.intralineDifference());
|
||||||
|
break;
|
||||||
|
|
||||||
case TIMEOUT:
|
case TIMEOUT:
|
||||||
case FAILURE:
|
case FAILURE:
|
||||||
intralineDifference.setValue(false);
|
intralineDifference.setValue(false);
|
||||||
intralineDifference.setEnabled(false);
|
intralineDifference.setEnabled(false);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
intralineDifference.setValue(prefs.intralineDifference());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (prefs.context() == WHOLE_FILE_CONTEXT) {
|
if (prefs.context() == WHOLE_FILE_CONTEXT) {
|
||||||
@@ -207,13 +240,17 @@ class PreferencesBox extends Composite {
|
|||||||
void onIgnoreWhitespace(@SuppressWarnings("unused") ChangeEvent e) {
|
void onIgnoreWhitespace(@SuppressWarnings("unused") ChangeEvent e) {
|
||||||
prefs.ignoreWhitespace(Whitespace.valueOf(
|
prefs.ignoreWhitespace(Whitespace.valueOf(
|
||||||
ignoreWhitespace.getValue(ignoreWhitespace.getSelectedIndex())));
|
ignoreWhitespace.getValue(ignoreWhitespace.getSelectedIndex())));
|
||||||
view.reloadDiffInfo();
|
if (view != null) {
|
||||||
|
view.reloadDiffInfo();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@UiHandler("intralineDifference")
|
@UiHandler("intralineDifference")
|
||||||
void onIntralineDifference(ValueChangeEvent<Boolean> e) {
|
void onIntralineDifference(ValueChangeEvent<Boolean> e) {
|
||||||
prefs.intralineDifference(e.getValue());
|
prefs.intralineDifference(e.getValue());
|
||||||
view.setShowIntraline(prefs.intralineDifference());
|
if (view != null) {
|
||||||
|
view.setShowIntraline(prefs.intralineDifference());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@UiHandler("context")
|
@UiHandler("context")
|
||||||
@@ -239,7 +276,9 @@ class PreferencesBox extends Composite {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
prefs.context(c);
|
prefs.context(c);
|
||||||
updateContextTimer.schedule(200);
|
if (view != null) {
|
||||||
|
updateContextTimer.schedule(200);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@UiHandler("contextEntireFile")
|
@UiHandler("contextEntireFile")
|
||||||
@@ -257,7 +296,9 @@ class PreferencesBox extends Composite {
|
|||||||
context.setFocus(true);
|
context.setFocus(true);
|
||||||
context.setSelectionRange(0, context.getText().length());
|
context.setSelectionRange(0, context.getText().length());
|
||||||
}
|
}
|
||||||
updateContextTimer.schedule(200);
|
if (view != null) {
|
||||||
|
updateContextTimer.schedule(200);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@UiHandler("tabWidth")
|
@UiHandler("tabWidth")
|
||||||
@@ -265,14 +306,16 @@ class PreferencesBox extends Composite {
|
|||||||
String v = e.getValue();
|
String v = e.getValue();
|
||||||
if (v != null && v.length() > 0) {
|
if (v != null && v.length() > 0) {
|
||||||
prefs.tabSize(Math.max(1, Integer.parseInt(v)));
|
prefs.tabSize(Math.max(1, Integer.parseInt(v)));
|
||||||
view.operation(new Runnable() {
|
if (view != null) {
|
||||||
@Override
|
view.operation(new Runnable() {
|
||||||
public void run() {
|
@Override
|
||||||
int v = prefs.tabSize();
|
public void run() {
|
||||||
view.getCmFromSide(DisplaySide.A).setOption("tabSize", v);
|
int v = prefs.tabSize();
|
||||||
view.getCmFromSide(DisplaySide.B).setOption("tabSize", v);
|
view.getCmFromSide(DisplaySide.A).setOption("tabSize", v);
|
||||||
}
|
view.getCmFromSide(DisplaySide.B).setOption("tabSize", v);
|
||||||
});
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -281,30 +324,38 @@ class PreferencesBox extends Composite {
|
|||||||
String v = e.getValue();
|
String v = e.getValue();
|
||||||
if (v != null && v.length() > 0) {
|
if (v != null && v.length() > 0) {
|
||||||
prefs.lineLength(Math.max(1, Integer.parseInt(v)));
|
prefs.lineLength(Math.max(1, Integer.parseInt(v)));
|
||||||
view.operation(new Runnable() {
|
if (view != null) {
|
||||||
@Override
|
view.operation(new Runnable() {
|
||||||
public void run() {
|
@Override
|
||||||
view.setLineLength(prefs.lineLength());
|
public void run() {
|
||||||
}
|
view.setLineLength(prefs.lineLength());
|
||||||
});
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@UiHandler("expandAllComments")
|
@UiHandler("expandAllComments")
|
||||||
void onExpandAllComments(ValueChangeEvent<Boolean> e) {
|
void onExpandAllComments(ValueChangeEvent<Boolean> e) {
|
||||||
prefs.expandAllComments(e.getValue());
|
prefs.expandAllComments(e.getValue());
|
||||||
view.getCommentManager().setExpandAllComments(prefs.expandAllComments());
|
if (view != null) {
|
||||||
|
view.getCommentManager().setExpandAllComments(prefs.expandAllComments());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@UiHandler("showTabs")
|
@UiHandler("showTabs")
|
||||||
void onShowTabs(ValueChangeEvent<Boolean> e) {
|
void onShowTabs(ValueChangeEvent<Boolean> e) {
|
||||||
prefs.showTabs(e.getValue());
|
prefs.showTabs(e.getValue());
|
||||||
view.setShowTabs(prefs.showTabs());
|
if (view != null) {
|
||||||
|
view.setShowTabs(prefs.showTabs());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@UiHandler("lineNumbers")
|
@UiHandler("lineNumbers")
|
||||||
void onLineNumbers(ValueChangeEvent<Boolean> e) {
|
void onLineNumbers(ValueChangeEvent<Boolean> e) {
|
||||||
prefs.showLineNumbers(e.getValue());
|
prefs.showLineNumbers(e.getValue());
|
||||||
view.setShowLineNumbers(prefs.showLineNumbers());
|
if (view != null) {
|
||||||
|
view.setShowLineNumbers(prefs.showLineNumbers());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@UiHandler("leftSide")
|
@UiHandler("leftSide")
|
||||||
@@ -315,29 +366,35 @@ class PreferencesBox extends Composite {
|
|||||||
@UiHandler("emptyPane")
|
@UiHandler("emptyPane")
|
||||||
void onHideEmptyPane(ValueChangeEvent<Boolean> e) {
|
void onHideEmptyPane(ValueChangeEvent<Boolean> e) {
|
||||||
prefs.hideEmptyPane(!e.getValue());
|
prefs.hideEmptyPane(!e.getValue());
|
||||||
view.diffTable.setHideEmptyPane(prefs.hideEmptyPane());
|
if (view != null) {
|
||||||
if (prefs.hideEmptyPane()) {
|
view.diffTable.setHideEmptyPane(prefs.hideEmptyPane());
|
||||||
if (view.diffTable.getChangeType() == ChangeType.ADDED) {
|
if (prefs.hideEmptyPane()) {
|
||||||
leftSide.setValue(false);
|
if (view.diffTable.getChangeType() == ChangeType.ADDED) {
|
||||||
leftSide.setEnabled(false);
|
leftSide.setValue(false);
|
||||||
|
leftSide.setEnabled(false);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
leftSide.setValue(view.diffTable.isVisibleA());
|
||||||
|
leftSide.setEnabled(true);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
leftSide.setValue(view.diffTable.isVisibleA());
|
|
||||||
leftSide.setEnabled(true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@UiHandler("topMenu")
|
@UiHandler("topMenu")
|
||||||
void onTopMenu(ValueChangeEvent<Boolean> e) {
|
void onTopMenu(ValueChangeEvent<Boolean> e) {
|
||||||
prefs.hideTopMenu(!e.getValue());
|
prefs.hideTopMenu(!e.getValue());
|
||||||
Gerrit.setHeaderVisible(!prefs.hideTopMenu());
|
if (view != null) {
|
||||||
view.resizeCodeMirror();
|
Gerrit.setHeaderVisible(!prefs.hideTopMenu());
|
||||||
|
view.resizeCodeMirror();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@UiHandler("autoHideDiffTableHeader")
|
@UiHandler("autoHideDiffTableHeader")
|
||||||
void onAutoHideDiffTableHeader(ValueChangeEvent<Boolean> e) {
|
void onAutoHideDiffTableHeader(ValueChangeEvent<Boolean> e) {
|
||||||
prefs.autoHideDiffTableHeader(!e.getValue());
|
prefs.autoHideDiffTableHeader(!e.getValue());
|
||||||
view.setAutoHideDiffHeader(!e.getValue());
|
if (view != null) {
|
||||||
|
view.setAutoHideDiffHeader(!e.getValue());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@UiHandler("manualReview")
|
@UiHandler("manualReview")
|
||||||
@@ -348,11 +405,13 @@ class PreferencesBox extends Composite {
|
|||||||
@UiHandler("syntaxHighlighting")
|
@UiHandler("syntaxHighlighting")
|
||||||
void onSyntaxHighlighting(ValueChangeEvent<Boolean> e) {
|
void onSyntaxHighlighting(ValueChangeEvent<Boolean> e) {
|
||||||
prefs.syntaxHighlighting(e.getValue());
|
prefs.syntaxHighlighting(e.getValue());
|
||||||
mode.setEnabled(prefs.syntaxHighlighting());
|
if (view != null) {
|
||||||
if (prefs.syntaxHighlighting()) {
|
mode.setEnabled(prefs.syntaxHighlighting());
|
||||||
setMode(view.getContentType());
|
if (prefs.syntaxHighlighting()) {
|
||||||
|
setMode(view.getContentType());
|
||||||
|
}
|
||||||
|
view.setSyntaxHighlighting(prefs.syntaxHighlighting());
|
||||||
}
|
}
|
||||||
view.setSyntaxHighlighting(prefs.syntaxHighlighting());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@UiHandler("mode")
|
@UiHandler("mode")
|
||||||
@@ -386,42 +445,48 @@ class PreferencesBox extends Composite {
|
|||||||
@UiHandler("whitespaceErrors")
|
@UiHandler("whitespaceErrors")
|
||||||
void onWhitespaceErrors(ValueChangeEvent<Boolean> e) {
|
void onWhitespaceErrors(ValueChangeEvent<Boolean> e) {
|
||||||
prefs.showWhitespaceErrors(e.getValue());
|
prefs.showWhitespaceErrors(e.getValue());
|
||||||
view.operation(new Runnable() {
|
if (view != null) {
|
||||||
@Override
|
view.operation(new Runnable() {
|
||||||
public void run() {
|
@Override
|
||||||
boolean s = prefs.showWhitespaceErrors();
|
public void run() {
|
||||||
view.getCmFromSide(DisplaySide.A).setOption("showTrailingSpace", s);
|
boolean s = prefs.showWhitespaceErrors();
|
||||||
view.getCmFromSide(DisplaySide.B).setOption("showTrailingSpace", s);
|
view.getCmFromSide(DisplaySide.A).setOption("showTrailingSpace", s);
|
||||||
}
|
view.getCmFromSide(DisplaySide.B).setOption("showTrailingSpace", s);
|
||||||
});
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@UiHandler("renderEntireFile")
|
@UiHandler("renderEntireFile")
|
||||||
void onRenderEntireFile(ValueChangeEvent<Boolean> e) {
|
void onRenderEntireFile(ValueChangeEvent<Boolean> e) {
|
||||||
prefs.renderEntireFile(e.getValue());
|
prefs.renderEntireFile(e.getValue());
|
||||||
view.updateRenderEntireFile();
|
if (view != null) {
|
||||||
|
view.updateRenderEntireFile();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@UiHandler("theme")
|
@UiHandler("theme")
|
||||||
void onTheme(@SuppressWarnings("unused") ChangeEvent e) {
|
void onTheme(@SuppressWarnings("unused") ChangeEvent e) {
|
||||||
final Theme newTheme = getSelectedTheme();
|
final Theme newTheme = getSelectedTheme();
|
||||||
prefs.theme(newTheme);
|
prefs.theme(newTheme);
|
||||||
ThemeLoader.loadTheme(newTheme, new GerritCallback<Void>() {
|
if (view != null) {
|
||||||
@Override
|
ThemeLoader.loadTheme(newTheme, new GerritCallback<Void>() {
|
||||||
public void onSuccess(Void result) {
|
@Override
|
||||||
view.operation(new Runnable() {
|
public void onSuccess(Void result) {
|
||||||
@Override
|
view.operation(new Runnable() {
|
||||||
public void run() {
|
@Override
|
||||||
if (getSelectedTheme() == newTheme && isAttached()) {
|
public void run() {
|
||||||
String t = newTheme.name().toLowerCase();
|
if (getSelectedTheme() == newTheme && isAttached()) {
|
||||||
view.getCmFromSide(DisplaySide.A).setOption("theme", t);
|
String t = newTheme.name().toLowerCase();
|
||||||
view.getCmFromSide(DisplaySide.B).setOption("theme", t);
|
view.getCmFromSide(DisplaySide.A).setOption("theme", t);
|
||||||
view.setThemeStyles(newTheme.isDark());
|
view.getCmFromSide(DisplaySide.B).setOption("theme", t);
|
||||||
|
view.setThemeStyles(newTheme.isDark());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
});
|
}
|
||||||
}
|
});
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Theme getSelectedTheme() {
|
private Theme getSelectedTheme() {
|
||||||
@@ -446,7 +511,9 @@ class PreferencesBox extends Composite {
|
|||||||
Gerrit.setAccountDiffPreference(p);
|
Gerrit.setAccountDiffPreference(p);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
close();
|
if (view != null) {
|
||||||
|
close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@UiHandler("close")
|
@UiHandler("close")
|
||||||
|
|||||||
@@ -155,15 +155,17 @@ limitations under the License.
|
|||||||
</ui:style>
|
</ui:style>
|
||||||
|
|
||||||
<g:HTMLPanel styleName='{style.box}'>
|
<g:HTMLPanel styleName='{style.box}'>
|
||||||
<table style='width: 100%'>
|
<div ui:field='header'>
|
||||||
<tr>
|
<table style='width: 100%'>
|
||||||
<td><ui:msg>Diff Preferences</ui:msg></td>
|
<tr>
|
||||||
<td style='text-align: right'>
|
<td><ui:msg>Diff Preferences</ui:msg></td>
|
||||||
<g:Anchor ui:field='close' href='javascript:;'><ui:msg>Close</ui:msg></g:Anchor>
|
<td style='text-align: right'>
|
||||||
</td>
|
<g:Anchor ui:field='close' href='javascript:;'><ui:msg>Close</ui:msg></g:Anchor>
|
||||||
</tr>
|
</td>
|
||||||
</table>
|
</tr>
|
||||||
<hr/>
|
</table>
|
||||||
|
<hr/>
|
||||||
|
</div>
|
||||||
<table class='{style.table}'>
|
<table class='{style.table}'>
|
||||||
<tr>
|
<tr>
|
||||||
<th><ui:msg>Theme</ui:msg></th>
|
<th><ui:msg>Theme</ui:msg></th>
|
||||||
@@ -208,7 +210,7 @@ limitations under the License.
|
|||||||
</g:ToggleButton></td>
|
</g:ToggleButton></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th><ui:msg>Language</ui:msg></th>
|
<th><div ui:field='modeLabel'><ui:msg>Language</ui:msg></div></th>
|
||||||
<td><g:ListBox ui:field='mode'/></td>
|
<td><g:ListBox ui:field='mode'/></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -240,7 +242,7 @@ limitations under the License.
|
|||||||
</g:ToggleButton></td>
|
</g:ToggleButton></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th><ui:msg>Left Side</ui:msg></th>
|
<th><div ui:field='leftSideLabel'><ui:msg>Left Side</ui:msg></div></th>
|
||||||
<td><g:ToggleButton ui:field='leftSide'>
|
<td><g:ToggleButton ui:field='leftSide'>
|
||||||
<g:upFace><ui:msg>Hide</ui:msg></g:upFace>
|
<g:upFace><ui:msg>Hide</ui:msg></g:upFace>
|
||||||
<g:downFace><ui:msg>Show</ui:msg></g:downFace>
|
<g:downFace><ui:msg>Show</ui:msg></g:downFace>
|
||||||
|
|||||||
Reference in New Issue
Block a user