diff options
author | 2010-09-03 00:45:26 +0900 | |
---|---|---|
committer | 2010-09-03 00:46:19 +0900 | |
commit | 6bfb234f294b6ad95176f987256c85e8607d23f5 (patch) | |
tree | 10f2e7dd623e2203906e898d3fb0179b6d9e2933 /java/src | |
parent | 83b3cf56cdb64f91ec32869bce237e16a1487f4a (diff) | |
download | latinime-6bfb234f294b6ad95176f987256c85e8607d23f5.tar.gz latinime-6bfb234f294b6ad95176f987256c85e8607d23f5.tar.xz latinime-6bfb234f294b6ad95176f987256c85e8607d23f5.zip |
Refactor KeyDetector to share more methods
Bug: 2959169
Change-Id: I87060049cad6f9d6432b6c4a246c15587ae0d837
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/com/android/inputmethod/latin/KeyDetector.java | 18 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/latin/ProximityKeyDetector.java | 11 |
2 files changed, 19 insertions, 10 deletions
diff --git a/java/src/com/android/inputmethod/latin/KeyDetector.java b/java/src/com/android/inputmethod/latin/KeyDetector.java index 5583e3275..e443f272b 100644 --- a/java/src/com/android/inputmethod/latin/KeyDetector.java +++ b/java/src/com/android/inputmethod/latin/KeyDetector.java @@ -19,11 +19,12 @@ package com.android.inputmethod.latin; import android.inputmethodservice.Keyboard; import android.inputmethodservice.Keyboard.Key; +import java.util.Arrays; import java.util.List; abstract class KeyDetector { protected Keyboard mKeyboard; - protected Key[] mKeys; + private Key[] mKeys; protected int mCorrectionX; protected int mCorrectionY; @@ -50,6 +51,13 @@ abstract class KeyDetector { return y + mCorrectionY; } + protected Key[] getKeys() { + if (mKeys == null) + throw new IllegalStateException("keyboard isn't set"); + // mKeyboard is guaranteed not null at setKeybaord() method + return mKeys; + } + public void setProximityCorrectionEnabled(boolean enabled) { mProximityCorrectOn = enabled; } @@ -62,7 +70,13 @@ abstract class KeyDetector { mProximityThresholdSquare = threshold * threshold; } - abstract public int[] newCodeArray(); + public int[] newCodeArray() { + int[] codes = new int[getMaxNearbyKeys()]; + Arrays.fill(codes, LatinKeyboardBaseView.NOT_A_KEY); + return codes; + } + + abstract protected int getMaxNearbyKeys(); abstract public int getKeyIndexAndNearbyCodes(int x, int y, int[] allKeys); }
\ No newline at end of file diff --git a/java/src/com/android/inputmethod/latin/ProximityKeyDetector.java b/java/src/com/android/inputmethod/latin/ProximityKeyDetector.java index 408e4e147..d17bedb56 100644 --- a/java/src/com/android/inputmethod/latin/ProximityKeyDetector.java +++ b/java/src/com/android/inputmethod/latin/ProximityKeyDetector.java @@ -27,20 +27,15 @@ class ProximityKeyDetector extends KeyDetector { private int[] mDistances = new int[MAX_NEARBY_KEYS]; @Override - public int[] newCodeArray() { - int[] codes = new int[MAX_NEARBY_KEYS]; - Arrays.fill(codes, LatinKeyboardBaseView.NOT_A_KEY); - return codes; + protected int getMaxNearbyKeys() { + return MAX_NEARBY_KEYS; } @Override public int getKeyIndexAndNearbyCodes(int x, int y, int[] allKeys) { + final Key[] keys = getKeys(); final int touchX = getTouchX(x); final int touchY = getTouchY(y); - final Key[] keys = mKeys; - if (keys == null) - throw new IllegalStateException("keyboard isn't set"); - // mKeyboard is guaranteed not null at setKeybaord() method int primaryIndex = LatinKeyboardBaseView.NOT_A_KEY; int closestKey = LatinKeyboardBaseView.NOT_A_KEY; int closestKeyDist = mProximityThresholdSquare + 1; |