diff --git a/src/com/android/contacts/ui/widget/GenericEditorView.java b/src/com/android/contacts/ui/widget/GenericEditorView.java
index 6c782f8..26d4aab 100644
--- a/src/com/android/contacts/ui/widget/GenericEditorView.java
+++ b/src/com/android/contacts/ui/widget/GenericEditorView.java
@@ -113,9 +113,10 @@
         mDelete.setVisibility(deletable ? View.VISIBLE : View.INVISIBLE);
     }
 
+    @Override
     public void setEnabled(boolean enabled) {
         mLabel.setEnabled(enabled);
-	final int count = mFields.getChildCount();
+        final int count = mFields.getChildCount();
         for (int pos = 0; pos < count; pos++) {
             final View v = mFields.getChildAt(pos);
             v.setEnabled(enabled);
@@ -168,9 +169,9 @@
         mKind = kind;
         mEntry = entry;
         mState = state;
-	mReadOnly = readOnly;
+        mReadOnly = readOnly;
 
-	final boolean enabled = !readOnly;
+        final boolean enabled = !readOnly;
 
         if (!entry.isVisible()) {
             // Hide ourselves entirely if deleted
@@ -183,7 +184,7 @@
         // Display label selector if multiple types available
         final boolean hasTypes = EntityModifier.hasEditTypes(kind);
         mLabel.setVisibility(hasTypes ? View.VISIBLE : View.GONE);
-	mLabel.setEnabled(enabled);
+        mLabel.setEnabled(enabled);
         if (hasTypes) {
             mType = EntityModifier.getCurrentType(entry, kind);
             rebuildLabel();
@@ -224,7 +225,7 @@
             final boolean couldHide = (TextUtils.isEmpty(value) && field.optional);
             final boolean willHide = (mHideOptional && couldHide);
             fieldView.setVisibility(willHide ? View.GONE : View.VISIBLE);
-	    fieldView.setEnabled(enabled);
+            fieldView.setEnabled(enabled);
             hidePossible = hidePossible || couldHide;
 
             mFields.addView(fieldView);
@@ -232,7 +233,7 @@
 
         // When hiding fields, place expandable
         mMore.setVisibility(hidePossible ? View.VISIBLE : View.GONE);
-	mMore.setEnabled(enabled);
+        mMore.setEnabled(enabled);
     }
 
     /**
@@ -304,16 +305,17 @@
             public void onClick(DialogInterface dialog, int which) {
                 dialog.dismiss();
 
-                if (mType.customColumn != null) {
+                final EditType selected = validTypes.get(which);
+                if (selected.customColumn != null) {
                     // Show custom label dialog if requested by type.
                     //
                     // Only when the custum value input in the next step is correct one.
                     // this method also set the type value to what the user requested here.
-                    mPendingType = validTypes.get(which);
+                    mPendingType = selected;
                     createCustomDialog().show();
                 } else {
                     // User picked type, and we're sure it's ok to actually write the entry.
-                    mType = validTypes.get(which);
+                    mType = selected;
                     mEntry.put(mKind.typeColumn, mType.rawValue);
                     rebuildLabel();
                 }
