| // Copyright 2010-2015, Google Inc. |
| // All rights reserved. |
| // |
| // Redistribution and use in source and binary forms, with or without |
| // modification, are permitted provided that the following conditions are |
| // met: |
| // |
| // * Redistributions of source code must retain the above copyright |
| // notice, this list of conditions and the following disclaimer. |
| // * Redistributions in binary form must reproduce the above |
| // copyright notice, this list of conditions and the following disclaimer |
| // in the documentation and/or other materials provided with the |
| // distribution. |
| // * Neither the name of Google Inc. nor the names of its |
| // contributors may be used to endorse or promote products derived from |
| // this software without specific prior written permission. |
| // |
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| package org.mozc.android.inputmethod.japanese; |
| |
| import org.mozc.android.inputmethod.japanese.KeycodeConverter.KeyEventInterface; |
| import org.mozc.android.inputmethod.japanese.emoji.EmojiProviderType; |
| import org.mozc.android.inputmethod.japanese.hardwarekeyboard.HardwareKeyboard.CompositionSwitchMode; |
| import org.mozc.android.inputmethod.japanese.keyboard.Keyboard.KeyboardSpecification; |
| import org.mozc.android.inputmethod.japanese.keyboard.KeyboardActionListener; |
| import org.mozc.android.inputmethod.japanese.model.JapaneseSoftwareKeyboardModel; |
| import org.mozc.android.inputmethod.japanese.preference.ClientSidePreference.HardwareKeyMap; |
| import org.mozc.android.inputmethod.japanese.preference.ClientSidePreference.InputStyle; |
| import org.mozc.android.inputmethod.japanese.preference.ClientSidePreference.KeyboardLayout; |
| import org.mozc.android.inputmethod.japanese.protobuf.ProtoCommands.Command; |
| import org.mozc.android.inputmethod.japanese.view.Skin; |
| import com.google.common.annotations.VisibleForTesting; |
| |
| import android.content.Context; |
| import android.content.res.Configuration; |
| import android.inputmethodservice.InputMethodService; |
| import android.view.KeyEvent; |
| import android.view.MotionEvent; |
| import android.view.View; |
| import android.view.Window; |
| import android.view.inputmethod.CursorAnchorInfo; |
| import android.view.inputmethod.EditorInfo; |
| |
| /** |
| * Interface for ViewManager which manages Input, Candidate and Extracted views. |
| * |
| */ |
| public interface ViewManagerInterface extends MemoryManageable { |
| |
| /** |
| * Keyboard layout position. |
| */ |
| public enum LayoutAdjustment { |
| FILL, |
| RIGHT, |
| LEFT, |
| } |
| |
| /** |
| * Creates new input view. |
| * |
| * "Input view" is a software keyboard in almost all cases. |
| * |
| * Previously created input view is not accessed any more after calling this method. |
| * |
| * @param context |
| * @return newly created view. |
| */ |
| public View createMozcView(Context context); |
| |
| /** |
| * Renders views which this instance own based on Command.Output. |
| * |
| * Note that showing/hiding views is Service's responsibility. |
| */ |
| public void render(Command outCommand); |
| |
| /** |
| * @return true if {@code event} should be consumed by Mozc client side and should be processed |
| * asynchronously. |
| */ |
| public boolean isKeyConsumedOnViewAsynchronously(KeyEvent event); |
| |
| /** |
| * Consumes and handles the given key event. |
| * |
| * @throws IllegalArgumentException If {@code KeyEvent} is not the key to consume. |
| */ |
| public void consumeKeyOnViewSynchronously(KeyEvent event); |
| |
| public void onHardwareKeyEvent(KeyEvent keyEvent); |
| |
| /** |
| * @return whether the view should consume the generic motion event or not. |
| */ |
| public boolean isGenericMotionToConsume(MotionEvent event); |
| |
| /** |
| * Consumes and handles the given generic motion event. |
| * |
| * @throws IllegalArgumentException If {@code MotionEvent} is not the key to consume. |
| */ |
| public boolean consumeGenericMotion(MotionEvent event); |
| |
| /** |
| * @return the current keyboard specification. |
| */ |
| public KeyboardSpecification getKeyboardSpecification(); |
| |
| /** |
| * Set {@code EditorInfo} instance to the current view. |
| */ |
| public void setEditorInfo(EditorInfo attribute); |
| |
| /** |
| * Set text for IME action button label. |
| */ |
| public void setTextForActionButton(CharSequence text); |
| |
| public boolean hideSubInputView(); |
| |
| /** |
| * Set this keyboard layout to the specified one. |
| * |
| * @param keyboardLayout New keyboard layout. |
| * @throws NullPointerException If {@code keyboardLayout} is {@code null}. |
| */ |
| public void setKeyboardLayout(KeyboardLayout keyboardLayout); |
| |
| /** |
| * Set the input style. |
| * |
| * @param inputStyle new input style. |
| * @throws NullPointerException If {@code inputStyle} is {@code null}. |
| * TODO(hidehiko): Refactor out following keyboard switching logic into another class. |
| */ |
| public void setInputStyle(InputStyle inputStyle); |
| |
| public void setQwertyLayoutForAlphabet(boolean qwertyLayoutForAlphabet); |
| |
| public void setFullscreenMode(boolean fullscreenMode); |
| |
| public boolean isFullscreenMode(); |
| |
| public void setFlickSensitivity(int flickSensitivity); |
| |
| public void setEmojiProviderType(EmojiProviderType emojiProviderType); |
| |
| /** |
| * @param isNarrowMode Whether mozc view shows in narrow mode or normal. |
| */ |
| public void setNarrowMode(boolean isNarrowMode); |
| |
| public void maybeTransitToNarrowMode(Command command, KeyEventInterface keyEvent); |
| |
| public boolean isNarrowMode(); |
| |
| public boolean isFloatingCandidateMode(); |
| |
| public void setPopupEnabled(boolean popupEnabled); |
| |
| public void switchHardwareKeyboardCompositionMode(CompositionSwitchMode mode); |
| |
| public void setHardwareKeyMap(HardwareKeyMap hardwareKeyMap); |
| |
| public void setSkin(Skin skin); |
| |
| public void setMicrophoneButtonEnabledByPreference(boolean microphoneButtonEnabled); |
| |
| public void setLayoutAdjustment(LayoutAdjustment layoutAdjustment); |
| |
| public void setKeyboardHeightRatio(int keyboardHeightRatio); |
| |
| public void onConfigurationChanged(Configuration newConfig); |
| |
| public void setCursorAnchorInfo(CursorAnchorInfo info); |
| |
| public void setCursorAnchorInfoEnabled(boolean enabled); |
| |
| /** |
| * Reset the status of the current input view. |
| */ |
| public void reset(); |
| |
| public void computeInsets( |
| Context context, InputMethodService.Insets outInsets, Window window); |
| |
| public void onShowSymbolInputView(); |
| public void onCloseSymbolInputView(); |
| |
| @VisibleForTesting |
| public ViewEventListener getEventListener(); |
| |
| @VisibleForTesting |
| public JapaneseSoftwareKeyboardModel getActiveSoftwareKeyboardModel(); |
| |
| @VisibleForTesting |
| public boolean isPopupEnabled(); |
| |
| @VisibleForTesting |
| public int getFlickSensitivity(); |
| |
| @VisibleForTesting |
| public EmojiProviderType getEmojiProviderType(); |
| |
| @VisibleForTesting |
| public Skin getSkin(); |
| |
| @VisibleForTesting |
| public boolean isMicrophoneButtonEnabledByPreference(); |
| |
| @VisibleForTesting |
| public LayoutAdjustment getLayoutAdjustment(); |
| |
| @VisibleForTesting |
| public int getKeyboardHeightRatio(); |
| |
| @VisibleForTesting |
| public HardwareKeyMap getHardwareKeyMap(); |
| |
| /** |
| * Used for testing to inject key events. |
| */ |
| @VisibleForTesting |
| public KeyboardActionListener getKeyboardActionListener(); |
| |
| void updateGlobeButtonEnabled(); |
| |
| void updateMicrophoneButtonEnabled(); |
| } |