aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2014-10-29 19:17:14 +0900
committerTadashi G. Takaoka <takaoka@google.com>2014-10-30 18:29:49 +0900
commit34a9e2ae87c6718d439b294d9536b6587a4f89f8 (patch)
tree882ff5573326a7b1d393446594a45ce431bd4d34 /java
parentbe708c4e59ba16cf735440b99aa682baa3319ec5 (diff)
downloadlatinime-34a9e2ae87c6718d439b294d9536b6587a4f89f8.tar.gz
latinime-34a9e2ae87c6718d439b294d9536b6587a4f89f8.tar.xz
latinime-34a9e2ae87c6718d439b294d9536b6587a4f89f8.zip
Make DrawingProxy and TimerProxy as a top-level interface
Change-Id: Ia425f341255595f8f80c13b2aa409249f9ce4202
Diffstat (limited to 'java')
-rw-r--r--java/src/com/android/inputmethod/keyboard/MainKeyboardView.java4
-rw-r--r--java/src/com/android/inputmethod/keyboard/PointerTracker.java68
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/DrawingProxy.java72
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/TimerHandler.java20
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/TimerProxy.java133
5 files changed, 221 insertions, 76 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
index f23db04f3..1bad7cbb6 100644
--- a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
@@ -39,8 +39,8 @@ import android.view.ViewGroup;
import com.android.inputmethod.accessibility.AccessibilityUtils;
import com.android.inputmethod.accessibility.MainKeyboardAccessibilityDelegate;
import com.android.inputmethod.annotations.ExternallyReferenced;
-import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy;
import com.android.inputmethod.keyboard.internal.DrawingPreviewPlacerView;
+import com.android.inputmethod.keyboard.internal.DrawingProxy;
import com.android.inputmethod.keyboard.internal.GestureFloatingTextDrawingPreview;
import com.android.inputmethod.keyboard.internal.GestureTrailsDrawingPreview;
import com.android.inputmethod.keyboard.internal.KeyDrawParams;
@@ -110,7 +110,7 @@ import javax.annotation.Nullable;
* @attr ref R.styleable#MainKeyboardView_gestureRecognitionSpeedThreshold
* @attr ref R.styleable#MainKeyboardView_suppressKeyPreviewAfterBatchInputDuration
*/
-public final class MainKeyboardView extends KeyboardView implements PointerTracker.DrawingProxy,
+public final class MainKeyboardView extends KeyboardView implements DrawingProxy,
MoreKeysPanel.Controller {
private static final String TAG = MainKeyboardView.class.getSimpleName();
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index 467f5150a..41eb87f81 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -25,11 +25,13 @@ import android.view.MotionEvent;
import com.android.inputmethod.keyboard.internal.BatchInputArbiter;
import com.android.inputmethod.keyboard.internal.BatchInputArbiter.BatchInputArbiterListener;
import com.android.inputmethod.keyboard.internal.BogusMoveEventDetector;
+import com.android.inputmethod.keyboard.internal.DrawingProxy;
import com.android.inputmethod.keyboard.internal.GestureEnabler;
import com.android.inputmethod.keyboard.internal.GestureStrokeDrawingParams;
import com.android.inputmethod.keyboard.internal.GestureStrokeDrawingPoints;
import com.android.inputmethod.keyboard.internal.GestureStrokeRecognitionParams;
import com.android.inputmethod.keyboard.internal.PointerTrackerQueue;
+import com.android.inputmethod.keyboard.internal.TimerProxy;
import com.android.inputmethod.keyboard.internal.TypingTimeRecorder;
import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.common.Constants;
@@ -52,66 +54,6 @@ public final class PointerTracker implements PointerTrackerQueue.Element,
private static final boolean DEBUG_LISTENER = false;
private static boolean DEBUG_MODE = DebugFlags.DEBUG_ENABLED || DEBUG_EVENT;
- public interface DrawingProxy {
- public void invalidateKey(@Nullable Key key);
- public void showKeyPreview(@Nonnull Key key);
- public void dismissKeyPreview(@Nonnull Key key);
- public void dismissKeyPreviewWithoutDelay(@Nonnull Key key);
- public void onLongPress(@Nonnull PointerTracker tracker);
- public static final int FADE_IN = 0;
- public static final int FADE_OUT = 1;
- public void startWhileTypingAnimation(final int fadeInOrOut);
- public void showSlidingKeyInputPreview(@Nullable PointerTracker tracker);
- public void showGestureTrail(@Nonnull PointerTracker tracker,
- boolean showsFloatingPreviewText);
- public void dismissGestureFloatingPreviewTextWithoutDelay();
- }
-
- public interface TimerProxy {
- public void startTypingStateTimer(Key typedKey);
- public boolean isTypingState();
- public void startKeyRepeatTimerOf(PointerTracker tracker, int repeatCount, int delay);
- public void startLongPressTimerOf(PointerTracker tracker, int delay);
- public void cancelLongPressTimerOf(PointerTracker tracker);
- public void cancelLongPressShiftKeyTimers();
- public void cancelKeyTimersOf(PointerTracker tracker);
- public void startDoubleTapShiftKeyTimer();
- public void cancelDoubleTapShiftKeyTimer();
- public boolean isInDoubleTapShiftKeyTimeout();
- public void startUpdateBatchInputTimer(PointerTracker tracker);
- public void cancelUpdateBatchInputTimer(PointerTracker tracker);
- public void cancelAllUpdateBatchInputTimers();
-
- public static class Adapter implements TimerProxy {
- @Override
- public void startTypingStateTimer(Key typedKey) {}
- @Override
- public boolean isTypingState() { return false; }
- @Override
- public void startKeyRepeatTimerOf(PointerTracker tracker, int repeatCount, int delay) {}
- @Override
- public void startLongPressTimerOf(PointerTracker tracker, int delay) {}
- @Override
- public void cancelLongPressTimerOf(PointerTracker tracker) {}
- @Override
- public void cancelLongPressShiftKeyTimers() {}
- @Override
- public void cancelKeyTimersOf(PointerTracker tracker) {}
- @Override
- public void startDoubleTapShiftKeyTimer() {}
- @Override
- public void cancelDoubleTapShiftKeyTimer() {}
- @Override
- public boolean isInDoubleTapShiftKeyTimeout() { return false; }
- @Override
- public void startUpdateBatchInputTimer(PointerTracker tracker) {}
- @Override
- public void cancelUpdateBatchInputTimer(PointerTracker tracker) {}
- @Override
- public void cancelAllUpdateBatchInputTimers() {}
- }
- }
-
static final class PointerTrackerParams {
public final boolean mKeySelectionByDraggingFinger;
public final int mTouchNoiseThresholdTime;
@@ -586,7 +528,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element,
}
sListener.onStartBatchInput();
dismissAllMoreKeysPanels();
- sTimerProxy.cancelLongPressTimerOf(this);
+ sTimerProxy.cancelLongPressTimersOf(this);
}
private void showGestureTrail() {
@@ -1094,7 +1036,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element,
}
public void cancelLongPressTimer() {
- sTimerProxy.cancelLongPressTimerOf(this);
+ sTimerProxy.cancelLongPressTimersOf(this);
}
public void onLongPressed() {
@@ -1163,7 +1105,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element,
private void startLongPressTimer(final Key key) {
// Note that we need to cancel all active long press shift key timers if any whenever we
// start a new long press timer for both non-shift and shift keys.
- sTimerProxy.cancelLongPressShiftKeyTimers();
+ sTimerProxy.cancelLongPressShiftKeyTimer();
if (sInGesture) return;
if (key == null) return;
if (!key.isLongPressEnabled()) return;
diff --git a/java/src/com/android/inputmethod/keyboard/internal/DrawingProxy.java b/java/src/com/android/inputmethod/keyboard/internal/DrawingProxy.java
new file mode 100644
index 000000000..7fc586a0f
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/DrawingProxy.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import com.android.inputmethod.keyboard.Key;
+import com.android.inputmethod.keyboard.PointerTracker;
+
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
+public interface DrawingProxy {
+ // TODO: Remove this method.
+ public void invalidateKey(@Nullable Key key);
+
+ // TODO: Rename this method to onKeyPressed.
+ public void showKeyPreview(@Nonnull Key key);
+
+ // TODO: Rename this method to onKeyReleased.
+ public void dismissKeyPreview(@Nonnull Key key);
+
+ /**
+ * Dismiss a key preview visual without delay.
+ * @param key the key whose preview visual should be dismissed.
+ */
+ public void dismissKeyPreviewWithoutDelay(@Nonnull Key key);
+
+ // TODO: Rename this method to onKeyLongPressed.
+ public void onLongPress(@Nonnull PointerTracker tracker);
+
+ /**
+ * Start a while-typing-animation.
+ * @param fadeInOrOut {@link #FADE_IN} starts while-typing-fade-in animation.
+ * {@link #FADE_OUT} starts while-typing-fade-out animation.
+ */
+ public void startWhileTypingAnimation(int fadeInOrOut);
+ public static final int FADE_IN = 0;
+ public static final int FADE_OUT = 1;
+
+ /**
+ * Show sliding-key input preview.
+ * @param tracker the {@link PointerTracker} that is currently doing the sliding-key input.
+ * null to dismiss the sliding-key input preview.
+ */
+ public void showSlidingKeyInputPreview(@Nullable PointerTracker tracker);
+
+ /**
+ * Show gesture trails.
+ * @param tracker the {@link PointerTracker} whose gesture trail will be shown.
+ * @param showsFloatingPreviewText when true, a gesture floating preview text will be shown
+ * with this <code>tracker</code>'s trail.
+ */
+ public void showGestureTrail(@Nonnull PointerTracker tracker, boolean showsFloatingPreviewText);
+
+ /**
+ * Dismiss a gesture floating preview text without delay.
+ */
+ public void dismissGestureFloatingPreviewTextWithoutDelay();
+}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/TimerHandler.java b/java/src/com/android/inputmethod/keyboard/internal/TimerHandler.java
index 456522535..8068427bc 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/TimerHandler.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/TimerHandler.java
@@ -22,8 +22,6 @@ import android.view.ViewConfiguration;
import com.android.inputmethod.keyboard.Key;
import com.android.inputmethod.keyboard.PointerTracker;
-import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy;
-import com.android.inputmethod.keyboard.PointerTracker.TimerProxy;
import com.android.inputmethod.latin.common.Constants;
import com.android.inputmethod.latin.utils.LeakGuardHandlerWrapper;
@@ -86,7 +84,7 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<DrawingProxy>
}
@Override
- public void startKeyRepeatTimerOf(final PointerTracker tracker, final int repeatCount,
+ public void startKeyRepeatTimerOf(@Nonnull final PointerTracker tracker, final int repeatCount,
final int delay) {
final Key key = tracker.getKey();
if (key == null || delay == 0) {
@@ -110,7 +108,7 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<DrawingProxy>
}
@Override
- public void startLongPressTimerOf(final PointerTracker tracker, final int delay) {
+ public void startLongPressTimerOf(@Nonnull final PointerTracker tracker, final int delay) {
final Key key = tracker.getKey();
if (key == null) {
return;
@@ -123,13 +121,13 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<DrawingProxy>
}
@Override
- public void cancelLongPressTimerOf(final PointerTracker tracker) {
+ public void cancelLongPressTimersOf(@Nonnull final PointerTracker tracker) {
removeMessages(MSG_LONGPRESS_KEY, tracker);
removeMessages(MSG_LONGPRESS_SHIFT_KEY, tracker);
}
@Override
- public void cancelLongPressShiftKeyTimers() {
+ public void cancelLongPressShiftKeyTimer() {
removeMessages(MSG_LONGPRESS_SHIFT_KEY);
}
@@ -139,7 +137,7 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<DrawingProxy>
}
@Override
- public void startTypingStateTimer(final Key typedKey) {
+ public void startTypingStateTimer(@Nonnull final Key typedKey) {
if (typedKey.isModifier() || typedKey.altCodeWhileTyping()) {
return;
}
@@ -190,9 +188,9 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<DrawingProxy>
}
@Override
- public void cancelKeyTimersOf(final PointerTracker tracker) {
+ public void cancelKeyTimersOf(@Nonnull final PointerTracker tracker) {
cancelKeyRepeatTimerOf(tracker);
- cancelLongPressTimerOf(tracker);
+ cancelLongPressTimersOf(tracker);
}
public void cancelAllKeyTimers() {
@@ -201,7 +199,7 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<DrawingProxy>
}
@Override
- public void startUpdateBatchInputTimer(final PointerTracker tracker) {
+ public void startUpdateBatchInputTimer(@Nonnull final PointerTracker tracker) {
if (mGestureRecognitionUpdateTime <= 0) {
return;
}
@@ -211,7 +209,7 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<DrawingProxy>
}
@Override
- public void cancelUpdateBatchInputTimer(final PointerTracker tracker) {
+ public void cancelUpdateBatchInputTimer(@Nonnull final PointerTracker tracker) {
removeMessages(MSG_UPDATE_BATCH_INPUT, tracker);
}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/TimerProxy.java b/java/src/com/android/inputmethod/keyboard/internal/TimerProxy.java
new file mode 100644
index 000000000..0ce3de8d9
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/TimerProxy.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import com.android.inputmethod.keyboard.Key;
+import com.android.inputmethod.keyboard.PointerTracker;
+
+import javax.annotation.Nonnull;
+
+public interface TimerProxy {
+ /**
+ * Start a timer to detect if a user is typing keys.
+ * @param typedKey the key that is typed.
+ */
+ public void startTypingStateTimer(@Nonnull Key typedKey);
+
+ /**
+ * Check if a user is key typing.
+ * @return true if a user is in typing.
+ */
+ public boolean isTypingState();
+
+ /**
+ * Start a timer to simulate repeated key presses while a user keep pressing a key.
+ * @param tracker the {@link PointerTracker} that points the key to be repeated.
+ * @param repeatCount the number of times that the key is repeating. Starting from 1.
+ * @param delay the interval delay to the next key repeat, in millisecond.
+ */
+ public void startKeyRepeatTimerOf(@Nonnull PointerTracker tracker, int repeatCount, int delay);
+
+ /**
+ * Start a timer to detect a long pressed key.
+ * If a key pointed by <code>tracker</code> is a shift key, start another timer to detect
+ * long pressed shift key.
+ * @param tracker the {@link PointerTracker} that starts long pressing.
+ * @param delay the delay to fire the long press timer, in millisecond.
+ */
+ public void startLongPressTimerOf(@Nonnull PointerTracker tracker, int delay);
+
+ /**
+ * Cancel timers for detecting a long pressed key and a long press shift key.
+ * @param tracker cancel long press timers of this {@link PointerTracker}.
+ */
+ public void cancelLongPressTimersOf(@Nonnull PointerTracker tracker);
+
+ /**
+ * Cancel a timer for detecting a long pressed shift key.
+ */
+ public void cancelLongPressShiftKeyTimer();
+
+ /**
+ * Cancel timers for detecting repeated key press, long pressed key, and long pressed shift key.
+ * @param tracker the {@link PointerTracker} that starts timers to be canceled.
+ */
+ public void cancelKeyTimersOf(@Nonnull PointerTracker tracker);
+
+ /**
+ * Start a timer to detect double tapped shift key.
+ */
+ public void startDoubleTapShiftKeyTimer();
+
+ /**
+ * Cancel a timer of detecting double tapped shift key.
+ */
+ public void cancelDoubleTapShiftKeyTimer();
+
+ /**
+ * Check if a timer of detecting double tapped shift key is running.
+ * @return true if detecting double tapped shift key is on going.
+ */
+ public boolean isInDoubleTapShiftKeyTimeout();
+
+ /**
+ * Start a timer to fire updating batch input while <code>tracker</code> is on hold.
+ * @param tracker the {@link PointerTracker} that stops moving.
+ */
+ public void startUpdateBatchInputTimer(@Nonnull PointerTracker tracker);
+
+ /**
+ * Cancel a timer of firing updating batch input.
+ * @param tracker the {@link PointerTracker} that resumes moving or ends gesture input.
+ */
+ public void cancelUpdateBatchInputTimer(@Nonnull PointerTracker tracker);
+
+ /**
+ * Cancel all timers of firing updating batch input.
+ */
+ public void cancelAllUpdateBatchInputTimers();
+
+ public static class Adapter implements TimerProxy {
+ @Override
+ public void startTypingStateTimer(@Nonnull Key typedKey) {}
+ @Override
+ public boolean isTypingState() { return false; }
+ @Override
+ public void startKeyRepeatTimerOf(@Nonnull PointerTracker tracker, int repeatCount,
+ int delay) {}
+ @Override
+ public void startLongPressTimerOf(@Nonnull PointerTracker tracker, int delay) {}
+ @Override
+ public void cancelLongPressTimersOf(@Nonnull PointerTracker tracker) {}
+ @Override
+ public void cancelLongPressShiftKeyTimer() {}
+ @Override
+ public void cancelKeyTimersOf(@Nonnull PointerTracker tracker) {}
+ @Override
+ public void startDoubleTapShiftKeyTimer() {}
+ @Override
+ public void cancelDoubleTapShiftKeyTimer() {}
+ @Override
+ public boolean isInDoubleTapShiftKeyTimeout() { return false; }
+ @Override
+ public void startUpdateBatchInputTimer(@Nonnull PointerTracker tracker) {}
+ @Override
+ public void cancelUpdateBatchInputTimer(@Nonnull PointerTracker tracker) {}
+ @Override
+ public void cancelAllUpdateBatchInputTimers() {}
+ }
+}