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 98b9534a57..12a1fea0a9 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 @@ -232,6 +232,7 @@ public interface GerritCss extends CssResource { String sshHostKeyPanelKnownHostEntry(); String sshKeyPanelEncodedKey(); String sshKeyPanelInvalid(); + String stringListPanelButtons(); String topMostCell(); String topmenu(); String topmenuMenuLeft(); diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/StringListPanel.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/StringListPanel.java index dc7f57913e..618ee3e228 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/StringListPanel.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/StringListPanel.java @@ -40,10 +40,11 @@ import java.util.List; public class StringListPanel extends FlowPanel { private final StringListTable t; - private final Button deleteButton; private final HorizontalPanel titlePanel; + protected final HorizontalPanel buttonPanel; + private final Button deleteButton; private Image info; - private FocusWidget widget; + protected FocusWidget widget; public StringListPanel(String title, List fieldNames, FocusWidget w, boolean autoSort) { @@ -56,9 +57,10 @@ public class StringListPanel extends FlowPanel { t = new StringListTable(fieldNames, autoSort); add(t); + buttonPanel = new HorizontalPanel(); + buttonPanel.setStyleName(Gerrit.RESOURCES.css().stringListPanelButtons()); deleteButton = new Button(Gerrit.C.stringListPanelDelete()); deleteButton.setEnabled(false); - add(deleteButton); deleteButton.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { @@ -66,6 +68,8 @@ public class StringListPanel extends FlowPanel { t.deleteChecked(); } }); + buttonPanel.add(deleteButton); + add(buttonPanel); } public void display(List> values) { 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 8fb70b0a0a..466a30f006 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 @@ -43,6 +43,7 @@ public interface AccountConstants extends Constants { String myMenuInfo(); String myMenuName(); String myMenuUrl(); + String myMenuReset(); String changeScreenOldUi(); String changeScreenNewUi(); 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 9b0b244861..749b5bfaa2 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 @@ -23,6 +23,7 @@ myMenu = My Menu myMenuInfo = Menu Items for the 'My' top level menu. myMenuName = Name myMenuUrl = URL +myMenuReset = Reset changeScreenOldUi = Old Screen changeScreenNewUi = New Screen 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 d1da56c5ea..eef6ca16da 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 @@ -20,6 +20,7 @@ import static com.google.gerrit.reviewdb.client.AccountGeneralPreferences.PAGESI import com.google.gerrit.client.Dispatcher; import com.google.gerrit.client.Gerrit; import com.google.gerrit.client.StringListPanel; +import com.google.gerrit.client.config.ConfigServerApi; import com.google.gerrit.client.extensions.TopMenuItem; import com.google.gerrit.client.rpc.GerritCallback; import com.google.gerrit.client.rpc.Natives; @@ -27,6 +28,7 @@ import com.google.gerrit.client.rpc.ScreenLoadCallback; import com.google.gerrit.client.ui.OnEditEnabler; import com.google.gerrit.reviewdb.client.AccountGeneralPreferences; import com.google.gerrit.reviewdb.client.AccountGeneralPreferences.CommentVisibilityStrategy; +import com.google.gwt.core.client.JsArray; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.i18n.client.DateTimeFormat; @@ -208,10 +210,7 @@ public class MyPreferencesScreen extends SettingsScreen { } }); - myMenus = new StringListPanel(Util.C.myMenu(), - Arrays.asList(Util.C.myMenuName(), Util.C.myMenuUrl()), - save, false); - myMenus.setInfo(Util.C.myMenuInfo()); + myMenus = new MyMenuPanel(save); add(myMenus); add(save); @@ -282,9 +281,12 @@ public class MyPreferencesScreen extends SettingsScreen { setListBox(diffView, AccountGeneralPreferences.DiffView.SIDE_BY_SIDE, p.diffView()); + display(p.my()); + } + private void display(JsArray items) { List> values = new ArrayList<>(); - for (TopMenuItem item : Natives.asList(p.my())) { + for (TopMenuItem item : Natives.asList(items)) { values.add(Arrays.asList(item.getName(), item.getUrl())); } myMenus.display(values); @@ -409,4 +411,28 @@ public class MyPreferencesScreen extends SettingsScreen { return ui.name(); } } + + private class MyMenuPanel extends StringListPanel { + MyMenuPanel(Button save) { + super(Util.C.myMenu(), Arrays.asList(Util.C.myMenuName(), + Util.C.myMenuUrl()), save, false); + + setInfo(Util.C.myMenuInfo()); + + Button resetButton = new Button(Util.C.myMenuReset()); + resetButton.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + ConfigServerApi.defaultPreferences(new GerritCallback() { + @Override + public void onSuccess(Preferences p) { + MyPreferencesScreen.this.display(p.my()); + widget.setEnabled(true); + } + }); + } + }); + buttonPanel.add(resetButton); + } + } } diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/config/ConfigServerApi.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/config/ConfigServerApi.java index 9cb6c371fd..5dedaf0555 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/config/ConfigServerApi.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/config/ConfigServerApi.java @@ -14,6 +14,7 @@ package com.google.gerrit.client.config; +import com.google.gerrit.client.account.Preferences; import com.google.gerrit.client.extensions.TopMenuList; import com.google.gerrit.client.rpc.NativeMap; import com.google.gerrit.client.rpc.RestApi; @@ -32,4 +33,8 @@ public class ConfigServerApi { public static void topMenus(AsyncCallback cb) { new RestApi("/config/server/top-menus").get(cb); } + + public static void defaultPreferences(AsyncCallback cb) { + new RestApi("/config/server/preferences").get(cb); + } } 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 77daccfdf5..3c811a8949 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 @@ -1628,3 +1628,13 @@ a:hover.downloadLink { padding-top: 5px; padding-left: 5px; } + +/* StringListPanel */ +.stringListPanelButtons { + margin-left: 0.5em; +} +.stringListPanelButtons .gwt-Button { + margin-right: 2em; + font-size: 7pt; + padding: 1px; +}