Implement service user creation form as screen
By having the form as screen there is now also a direct link to the
form.
Change-Id: I23b0d36b6e4307df85b21b752fe7649fd7b411ab
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUserForm.gwt.xml b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUserForm.gwt.xml
index 25ad4e0..01f86d2 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUserForm.gwt.xml
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUserForm.gwt.xml
@@ -25,6 +25,6 @@
<!-- resources to the plugin. No theme inherits lines were -->
<!-- added in order to make this plugin as simple as possible -->
<!-- Specify the app entry point class. -->
- <entry-point class="com.googlesource.gerrit.plugins.serviceuser.client.CreateServiceUserForm"/>
+ <entry-point class="com.googlesource.gerrit.plugins.serviceuser.client.ServiceUserPlugin"/>
<stylesheet src="serviceuser.css"/>
</module>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUserMenu.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUserMenu.java
index 51cc8d9..c5c31c6 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUserMenu.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUserMenu.java
@@ -26,7 +26,6 @@
import java.util.List;
public class CreateServiceUserMenu implements TopMenu {
- public final static String MENU_ID = "serviceuser_create-service-user";
private final String pluginName;
private final Provider<CurrentUser> userProvider;
private final List<MenuEntry> menuEntries;
@@ -39,7 +38,7 @@
menuEntries = Lists.newArrayList();
if (canCreateServiceUser()) {
menuEntries.add(new MenuEntry("People", Collections
- .singletonList(new MenuItem("Create Service User", "", "", MENU_ID))));
+ .singletonList(new MenuItem("Create Service User", "#/x/" + pluginName + "/create", ""))));
}
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/client/CreateServiceUserForm.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/client/CreateServiceUserScreen.java
similarity index 82%
rename from src/main/java/com/googlesource/gerrit/plugins/serviceuser/client/CreateServiceUserForm.java
rename to src/main/java/com/googlesource/gerrit/plugins/serviceuser/client/CreateServiceUserScreen.java
index 2b46faf..6fbf3dd 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/client/CreateServiceUserForm.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/client/CreateServiceUserScreen.java
@@ -16,6 +16,7 @@
import com.google.gerrit.plugin.client.Plugin;
import com.google.gerrit.plugin.client.rpc.RestApi;
+import com.google.gerrit.plugin.client.screen.Screen;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
@@ -32,27 +33,25 @@
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
-import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextArea;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
-import com.googlesource.gerrit.plugins.serviceuser.CreateServiceUserMenu;
+public class CreateServiceUserScreen extends VerticalPanel {
+ static class Factory implements Screen.EntryPoint {
+ @Override
+ public void onLoad(Screen screen) {
+ screen.setPageTitle("Create Service User");
+ screen.show(new CreateServiceUserScreen());
+ }
+ }
-public class CreateServiceUserForm extends Plugin {
- private DialogBox dialogBox;
private TextBox usernameTxt;
private TextArea sshKeyTxt;
private String onSuccessMessage;
- @Override
- public void onModuleLoad() {
- dialogBox = new DialogBox(false, false);
- dialogBox.setText("Create Service User");
- dialogBox.setAnimationEnabled(true);
-
- final VerticalPanel p = new VerticalPanel();
- p.setStyleName("panel");
+ CreateServiceUserScreen() {
+ setStyleName("serviceuser-panel");
Panel usernamePanel = new VerticalPanel();
usernamePanel.add(new Label("Username:"));
@@ -81,7 +80,7 @@
usernameTxt.sinkEvents(Event.ONPASTE);
usernameTxt.setVisibleLength(40);
usernamePanel.add(usernameTxt);
- p.add(usernamePanel);
+ add(usernamePanel);
Panel sshKeyPanel = new VerticalPanel();
sshKeyPanel.add(new Label("Public SSH Key:"));
@@ -117,13 +116,13 @@
sshKeyTxt.setCharacterWidth(80);
sshKeyTxt.getElement().setPropertyBoolean("spellcheck", false);
sshKeyPanel.add(sshKeyTxt);
- p.add(sshKeyPanel);
+ add(sshKeyPanel);
HorizontalPanel buttons = new HorizontalPanel();
- p.add(buttons);
+ add(buttons);
final Button createButton = new Button("Create");
- createButton.addStyleName("createButton");
+ createButton.addStyleName("serviceuser-createButton");
createButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(final ClickEvent event) {
@@ -134,29 +133,10 @@
createButton.setEnabled(false);
new OnEditEnabler(createButton, usernameTxt);
- Button closeButton = new Button("Close");
- closeButton.addClickHandler(new ClickHandler() {
- public void onClick(ClickEvent event) {
- hide();
- }
- });
- buttons.add(closeButton);
+ usernameTxt.setFocus(true);
+ createButton.setEnabled(false);
- dialogBox.setWidget(p);
-
- RootPanel rootPanel = RootPanel.get(CreateServiceUserMenu.MENU_ID);
- rootPanel.getElement().removeAttribute("href");
- rootPanel.addDomHandler(new ClickHandler() {
- @Override
- public void onClick(ClickEvent event) {
- dialogBox.center();
- dialogBox.show();
- usernameTxt.setFocus(true);
- createButton.setEnabled(false);
- }
- }, ClickEvent.getType());
-
- new RestApi("config").id("server").view("serviceuser", "messages")
+ new RestApi("config").id("server").view(Plugin.get().getPluginName(), "messages")
.get(new AsyncCallback<MessagesInfo>() {
@Override
public void onSuccess(MessagesInfo info) {
@@ -164,7 +144,7 @@
String infoMessage = info.getInfoMessage();
if (infoMessage != null && !"".equals(infoMessage)) {
- p.insert(new HTML(infoMessage), 0);
+ insert(new HTML(infoMessage), 0);
}
}
@@ -189,14 +169,14 @@
@Override
public void onSuccess(JavaScriptObject result) {
- hide();
+ clearForm();
final DialogBox successDialog = new DialogBox();
successDialog.setText("Service User Created");
successDialog.setAnimationEnabled(true);
Panel p = new VerticalPanel();
- p.setStyleName("panel");
+ p.setStyleName("serviceuser-panel");
p.add(new Label("The service user '" + username + "' was created."));
Button okButton = new Button("OK");
okButton.addClickHandler(new ClickHandler() {
@@ -222,8 +202,7 @@
});
}
- private void hide() {
- dialogBox.hide();
+ private void clearForm() {
usernameTxt.setValue("");
sshKeyTxt.setValue("");
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/client/ServiceUserPlugin.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/client/ServiceUserPlugin.java
new file mode 100644
index 0000000..ae1d203
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/client/ServiceUserPlugin.java
@@ -0,0 +1,26 @@
+// 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.googlesource.gerrit.plugins.serviceuser.client;
+
+import com.google.gerrit.plugin.client.Plugin;
+import com.google.gerrit.plugin.client.PluginEntryPoint;
+
+public class ServiceUserPlugin extends PluginEntryPoint {
+
+ @Override
+ public void onPluginLoad() {
+ Plugin.get().screen("create", new CreateServiceUserScreen.Factory());
+ }
+}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/public/serviceuser.css b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/public/serviceuser.css
index 1b8d364..f037212 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/public/serviceuser.css
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/public/serviceuser.css
@@ -1,108 +1,8 @@
-body, table td, select {
- font-family: sans-serif;
- font-size: small;
-}
-pre {
- font-family: "courier new", courier;
- font-size: small;
-}
-body {
- color: black;
- margin: 0px;
- border: 0px;
- padding: 0px;
- background: #fff;
- direction: ltr;
-}
-a, a:visited, a:hover {
- color: #0000AA;
-}
-
-/**
- * The reference theme can be used to determine when this style sheet has
- * loaded. Create a hidden div element with absolute position, assign the style
- * name below, and attach it to the DOM. Use a timer to detect when the
- * element's height and width are set to 5px.
- */
-.gwt-Reference-standard {
- height: 5px;
- width: 5px;
- zoom: 1;
-}
-
-.gwt-Button {
- margin: 0;
- padding: 3px 5px;
- text-decoration: none;
- font-size: small;
- cursor: pointer;
- border: 1px outset #ccc;
-}
-.gwt-Button:active {
- border: 1px inset #ccc;
-}
-.gwt-Button:hover {
- border-color: #9cf #69e #69e #7af;
-}
-.gwt-Button[disabled] {
- cursor: default;
- color: #888;
-}
-.gwt-Button[disabled]:hover {
- border: 1px outset #ccc;
-}
-
-.gwt-DialogBox .Caption {
- background: #e3e8f3;
- padding: 4px 4px 4px 8px;
- cursor: default;
- border-bottom: 1px solid #bbbbbb;
- border-top: 5px solid #d0e4f6;
- border-left: 5px solid #d0e4f6;
- border-right: 5px solid #d0e4f6;
-}
-
-.gwt-DialogBox .dialogContent {
-}
-
-.gwt-DialogBox .dialogMiddleCenter {
- padding: 3px;
- background: white;
- border-left: 5px solid #d0e4f6;
- border-right: 5px solid #d0e4f6;
- border-bottom: 5px solid #d0e4f6;
-}
-
-.gwt-DialogBox .dialogTopLeftInner {
- width: 5px;
- zoom: 1;
-}
-.gwt-DialogBox .dialogTopRightInner {
- width: 8px;
- zoom: 1;
-}
-.gwt-DialogBox .dialogBottomLeftInner {
- width: 5px;
- height: 8px;
- zoom: 1;
-}
-
-.gwt-DialogBox .dialogBottomRightInner {
- width: 5px;
- height: 8px;
- zoom: 1;
-}
-
-#serviceuser_create-service-user {
- cursor: pointer;
-}
-
-.panel {
+.serviceuser-panel {
border-spacing: 0px 5px;
}
-.createButton {
- margin-left: 35px !important;
- margin-right: 450px !important;
+.serviceuser-createButton {
+ margin-left: 10px !important;
}