commit 1bdf3dc22aeb3f0dbca945268ec7125ce85feef9
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Mon Mar 23 14:31:00 2020 +0000

    The SetName Dialog should be finished.

diff --git a/src/main/java/org/distorted/dialog/RubikDialogSetName.java b/src/main/java/org/distorted/dialog/RubikDialogSetName.java
index 98344564..85993786 100644
--- a/src/main/java/org/distorted/dialog/RubikDialogSetName.java
+++ b/src/main/java/org/distorted/dialog/RubikDialogSetName.java
@@ -26,10 +26,13 @@ import android.support.annotation.NonNull;
 import android.support.v4.app.FragmentActivity;
 import android.support.v7.app.AlertDialog;
 import android.support.v7.app.AppCompatDialogFragment;
+import android.text.Editable;
+import android.text.TextWatcher;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.Window;
 import android.view.WindowManager;
+import android.widget.Button;
 import android.widget.EditText;
 import android.widget.TextView;
 
@@ -53,6 +56,13 @@ public class RubikDialogSetName extends AppCompatDialogFragment
     window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
                     WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
     window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
+
+    AlertDialog dialog = (AlertDialog) getDialog();
+    if (dialog != null)
+      {
+      Button positiveButton = dialog.getButton(Dialog.BUTTON_POSITIVE);
+      positiveButton.setEnabled(false);
+      }
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -96,8 +106,6 @@ public class RubikDialogSetName extends AppCompatDialogFragment
       }
 
     builder.setCancelable(true);
-    EditText edit = view.findViewById(R.id.set_name);
-    edit.requestFocus();
 
     builder.setPositiveButton( R.string.ok, new DialogInterface.OnClickListener()
       {
@@ -126,9 +134,27 @@ public class RubikDialogSetName extends AppCompatDialogFragment
       });
 
     builder.setView(view);
-    Dialog dialog = builder.create();
+    final Dialog dialog = builder.create();
     dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
 
+    EditText edit = view.findViewById(R.id.set_name);
+    edit.requestFocus();
+
+    edit.addTextChangedListener(new TextWatcher()
+      {
+      @Override
+      public void afterTextChanged(Editable s) {}
+
+      @Override
+      public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
+
+      @Override
+      public void onTextChanged(CharSequence s, int start, int before, int count)
+        {
+        ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(count>0);
+        }
+      });
+
     return dialog;
     }
   }
