Polished Wizard example for Showcase app

Extracted Strings, added JavaDoc,
refactored the call of the second Wizard
screen to be less error-prone code.

Change-Id: Ib8a8af7019818b29d71ee1bed1cac3e2b56e8c11
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample1stStepFragment.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample1stStepFragment.java
index d9ddf7f..0b0f692 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample1stStepFragment.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample1stStepFragment.java
@@ -24,7 +24,8 @@
 import java.util.List;
 
 /**
- * TODO: JavaDoc
+ * The first screen of the rental wizard. Gives the user the choice between renting the movie in SD
+ * or HD quality.
  */
 public class WizardExample1stStepFragment extends WizardExampleBaseStepFragment {
 
@@ -66,10 +67,8 @@
 
     @Override
     public void onGuidedActionClicked(GuidedAction action) {
-        GuidedStepFragment fragment = new WizardExample2ndStepFragment();
-        Bundle args = getArguments(); // Reuse the same arguments this fragment was given.
-        args.putBoolean("hd", ACTION_ID_BUY_HD == action.getId());
-        fragment.setArguments(args);
+        boolean rentHd = ACTION_ID_BUY_HD == action.getId();
+        GuidedStepFragment fragment = WizardExample2ndStepFragment.build(rentHd, this);
         add(getFragmentManager(), fragment);
     }
 }
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample2ndStepFragment.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample2ndStepFragment.java
index 4ed46ee..7f3a83a 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample2ndStepFragment.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample2ndStepFragment.java
@@ -28,13 +28,23 @@
 import java.util.List;
 
 /**
- * TODO: JavaDoc
+ * Displays the second screen of the rental wizard which requires the user to confirm his purchase.
  */
 public class WizardExample2ndStepFragment extends WizardExampleBaseStepFragment {
 
+    private static final String ARG_HD = "hd";
     private static final int ACTION_ID_CONFIRM = 1;
     private static final int ACTION_ID_PAYMENT_METHOD = ACTION_ID_CONFIRM + 1;
 
+    public static GuidedStepFragment build(boolean hd, WizardExampleBaseStepFragment previousFragment) {
+        GuidedStepFragment fragment = new WizardExample2ndStepFragment();
+        // Reuse the same arguments this fragment was given.
+        Bundle args = previousFragment.getArguments();
+        args.putBoolean(ARG_HD, hd);
+        fragment.setArguments(args);
+        return fragment;
+    }
+
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -51,34 +61,8 @@
     }
 
     @Override
-    public GuidedActionsStylist onCreateActionsStylist() {
-        GuidedActionsStylist stylist = new GuidedActionsStylist() {
-
-            @Override
-            public void onBindViewHolder(ViewHolder vh, GuidedAction action) {
-                super.onBindViewHolder(vh, action);
-
-                if (ACTION_ID_CONFIRM == action.getId()) {
-                    Drawable background = getResources().getDrawable(
-                            R.drawable.wizard_important_action_item_background, null);
-                    vh.view.setBackground(background);
-                    vh.getTitleView().setTextColor(Color.parseColor("#666666"));
-                    vh.getDescriptionView().setTextColor(Color.parseColor("#666666"));
-                } else {
-                    vh.view.setBackground(null);
-                    vh.getTitleView().setTextColor(getResources().getColor(android.support.v17.leanback.R.color.lb_guidedactions_item_unselected_text_color,
-                            getActivity().getTheme()));
-                    vh.getDescriptionView().setTextColor(getResources().getColor(android.support.v17.leanback.R.color.lb_guidedactions_item_unselected_text_color,
-                            getActivity().getTheme()));
-                }
-            }
-        };
-        return stylist;
-    }
-
-    @Override
     public void onCreateActions(@NonNull List<GuidedAction> actions, Bundle savedInstanceState) {
-        boolean rentHighDefinition = getArguments().getBoolean("hd");
+        boolean rentHighDefinition = getArguments().getBoolean(ARG_HD);
 
         GuidedAction action = new GuidedAction.Builder()
                 .id(ACTION_ID_CONFIRM)
@@ -89,7 +73,7 @@
         action = new GuidedAction.Builder()
                 .id(ACTION_ID_PAYMENT_METHOD)
                 .title(getString(R.string.wizard_example_payment_method))
-                .description("Visa - 1234 Balance $60.00")
+                .description(getString(R.string.wizard_example_visa_balance))
                 .build();
         actions.add(action);
     }
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample3rdStepFragment.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample3rdStepFragment.java
index 7a336c7..0cc4221 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample3rdStepFragment.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample3rdStepFragment.java
@@ -26,7 +26,9 @@
 import java.util.List;
 
 /**
- * TODO: JavaDoc
+ * This is the third screen of the rental wizard which will display a progressbar while waiting for
+ * the server to process the rental. The server communication is faked for the sake of this example
+ * by waiting four seconds until continuing.
  */
 public class WizardExample3rdStepFragment extends WizardExampleBaseStepFragment {
 
@@ -75,7 +77,7 @@
     @Override
     public GuidanceStylist.Guidance onCreateGuidance(Bundle savedInstanceState) {
         GuidanceStylist.Guidance guidance = new GuidanceStylist.Guidance(mMovie.getTitle(),
-                "Just a second...",
+                getString(R.string.wizard_example_just_a_second),
                 mMovie.getBreadcrump(), null);
         return guidance;
     }
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample4thStepFragment.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample4thStepFragment.java
index 255705c..450311c 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample4thStepFragment.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample4thStepFragment.java
@@ -24,7 +24,9 @@
 import java.util.List;
 
 /**
- * TODO: JavaDoc
+ * The last screen of the Wizard gives to options to either watch the rented movie now or later. Due
+ * to keep this example simple and focused on the usage of the GuidedStepFragment, clicking on
+ * either action will end the wizard. You might however start a new Activity playing the movie.
  */
 public class WizardExample4thStepFragment extends WizardExampleBaseStepFragment {
 
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExampleActivity.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExampleActivity.java
index 1f13234..bde1a06 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExampleActivity.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExampleActivity.java
@@ -21,7 +21,7 @@
 import android.support.v17.leanback.supportleanbackshowcase.R;
 
 /**
- * TODO: Javadoc
+ * An Activity displaying a wizard for renting a movie.
  */
 public class WizardExampleActivity extends Activity {
 
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExampleBaseStepFragment.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExampleBaseStepFragment.java
index b83bd98..8fd5981 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExampleBaseStepFragment.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExampleBaseStepFragment.java
@@ -20,9 +20,10 @@
 import android.support.v17.leanback.supportleanbackshowcase.R;
 
 /**
- * TODO: JavaDoc
+ * A base class which provides all it's implementations with a method #getWizardActivity(). It also
+ * makes sure that the wizard is using the correct theme.
  */
-public class WizardExampleBaseStepFragment extends GuidedStepFragment {
+public abstract class WizardExampleBaseStepFragment extends GuidedStepFragment {
 
     protected Movie mMovie;
 
@@ -35,12 +36,12 @@
         if (!(getActivity() instanceof WizardExampleActivity)) {
             throw new IllegalStateException(WizardExampleActivity.class.getName() + " expected.");
         }
-        return (WizardExampleActivity)getActivity();
+        return (WizardExampleActivity) getActivity();
     }
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
-        mMovie = (Movie)getArguments().getSerializable("movie");
+        mMovie = (Movie) getArguments().getSerializable("movie");
         super.onCreate(savedInstanceState);
     }
 }
diff --git a/samples/SupportLeanbackShowcase/app/src/main/res/values/strings.xml b/samples/SupportLeanbackShowcase/app/src/main/res/values/strings.xml
index 4c2c673..9bc6ffa 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/res/values/strings.xml
+++ b/samples/SupportLeanbackShowcase/app/src/main/res/values/strings.xml
@@ -85,4 +85,6 @@
     <string name="wizard_example_watch_now">Watch now</string>
     <string name="wizard_example_later">Later</string>
     <string name="wizard_example_watch_now_clicked">\'Watch now\' clicked.</string>
+    <string name="wizard_example_visa_balance">Visa - 1234 Balance $60.00</string>
+    <string name="wizard_example_just_a_second">Just a second...</string>
 </resources>
\ No newline at end of file