Allow users to reset the 'My' menu entries to the server defaults

Change-Id: I42bbca895e29ca8825a569d0c0bff20342dcbc54
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
This commit is contained in:
Edwin Kempin
2014-04-09 09:43:59 +02:00
parent a44a3193af
commit d4c7abc75b
7 changed files with 56 additions and 8 deletions

View File

@@ -232,6 +232,7 @@ public interface GerritCss extends CssResource {
String sshHostKeyPanelKnownHostEntry();
String sshKeyPanelEncodedKey();
String sshKeyPanelInvalid();
String stringListPanelButtons();
String topMostCell();
String topmenu();
String topmenuMenuLeft();

View File

@@ -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<String> 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<List<String>> values) {

View File

@@ -43,6 +43,7 @@ public interface AccountConstants extends Constants {
String myMenuInfo();
String myMenuName();
String myMenuUrl();
String myMenuReset();
String changeScreenOldUi();
String changeScreenNewUi();

View File

@@ -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

View File

@@ -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<TopMenuItem> items) {
List<List<String>> 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<Preferences>() {
@Override
public void onSuccess(Preferences p) {
MyPreferencesScreen.this.display(p.my());
widget.setEnabled(true);
}
});
}
});
buttonPanel.add(resetButton);
}
}
}

View File

@@ -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<TopMenuList> cb) {
new RestApi("/config/server/top-menus").get(cb);
}
public static void defaultPreferences(AsyncCallback<Preferences> cb) {
new RestApi("/config/server/preferences").get(cb);
}
}

View File

@@ -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;
}