Use generic interface for filed type of Keyboard

This change also re-orders and renames some fields.

Bug: 5023981
Change-Id: I28c1ca7384bb70e3584398cd19ce2276ddfe8541
diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java
index 9ba8c36..ae5bc95 100644
--- a/java/src/com/android/inputmethod/keyboard/Keyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java
@@ -34,6 +34,8 @@
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 /**
  * Loads an XML description of a keyboard and stores the attributes of the keys. A keyboard
@@ -93,33 +95,7 @@
     // Code value representing the code is not specified.
     public static final int CODE_UNSPECIFIED = -99;
 
-    /** Horizontal gap default for all rows */
-    private int mDefaultHorizontalGap;
-
-    /** Default key width */
-    private int mDefaultWidth;
-
-    /** Default key height */
-    private int mDefaultHeight;
-
-    /** Default gap between rows */
-    private int mDefaultVerticalGap;
-
-    /** Popup keyboard template */
-    private int mPopupKeyboardResId;
-
-    /** Maximum column for popup keyboard */
-    private int mMaxPopupColumn;
-
-    /** True if Right-To-Left keyboard */
-    private boolean mIsRtlKeyboard;
-
-    /** List of shift keys in this keyboard and its icons and state */
-    private final List<Key> mShiftKeys = new ArrayList<Key>();
-    private final HashMap<Key, Drawable> mShiftedIcons = new HashMap<Key, Drawable>();
-    private final HashMap<Key, Drawable> mUnshiftedIcons = new HashMap<Key, Drawable>();
-    private final HashSet<Key> mShiftLockKeys = new HashSet<Key>();
-    private final KeyboardShiftState mShiftState = new KeyboardShiftState();
+    public final KeyboardId mId;
 
     /** Total height of the keyboard, including the padding and keys */
     private int mTotalHeight;
@@ -130,8 +106,36 @@
      */
     private int mMinWidth;
 
+    /** Horizontal gap default for all rows */
+    private int mHorizontalGap;
+
+    /** Default key width */
+    private int mDefaultKeyWidth;
+
+    /** Default row height */
+    private int mDefaultRowHeight;
+
+    /** Default gap between rows */
+    private int mVerticalGap;
+
+    /** Popup keyboard template */
+    private int mPopupKeyboardResId;
+
+    /** Maximum column for popup keyboard */
+    private int mMaxPopupColumn;
+
+    /** True if Right-To-Left keyboard */
+    private boolean mIsRtlKeyboard;
+
     /** List of keys in this keyboard */
     private final List<Key> mKeys = new ArrayList<Key>();
+    /** List of shift keys in this keyboard and its icons and state */
+    private final List<Key> mShiftKeys = new ArrayList<Key>();
+    private final Map<Key, Drawable> mShiftedIcons = new HashMap<Key, Drawable>();
+    private final Map<Key, Drawable> mUnshiftedIcons = new HashMap<Key, Drawable>();
+    private final Set<Key> mShiftLockKeys = new HashSet<Key>();
+    public final KeyboardIconsSet mIconsSet = new KeyboardIconsSet();
+
 
     /** Width of the screen available to fit the keyboard */
     private final int mDisplayWidth;
@@ -144,9 +148,7 @@
 
     private int mMostCommonKeyWidth = 0;
 
-    public final KeyboardId mId;
-
-    public final KeyboardIconsSet mIconsSet = new KeyboardIconsSet();
+    private final KeyboardShiftState mShiftState = new KeyboardShiftState();
 
     // Variables for pre-computing nearest keys.
 
@@ -175,10 +177,10 @@
         // TODO: Adjust the height by referring to the height of area available for drawing as well.
         mDisplayHeight = res.getDisplayMetrics().heightPixels;
 
-        mDefaultHorizontalGap = 0;
+        mHorizontalGap = 0;
         setKeyWidth(mDisplayWidth / 10);
-        mDefaultVerticalGap = 0;
-        mDefaultHeight = mDefaultWidth;
+        mVerticalGap = 0;
+        mDefaultRowHeight = mDefaultKeyWidth;
         mId = id;
         loadKeyboard(context, xmlLayoutResId);
         mProximityInfo = new ProximityInfo(
@@ -194,35 +196,35 @@
     }
 
     public int getHorizontalGap() {
-        return mDefaultHorizontalGap;
+        return mHorizontalGap;
     }
 
     public void setHorizontalGap(int gap) {
-        mDefaultHorizontalGap = gap;
+        mHorizontalGap = gap;
     }
 
     public int getVerticalGap() {
-        return mDefaultVerticalGap;
+        return mVerticalGap;
     }
 
     public void setVerticalGap(int gap) {
-        mDefaultVerticalGap = gap;
+        mVerticalGap = gap;
     }
 
     public int getRowHeight() {
-        return mDefaultHeight;
+        return mDefaultRowHeight;
     }
 
     public void setRowHeight(int height) {
-        mDefaultHeight = height;
+        mDefaultRowHeight = height;
     }
 
     public int getKeyWidth() {
-        return mDefaultWidth;
+        return mDefaultKeyWidth;
     }
 
     public void setKeyWidth(int width) {
-        mDefaultWidth = width;
+        mDefaultKeyWidth = width;
     }
 
     /**