Support force option in ResumeImportDialog

When an import is resumed from the project import list screen it is
now possible to set the force option.

Change-Id: I91f8abfce37f772706445a0520887a7962fcde6a
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/client/ImportGroupScreen.java b/src/main/java/com/googlesource/gerrit/plugins/importer/client/ImportGroupScreen.java
index 76b3842..d1e4df1 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/client/ImportGroupScreen.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/client/ImportGroupScreen.java
@@ -14,9 +14,10 @@
 
 package com.googlesource.gerrit.plugins.importer.client;
 
-import static com.googlesource.gerrit.plugins.importer.client.TextBoxUtil.addPasswordTextBox;
-import static com.googlesource.gerrit.plugins.importer.client.TextBoxUtil.addTextBox;
-import static com.googlesource.gerrit.plugins.importer.client.TextBoxUtil.getValue;
+import static com.googlesource.gerrit.plugins.importer.client.InputUtil.addCheckBox;
+import static com.googlesource.gerrit.plugins.importer.client.InputUtil.addPasswordTextBox;
+import static com.googlesource.gerrit.plugins.importer.client.InputUtil.addTextBox;
+import static com.googlesource.gerrit.plugins.importer.client.InputUtil.getValue;
 
 import com.google.gerrit.plugin.client.Plugin;
 import com.google.gerrit.plugin.client.rpc.RestApi;
@@ -29,7 +30,6 @@
 import com.google.gwt.user.client.ui.CheckBox;
 import com.google.gwt.user.client.ui.DialogBox;
 import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.Image;
 import com.google.gwt.user.client.ui.Label;
 import com.google.gwt.user.client.ui.Panel;
 import com.google.gwt.user.client.ui.TextBox;
@@ -58,8 +58,8 @@
     nameTxt = addTextBox(this, "Group Name*", "name of the group");
     userTxt = addTextBox(this, "Remote User*", "user on remote system");
     passTxt = addPasswordTextBox(this, "Password*", "password of remote user");
-    importOwnerGroupCheckBox = addCheckBox("import owner group", "also import missing owner groups");
-    importIncludedGroupsCheckBox = addCheckBox("import included groups", "also import missing included groups");
+    importOwnerGroupCheckBox = addCheckBox(this, "import owner group", "also import missing owner groups");
+    importIncludedGroupsCheckBox = addCheckBox(this, "import included groups", "also import missing included groups");
 
     HorizontalPanel buttons = new HorizontalPanel();
     add(buttons);
@@ -80,18 +80,6 @@
     importButton.setEnabled(false);
   }
 
-  private CheckBox addCheckBox(String label, String infoMsg) {
-    HorizontalPanel hp = new HorizontalPanel();
-    CheckBox cb = new CheckBox(label);
-    cb.setText(label);
-    hp.add(cb);
-    Image info = new Image(ImporterPlugin.RESOURCES.info());
-    info.setTitle(infoMsg);
-    hp.add(info);
-    add(hp);
-    return cb;
-  }
-
   private void doImport() {
     ImportGroupInput in = ImportGroupInput.create();
     in.from(getValue(fromTxt));
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/client/ImportProjectScreen.java b/src/main/java/com/googlesource/gerrit/plugins/importer/client/ImportProjectScreen.java
index ee03cb9..23dd4f7 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/client/ImportProjectScreen.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/client/ImportProjectScreen.java
@@ -14,9 +14,9 @@
 
 package com.googlesource.gerrit.plugins.importer.client;
 
-import static com.googlesource.gerrit.plugins.importer.client.TextBoxUtil.addPasswordTextBox;
-import static com.googlesource.gerrit.plugins.importer.client.TextBoxUtil.addTextBox;
-import static com.googlesource.gerrit.plugins.importer.client.TextBoxUtil.getValue;
+import static com.googlesource.gerrit.plugins.importer.client.InputUtil.addPasswordTextBox;
+import static com.googlesource.gerrit.plugins.importer.client.InputUtil.addTextBox;
+import static com.googlesource.gerrit.plugins.importer.client.InputUtil.getValue;
 
 import com.google.gerrit.plugin.client.Plugin;
 import com.google.gerrit.plugin.client.rpc.RestApi;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/client/TextBoxUtil.java b/src/main/java/com/googlesource/gerrit/plugins/importer/client/InputUtil.java
similarity index 88%
rename from src/main/java/com/googlesource/gerrit/plugins/importer/client/TextBoxUtil.java
rename to src/main/java/com/googlesource/gerrit/plugins/importer/client/InputUtil.java
index 81d56c8..6edfe44 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/client/TextBoxUtil.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/client/InputUtil.java
@@ -19,6 +19,7 @@
 import com.google.gwt.event.dom.client.KeyPressEvent;
 import com.google.gwt.event.dom.client.KeyPressHandler;
 import com.google.gwt.user.client.Event;
+import com.google.gwt.user.client.ui.CheckBox;
 import com.google.gwt.user.client.ui.HorizontalPanel;
 import com.google.gwt.user.client.ui.Image;
 import com.google.gwt.user.client.ui.Label;
@@ -27,7 +28,7 @@
 import com.google.gwt.user.client.ui.TextBox;
 import com.google.gwt.user.client.ui.VerticalPanel;
 
-public class TextBoxUtil {
+public class InputUtil {
   public static TextBox addTextBox(Panel p, String label, String infoMsg) {
     return addTextBox(p, label, infoMsg, false);
   }
@@ -98,4 +99,16 @@
   public static String getValue(TextBox tb) {
     return tb.getValue().trim();
   }
+
+  public static CheckBox addCheckBox(Panel p, String label, String infoMsg) {
+    HorizontalPanel hp = new HorizontalPanel();
+    CheckBox cb = new CheckBox(label);
+    cb.setText(label);
+    hp.add(cb);
+    Image info = new Image(ImporterPlugin.RESOURCES.info());
+    info.setTitle(infoMsg);
+    hp.add(info);
+    p.add(hp);
+    return cb;
+  }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/client/ResumeImportDialog.java b/src/main/java/com/googlesource/gerrit/plugins/importer/client/ResumeImportDialog.java
index ab116c0..efd3fcb 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/client/ResumeImportDialog.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/client/ResumeImportDialog.java
@@ -14,9 +14,10 @@
 
 package com.googlesource.gerrit.plugins.importer.client;
 
-import static com.googlesource.gerrit.plugins.importer.client.TextBoxUtil.addPasswordTextBox;
-import static com.googlesource.gerrit.plugins.importer.client.TextBoxUtil.addTextBox;
-import static com.googlesource.gerrit.plugins.importer.client.TextBoxUtil.getValue;
+import static com.googlesource.gerrit.plugins.importer.client.InputUtil.addPasswordTextBox;
+import static com.googlesource.gerrit.plugins.importer.client.InputUtil.addCheckBox;
+import static com.googlesource.gerrit.plugins.importer.client.InputUtil.addTextBox;
+import static com.googlesource.gerrit.plugins.importer.client.InputUtil.getValue;
 
 import com.google.gerrit.plugin.client.Plugin;
 import com.google.gerrit.plugin.client.rpc.RestApi;
@@ -24,6 +25,7 @@
 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.CheckBox;
 import com.google.gwt.user.client.ui.DialogBox;
 import com.google.gwt.user.client.ui.FlowPanel;
 import com.google.gwt.user.client.ui.Label;
@@ -39,6 +41,7 @@
   private final Button resumeButton;
   private final TextBox userTxt;
   private final TextBox passTxt;
+  private final CheckBox forceCheckBox;
 
   public ResumeImportDialog(final String project) {
     super(/* auto hide */false, /* modal */true);
@@ -57,6 +60,7 @@
         ResumeImportProjectInput in = ResumeImportProjectInput.create();
         in.user(getValue(userTxt));
         in.pass(getValue(passTxt));
+        in.force(forceCheckBox.getValue());
 
         new RestApi("config").id("server")
             .view(Plugin.get().getName(), "projects").id(project)
@@ -114,6 +118,7 @@
 
     userTxt = addTextBox(center, "Remote User*", "user on remote system");
     passTxt = addPasswordTextBox(center, "Password*", "password of remote user");
+    forceCheckBox = addCheckBox(center, "Force", "whether resume should be done forcefully");
 
     center.add(buttons);
     add(center);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/client/ResumeImportProjectInput.java b/src/main/java/com/googlesource/gerrit/plugins/importer/client/ResumeImportProjectInput.java
index 1635882..9bfeb82 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/client/ResumeImportProjectInput.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/client/ResumeImportProjectInput.java
@@ -19,6 +19,7 @@
 public class ResumeImportProjectInput extends JavaScriptObject {
   final native void user(String u) /*-{ this.user = u; }-*/;
   final native void pass(String p) /*-{ this.pass = p; }-*/;
+  final native void force(boolean f) /*-{ this.force = f; }-*/;
 
   static ResumeImportProjectInput create() {
     return (ResumeImportProjectInput) createObject();