Allow to complete project imports from import list screen
For each import listed on the import list screen there is now a button
to complete the project import.
Change-Id: I9369aa6532c319381fe10dd7b82f59d0895a4ba7
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/client/CompleteImportDialog.java b/src/main/java/com/googlesource/gerrit/plugins/importer/client/CompleteImportDialog.java
new file mode 100644
index 0000000..5874d8a
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/client/CompleteImportDialog.java
@@ -0,0 +1,115 @@
+// 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.googlesource.gerrit.plugins.importer.client;
+
+import com.google.gerrit.plugin.client.Plugin;
+import com.google.gerrit.plugin.client.rpc.NoContent;
+import com.google.gerrit.plugin.client.rpc.RestApi;
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.DialogBox;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Panel;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwtexpui.globalkey.client.GlobalKey;
+import com.google.gwtexpui.user.client.AutoCenterDialogBox;
+
+public class CompleteImportDialog extends AutoCenterDialogBox {
+
+ private final Button cancelButton;
+ private final Button completeButton;
+
+ public CompleteImportDialog(final String project) {
+ super(/* auto hide */false, /* modal */true);
+ setGlassEnabled(true);
+ setText("Complete Project Import");
+
+ FlowPanel buttons = new FlowPanel();
+
+ completeButton = new Button();
+ completeButton.setText("Complete");
+ completeButton.addClickHandler(new ClickHandler() {
+ @Override
+ public void onClick(ClickEvent event) {
+ hide();
+
+ new RestApi("config").id("server")
+ .view(Plugin.get().getName(), "projects").id(project)
+ .delete(new AsyncCallback<NoContent>() {
+ @Override
+ public void onSuccess(NoContent result) {
+ Plugin.get().go("/x/" + Plugin.get().getName() + "/list");
+
+ final DialogBox successDialog = new DialogBox();
+ successDialog.setText("Project Import Completed");
+ successDialog.setAnimationEnabled(true);
+
+ Panel p = new VerticalPanel();
+ p.setStyleName("importer-message-panel");
+ p.add(new Label("The project import was completed."));
+ Button okButton = new Button("OK");
+ okButton.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent event) {
+ successDialog.hide();
+ }
+ });
+
+ p.add(okButton);
+ successDialog.add(p);
+
+ successDialog.center();
+ successDialog.show();
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+ }
+ });
+ }
+ });
+ buttons.add(completeButton);
+
+ cancelButton = new Button();
+ cancelButton.addStyleName("importer-cancel-button");
+ cancelButton.setText("Cancel");
+ cancelButton.addClickHandler(new ClickHandler() {
+ @Override
+ public void onClick(ClickEvent event) {
+ hide();
+ }
+ });
+ buttons.add(cancelButton);
+
+ FlowPanel center = new FlowPanel();
+ Label msg = new Label("Complete import of project '" + project + "'");
+ msg.addStyleName("importer-complete-message");
+ center.add(msg);
+
+ center.add(buttons);
+ add(center);
+
+ setWidget(center);
+ }
+
+ @Override
+ public void center() {
+ super.center();
+ GlobalKey.dialog(this);
+ cancelButton.setFocus(true);
+ }
+}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/client/ImportProjectListScreen.java b/src/main/java/com/googlesource/gerrit/plugins/importer/client/ImportProjectListScreen.java
index 56b152d..acdbd4d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/client/ImportProjectListScreen.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/client/ImportProjectListScreen.java
@@ -26,6 +26,7 @@
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
+import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import java.util.List;
@@ -100,12 +101,21 @@
t.setText(row, 3, "N/A");
}
- t.setWidget(row, 4, new Button("Resume...", new ClickHandler() {
+ FlowPanel p = new FlowPanel();
+ p.setStyleName("importer-action-panel");
+ p.add(new Button("Resume...", new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
(new ResumeImportDialog(project)).center();
}
}));
+ p.add(new Button("Complete...", new ClickHandler() {
+ @Override
+ public void onClick(ClickEvent event) {
+ (new CompleteImportDialog(project)).center();
+ }
+ }));
+ t.setWidget(row, 4, p);
row++;
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/public/importer.css b/src/main/java/com/googlesource/gerrit/plugins/importer/public/importer.css
index 9ec691e..770081a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/public/importer.css
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/public/importer.css
@@ -58,6 +58,11 @@
margin-left: 150px;
}
-.importer-resume-message {
+.importer-resume-message,
+.importer-complete-message {
margin-bottom: 10px;
}
+
+.importer-action-panel .gwt-Button {
+ margin: 2px;
+}