aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2010-09-03 00:45:26 +0900
committerTadashi G. Takaoka <takaoka@google.com>2010-09-03 00:46:19 +0900
commit6bfb234f294b6ad95176f987256c85e8607d23f5 (patch)
tree10f2e7dd623e2203906e898d3fb0179b6d9e2933 /java/src
parent83b3cf56cdb64f91ec32869bce237e16a1487f4a (diff)
downloadlatinime-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.java18
-rw-r--r--java/src/com/android/inputmethod/latin/ProximityKeyDetector.java11
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;