1 /* 2 * Copyright (C) 2011 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.inputmethod.keyboard; 18 19 import android.view.View; 20 import android.view.ViewGroup; 21 22 public interface MoreKeysPanel { 23 public interface Controller { 24 /** 25 * Add the {@link MoreKeysPanel} to the target view. 26 * @param panel the panel to be shown. 27 */ onShowMoreKeysPanel(final MoreKeysPanel panel)28 public void onShowMoreKeysPanel(final MoreKeysPanel panel); 29 30 /** 31 * Remove the current {@link MoreKeysPanel} from the target view. 32 */ onDismissMoreKeysPanel()33 public void onDismissMoreKeysPanel(); 34 35 /** 36 * Instructs the parent to cancel the panel (e.g., when entering a different input mode). 37 */ onCancelMoreKeysPanel()38 public void onCancelMoreKeysPanel(); 39 } 40 41 public static final Controller EMPTY_CONTROLLER = new Controller() { 42 @Override 43 public void onShowMoreKeysPanel(final MoreKeysPanel panel) {} 44 @Override 45 public void onDismissMoreKeysPanel() {} 46 @Override 47 public void onCancelMoreKeysPanel() {} 48 }; 49 50 /** 51 * Initializes the layout and event handling of this {@link MoreKeysPanel} and calls the 52 * controller's onShowMoreKeysPanel to add the panel's container view. 53 * 54 * @param parentView the parent view of this {@link MoreKeysPanel} 55 * @param controller the controller that can dismiss this {@link MoreKeysPanel} 56 * @param pointX x coordinate of this {@link MoreKeysPanel} 57 * @param pointY y coordinate of this {@link MoreKeysPanel} 58 * @param listener the listener that will receive keyboard action from this 59 * {@link MoreKeysPanel}. 60 */ 61 // TODO: Currently the MoreKeysPanel is inside a container view that is added to the parent. 62 // Consider the simpler approach of placing the MoreKeysPanel itself into the parent view. showMoreKeysPanel(View parentView, Controller controller, int pointX, int pointY, KeyboardActionListener listener)63 public void showMoreKeysPanel(View parentView, Controller controller, int pointX, 64 int pointY, KeyboardActionListener listener); 65 66 /** 67 * Dismisses the more keys panel and calls the controller's onDismissMoreKeysPanel to remove 68 * the panel's container view. 69 */ dismissMoreKeysPanel()70 public void dismissMoreKeysPanel(); 71 72 /** 73 * Process a move event on the more keys panel. 74 * 75 * @param x translated x coordinate of the touch point 76 * @param y translated y coordinate of the touch point 77 * @param pointerId pointer id touch point 78 * @param eventTime timestamp of touch point 79 */ onMoveEvent(final int x, final int y, final int pointerId, final long eventTime)80 public void onMoveEvent(final int x, final int y, final int pointerId, final long eventTime); 81 82 /** 83 * Process a down event on the more keys panel. 84 * 85 * @param x translated x coordinate of the touch point 86 * @param y translated y coordinate of the touch point 87 * @param pointerId pointer id touch point 88 * @param eventTime timestamp of touch point 89 */ onDownEvent(final int x, final int y, final int pointerId, final long eventTime)90 public void onDownEvent(final int x, final int y, final int pointerId, final long eventTime); 91 92 /** 93 * Process an up event on the more keys panel. 94 * 95 * @param x translated x coordinate of the touch point 96 * @param y translated y coordinate of the touch point 97 * @param pointerId pointer id touch point 98 * @param eventTime timestamp of touch point 99 */ onUpEvent(final int x, final int y, final int pointerId, final long eventTime)100 public void onUpEvent(final int x, final int y, final int pointerId, final long eventTime); 101 102 /** 103 * Translate X-coordinate of touch event to the local X-coordinate of this 104 * {@link MoreKeysPanel}. 105 * 106 * @param x the global X-coordinate 107 * @return the local X-coordinate to this {@link MoreKeysPanel} 108 */ translateX(int x)109 public int translateX(int x); 110 111 /** 112 * Translate Y-coordinate of touch event to the local Y-coordinate of this 113 * {@link MoreKeysPanel}. 114 * 115 * @param y the global Y-coordinate 116 * @return the local Y-coordinate to this {@link MoreKeysPanel} 117 */ translateY(int y)118 public int translateY(int y); 119 120 /** 121 * Show this {@link MoreKeysPanel} in the parent view. 122 * 123 * @param parentView the {@link ViewGroup} that hosts this {@link MoreKeysPanel}. 124 */ showInParent(ViewGroup parentView)125 public void showInParent(ViewGroup parentView); 126 127 /** 128 * Remove this {@link MoreKeysPanel} from the parent view. 129 */ removeFromParent()130 public void removeFromParent(); 131 132 /** 133 * Return whether the panel is currently being shown. 134 */ isShowingInParent()135 public boolean isShowingInParent(); 136 } 137