UserDictionaryToolsList.java revision 77ffa9b0b986a2d70143f63cdaa8451bf1674f84
1053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project/* 2053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. 3053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 4053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * you may not use this file except in compliance with the License. 6053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * You may obtain a copy of the License at 7053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 8053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 10053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * See the License for the specific language governing permissions and 14053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * limitations under the License. 15053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 16053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 17053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectpackage jp.co.omronsoft.openwnn; 18053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 19053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.app.Activity; 20053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.app.AlertDialog; 21053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.app.Dialog; 22053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.content.DialogInterface; 23053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.content.Intent; 24053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.graphics.Color; 25053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.os.Bundle; 26053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.os.Handler; 27053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.text.TextUtils; 28053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.util.Log; 29053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.view.Display; 30053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.view.Menu; 31053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.view.MenuItem; 32053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.view.MotionEvent; 33053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.view.KeyEvent; 34053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.view.View; 35053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.view.ViewGroup; 36053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.view.Window; 37053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.view.WindowManager; 38053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.view.View.OnFocusChangeListener; 39053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.view.View.OnTouchListener; 40053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.widget.TableLayout; 41053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.widget.TableRow; 42053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.widget.TextView; 43053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport android.widget.Toast; 44053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 45053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project/** 463feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa * The abstract class for user dictionary tool. 47053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 487b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa * @author Copyright (C) 2009, OMRON SOFTWARE CO., LTD. All Rights Reserved. 49053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 50053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectpublic abstract class UserDictionaryToolsList extends Activity 51053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project implements View.OnClickListener, OnTouchListener, OnFocusChangeListener { 52053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 53053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** The class name of the user dictionary tool */ 54053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project protected String mListViewName; 55053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** The class name of the user dictionary editor */ 56053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project protected String mEditViewName; 57053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** The package name of the user dictionary editor */ 58053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project protected String mPackageName; 59053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 60053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** ID of the menu item (add) */ 61053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private final int MENU_ITEM_ADD = 0; 62053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** ID of the menu item (edit) */ 63053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private final int MENU_ITEM_EDIT = 1; 64053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** ID of the menu item (delete) */ 65053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private final int MENU_ITEM_DELETE = 2; 66053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** ID of the menu item (initialize) */ 67053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private final int MENU_ITEM_INIT = 3; 68053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 69053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** ID of the dialog control (confirm deletion) */ 70053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private final int DIALOG_CONTROL_DELETE_CONFIRM = 0; 71053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** ID of the dialog control (confirm initialize) */ 72053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private final int DIALOG_CONTROL_INIT_CONFIRM = 1; 73053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 74053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** The size of font*/ 75053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private final int WORD_TEXT_SIZE = 16; 76053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 77053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** The color of background */ 78053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private final int UNFOCUS_BACKGROUND_COLOR = 0xFF242424; 79053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private final int FOCUS_BACKGROUND_COLOR = 0xFFFF8500; 80053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 81053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** The minimum count of registered words */ 82053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private final int MIN_WORD_COUNT = 0; 83053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** The maximum count of registered words */ 84053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private final int MAX_WORD_COUNT = 100; 85053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Maximum word count to display */ 86053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private final int MAX_LIST_WORD_COUNT = 50; 87053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Maximum word count to display (at the first step) */ 88053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private final int MAX_LIST_WORD_DELAY_COUNT = 50; 89053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 90053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** The threshold time of the double tapping */ 91053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private final int DOUBLE_TAP_TIME = 300; 92053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 93053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Widgets which constitute this screen of activity */ 94053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private Menu mMenu; 95053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private TableLayout mTableLayout; 96053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static View sFocusingView = null; 97053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static View sFocusingPairView = null; 98053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 99053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** Objects which control state transitions */ 100053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private Intent mIntent; 101053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private OpenWnnEvent mEvent; 102053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private Handler mDelayUpdateHandler; 103053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 104053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** The number of the registered words */ 105053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private int mWordCount = -1; 106053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 107053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** The state of menu items */ 108053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private boolean mAddMenuEnabled; 109053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private boolean mEditMenuEnabled; 110053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private boolean mDeleteMenuEnabled; 111053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private boolean mInitMenuEnabled; 112053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1137b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa /** {@code true} if the menu option is initialized */ 114053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private boolean mInitializedMenu = false; 1157b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa /** {@code true} if one of word is selected */ 116053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private boolean mSelectedWords; 117053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** The viewID which is selected */ 118053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private int mSelectedViewID = -1; 119053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** The viewID which was selected previously */ 120053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static int sBeforeSelectedViewID = -1; 121053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** The time of previous action */ 122053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private static long sJustBeforeActionTime = -1; 123053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 124053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private boolean mHasCreatedList = false; 125053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 126053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 127053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Send the specified event to IME 128053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 129053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @param ev The event object 1307b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa * @return {@code true} if this event is processed 131053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 132053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project protected abstract boolean sendEventToIME(OpenWnnEvent ev); 133053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 134053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 135053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Create the header 136053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 137053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project protected abstract void headerCreate(); 138053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 139053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** @see android.app.Activity#onCreate */ 140053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project @Override protected void onCreate(Bundle savedInstanceState) { 141053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 142053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 143053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project super.onCreate(savedInstanceState); 144053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 145053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mDelayUpdateHandler = new Handler(); 146053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* create XML layout */ 147053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 148053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project setContentView(R.layout.user_dictionary_tools_list); 149053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1503feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa } 1513feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa 1523feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa /** @see android.app.Activity#onStart */ 1533feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa @Override protected void onStart() { 1543feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa super.onStart(); 1553feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa sBeforeSelectedViewID = -1; 1563feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa sJustBeforeActionTime = -1; 157053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project updateWordList(); 1583feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa } 159053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 1603feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa /** @see android.app.Activity#onStop */ 1613feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa @Override protected void onStop() { 1623feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa super.onStop(); 1633feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa mDelayUpdateHandler.removeCallbacks(updateWordListRunnable); 164053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 165053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 166053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 167053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Set parameters of table 168053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 169053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @param w The width of the table 170053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @param h The height of the table 171053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @return The information of the layout 172053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 173053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private TableLayout.LayoutParams tableCreateParam(int w, int h) { 174053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return new TableLayout.LayoutParams(w, h); 175053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 176053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 177053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** @see android.app.Activity#onCreateOptionsMenu */ 178053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project @Override public boolean onCreateOptionsMenu(Menu menu) { 179053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 180053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 181053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* initialize the menu */ 182053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project menu.clear(); 183053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* set the menu item enable/disable */ 184053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project setOptionsMenuEnabled(); 185053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* [menu] add a word */ 186053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project menu.add(0, MENU_ITEM_ADD, 0, R.string.user_dictionary_add) 187053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project .setIcon(android.R.drawable.ic_menu_add) 188053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project .setEnabled(mAddMenuEnabled); 189053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* [menu] edit a word */ 190053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project menu.add(0, MENU_ITEM_EDIT, 0, R.string.user_dictionary_edit) 191053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project .setIcon(android.R.drawable.ic_menu_edit) 192053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project .setEnabled(mEditMenuEnabled); 193053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* [menu] delete a word */ 194053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project menu.add(0, MENU_ITEM_DELETE, 0, R.string.user_dictionary_delete) 195053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project .setIcon(android.R.drawable.ic_menu_delete) 196053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project .setEnabled(mDeleteMenuEnabled); 197053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* [menu] clear the dictionary */ 198053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project menu.add(1, MENU_ITEM_INIT, 0, R.string.user_dictionary_init) 199053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project .setIcon(android.R.drawable.ic_menu_delete) 200053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project .setEnabled(mInitMenuEnabled); 201053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 202053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mMenu = menu; 203053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mInitializedMenu = true; 204053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 205053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 206053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return super.onCreateOptionsMenu(menu); 207053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 208053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 209053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 210053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Change state of the option menus according to a current state of the list widget 211053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 212053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private void setOptionsMenuEnabled() { 213053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 214053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 215053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* [menu] add a word */ 216053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if ((mWordCount >= MAX_WORD_COUNT) || !mHasCreatedList) { 217053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* disable if the number of registered word exceeds MAX_WORD_COUNT */ 218053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mAddMenuEnabled = false; 219053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 220053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mAddMenuEnabled = true; 221053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 222053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 223053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* [menu] edit a word/delete a word */ 2247b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa if (mWordCount <= MIN_WORD_COUNT) { 225053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* disable if no word is registered or no word is selected */ 226053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mEditMenuEnabled = false; 227053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mDeleteMenuEnabled = false; 228053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 229053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mEditMenuEnabled = true; 230053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mDeleteMenuEnabled = true; 231053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 232053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 233053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* [menu] clear the dictionary (always enabled) */ 234053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mInitMenuEnabled = true; 235053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 236053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 237053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 238053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** @see android.app.Activity#onOptionsItemSelected */ 239053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project @Override public boolean onOptionsItemSelected(MenuItem item) { 240053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 241053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project boolean ret; 242053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project switch (item.getItemId()) { 243053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case MENU_ITEM_ADD: 244053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* add a word */ 245053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project wordAdd(); 246053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ret = true; 247053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 248053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 249053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case MENU_ITEM_EDIT: 250053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* edit the word (show dialog) */ 251053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project wordEdit(sFocusingView, sFocusingPairView); 252053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ret = true; 253053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 254053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 255053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case MENU_ITEM_DELETE: 256053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* delete the word (show dialog) */ 257053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project showDialog(DIALOG_CONTROL_DELETE_CONFIRM); 258053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ret = true; 259053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 260053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 261053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case MENU_ITEM_INIT: 262053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* clear the dictionary (show dialog) */ 263053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project showDialog(DIALOG_CONTROL_INIT_CONFIRM); 264053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ret = true; 265053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 266053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 267053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project default: 268053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ret = false; 269053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 270053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 271053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return ret; 272053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 273053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 274053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** @see android.app.Activity#onKeyUp */ 275053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project @Override public boolean onKeyUp(int keyCode, KeyEvent event) { 276053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* open the menu if KEYCODE_DPAD_CENTER is pressed */ 277053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) { 278053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project openOptionsMenu(); 279053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return true; 280053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 281053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return false; 282053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 283053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 284053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** @see android.app.Activity#onCreateDialog */ 285053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project @Override protected Dialog onCreateDialog(int id) { 286053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project switch (id) { 287053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case DIALOG_CONTROL_DELETE_CONFIRM: 288053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return new AlertDialog.Builder(UserDictionaryToolsList.this) 289053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project .setMessage(R.string.user_dictionary_delete_confirm) 290053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project .setNegativeButton(android.R.string.cancel, null) 291053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project .setPositiveButton(android.R.string.ok, mDialogDeleteWords) 292053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project .setCancelable(true) 293053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project .create(); 294053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 295053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case DIALOG_CONTROL_INIT_CONFIRM: 296053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return new AlertDialog.Builder(UserDictionaryToolsList.this) 297053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project .setMessage(R.string.dialog_clear_user_dictionary_message) 298053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project .setNegativeButton(android.R.string.cancel, null) 299053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project .setPositiveButton(android.R.string.ok, mDialogInitWords) 300053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project .setCancelable(true) 301053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project .create(); 302053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 303053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project default: 304053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Log.e("OpenWnn", "onCreateDialog : Invaled Get DialogID. ID=" + id); 305053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 306053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 307053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 308053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 309053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return super.onCreateDialog(id); 310053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 311053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 312053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 313053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Process the event when the button on the "Delete word" dialog is pushed 314053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 315053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @param dialog The information of the dialog 316053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @param button The button that is pushed 317053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 318053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private DialogInterface.OnClickListener mDialogDeleteWords = 319053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project new DialogInterface.OnClickListener() { 320053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public void onClick(DialogInterface dialog, int button) { 321053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 322053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project CharSequence focusString = ((TextView)sFocusingView).getText(); 323053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project CharSequence focusPairString = ((TextView)sFocusingPairView).getText(); 324053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project WnnWord wnnWordSearch = new WnnWord(); 325053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 3267b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa if (mSelectedViewID > MAX_WORD_COUNT) { 327053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project wnnWordSearch.stroke = focusPairString.toString(); 328053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project wnnWordSearch.candidate = focusString.toString(); 329053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 330053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project wnnWordSearch.stroke = focusString.toString(); 331053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project wnnWordSearch.candidate = focusPairString.toString(); 332053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 333053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project boolean deleted = deleteWord(wnnWordSearch); 334053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (deleted) { 335053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Toast.makeText(getApplicationContext(), 336053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project R.string.user_dictionary_delete_complete, 337053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Toast.LENGTH_LONG).show(); 338053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 339053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Toast.makeText(getApplicationContext(), 340053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project R.string.user_dictionary_delete_fail, 341053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Toast.LENGTH_LONG).show(); 3427b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa return; 343053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 344053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 345053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project int id = mSelectedViewID; 3467b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa id = (MAX_WORD_COUNT < id) ? id - MAX_WORD_COUNT : id; 347053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project View v = null; 348053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 349053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mTableLayout.removeView((View)sFocusingView.getParent()); 350053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 351053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project for (int i = id; i < MAX_WORD_COUNT; i++) { 352053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project v = mTableLayout.findViewById(i); 353053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (v != null) { 354053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 355053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 356053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 357053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 358053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (v == null) { 359053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project for (int i = id; 0 <= i; i--) { 360053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project v = mTableLayout.findViewById(i); 361053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (v != null) { 362053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 363053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 364053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 365053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 366053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 367053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (v != null) { 368053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ((View)v.getParent()).requestFocus(); 369053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 370053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWordCount--; 371053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 372053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project TextView leftText = (TextView) findViewById(R.id.user_dictionary_tools_list_title_words_count); 373053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project leftText.setText(mWordCount + "/" + MAX_WORD_COUNT); 374053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 375053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (mInitializedMenu) { 376053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project onCreateOptionsMenu(mMenu); 377053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 378053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 379053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project }; 380053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 381053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 382053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Process the event when the button on the "Initialize" dialog is pushed 383053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 384053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @param dialog The information of the dialog 385053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @param button The button that is pushed 386053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 387053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private DialogInterface.OnClickListener mDialogInitWords = 388053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project new DialogInterface.OnClickListener() { 389053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public void onClick(DialogInterface dialog, int button) { 390053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 391053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* clear the user dictionary */ 392053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project OpenWnnEvent ev = new OpenWnnEvent(OpenWnnEvent.INITIALIZE_USER_DICTIONARY, new WnnWord()); 393053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 394053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project sendEventToIME(ev); 395053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* show the message */ 396053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Toast.makeText(getApplicationContext(), R.string.dialog_clear_user_dictionary_done, 397053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Toast.LENGTH_LONG).show(); 398053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project updateWordList(); 3997b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa if (mInitializedMenu) { 4007b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa onCreateOptionsMenu(mMenu); 4017b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa } 402053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 403053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project }; 404053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 405053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 4063feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa /** @see android.view.View.OnClickListener#onClick */ 407053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public void onClick(View arg0) { 408053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 409053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 410053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** @see android.view.View.OnTouchListener#onTouch */ 411053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public boolean onTouch(View v, MotionEvent e) { 412053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 413053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 414053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mSelectedViewID = ((TextView)v).getId(); 415053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project switch (e.getAction()) { 416053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project case MotionEvent.ACTION_DOWN: 417053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* double tap handling */ 418053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (sBeforeSelectedViewID != ((TextView)v).getId()) { 419053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* save the view id if the id is not same as previously selected one */ 420053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project sBeforeSelectedViewID = ((TextView)v).getId(); 421053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 422053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if ((e.getDownTime() - sJustBeforeActionTime) < DOUBLE_TAP_TIME) { 423053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* edit the word if double tapped */ 424053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project sFocusingView = v; 425053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project sFocusingPairView = ((UserDictionaryToolsListFocus)v).getPairView(); 426053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project wordEdit(sFocusingView, sFocusingPairView); 427053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 428053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 429053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /* save the action time */ 430053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project sJustBeforeActionTime = e.getDownTime(); 431053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 432053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 433053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 434053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return false; 435053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 436053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 4373feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa /** @see android.view.View.OnFocusChangeListener#onFocusChange */ 438053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public void onFocusChange(View v, boolean hasFocus) { 439053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 440053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mSelectedViewID = ((TextView)v).getId(); 441053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project sFocusingView = v; 442053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project sFocusingPairView = ((UserDictionaryToolsListFocus)v).getPairView(); 443053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (hasFocus) { 444053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ((TextView)v).setTextColor(Color.BLACK); 445053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project v.setBackgroundColor(FOCUS_BACKGROUND_COLOR); 446053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ((TextView)sFocusingPairView).setTextColor(Color.BLACK); 447053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project sFocusingPairView.setBackgroundColor(FOCUS_BACKGROUND_COLOR); 448053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mSelectedWords = true; 449053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 450053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (mSelectedViewID == 0) { 451053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mSelectedWords = false; 452053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 453053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ((TextView)v).setTextColor(Color.LTGRAY); 454053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project v.setBackgroundColor(UNFOCUS_BACKGROUND_COLOR); 455053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ((TextView)sFocusingPairView).setTextColor(Color.LTGRAY); 456053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project sFocusingPairView.setBackgroundColor(UNFOCUS_BACKGROUND_COLOR); 457053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 458053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (mInitializedMenu) { 459053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project onCreateOptionsMenu(mMenu); 460053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 461053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 462053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 463053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 464053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Add the word 465053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 466053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public void wordAdd() { 467053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project screenTransition(Intent.ACTION_INSERT, mEditViewName); 468053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 469053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 470053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 471053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Edit the specified word 472053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 473053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @param focusView The information of view 474053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @param focusPairView The information of pair of view 475053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 476053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public void wordEdit(View focusView, View focusPairView) { 4777b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa if (mSelectedViewID > MAX_WORD_COUNT) { 4787b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa createUserDictionaryToolsEdit(focusPairView, focusView); 479053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 4807b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa createUserDictionaryToolsEdit(focusView, focusPairView); 481053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 482053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project screenTransition(Intent.ACTION_EDIT, mEditViewName); 483053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 484053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 485053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 486053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * The internal process of editing the specified word 487053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 488053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @param focusView The information of view 489053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @param focusPairView The information of pair of view 490053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 4917b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa protected abstract UserDictionaryToolsEdit createUserDictionaryToolsEdit(View focusView, View focusPairView); 492053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 493053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 494053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Delete the specified word 495053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 49677ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa * @param searchword The information of searching 49777ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa * @return {@code true} if success; {@code false} if fail. 498053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 499053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public boolean deleteWord(WnnWord searchword) { 500053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project OpenWnnEvent event = new OpenWnnEvent(OpenWnnEvent.LIST_WORDS_IN_USER_DICTIONARY, 501053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project WnnEngine.DICTIONARY_TYPE_USER, 502053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project searchword); 503053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 504053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project boolean deleted = false; 505053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project sendEventToIME(event); 506053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project for( int i=0; i < MAX_WORD_COUNT; i++) { 507053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project WnnWord getword = new WnnWord(); 508053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project event = new OpenWnnEvent(OpenWnnEvent.GET_WORD, 509053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project getword); 510053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project sendEventToIME(event); 511053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project getword = event.word; 512053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project int len = getword.candidate.length(); 513053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (len == 0) { 514053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 515053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 516053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (searchword.candidate.equals(getword.candidate)) { 517053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project WnnWord delword = new WnnWord(); 518053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project delword.stroke = searchword.stroke; 519053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project delword.candidate = searchword.candidate; 520053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project delword.id = i; 521053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project event = new OpenWnnEvent(OpenWnnEvent.DELETE_WORD, 522053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project delword); 523053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project deleted = sendEventToIME(event); 524053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 525053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 526053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 527053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 528053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (mInitializedMenu) { 529053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project onCreateOptionsMenu(mMenu); 530053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 531053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 532053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return deleted; 533053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 534053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 535053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 536053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 537053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Processing the transition of screen 538053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 539053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @param action The string of action 540053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * @param classname The class name 541053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 542053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private void screenTransition(String action, String classname) { 543053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 544053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (action.equals("")) { 545053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mIntent = new Intent(); 546053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 547053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mIntent = new Intent(action); 548053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 549053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mIntent.setClassName(mPackageName, classname); 550053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project startActivity(mIntent); 551053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project finish(); 552053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 553053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 554053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 555053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 556053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Update the word list. 557053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 558053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private void updateWordList() { 559053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWordCount = 0; 560053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project WnnWord wnnWordSearch = new WnnWord(); 561053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mEvent = new OpenWnnEvent(OpenWnnEvent.LIST_WORDS_IN_USER_DICTIONARY, 562053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project WnnEngine.DICTIONARY_TYPE_USER, 563053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project wnnWordSearch); 564053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project sendEventToIME(mEvent); 565053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 566053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mTableLayout = (TableLayout)findViewById(R.id.user_dictionary_tools_table); 567053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mTableLayout.removeAllViews(); 568053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 569053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (createWordList(mWordCount,MAX_LIST_WORD_COUNT, this)) { 570053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project headerCreate(); 571053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project final TextView leftText = (TextView) findViewById(R.id.user_dictionary_tools_list_title_words_count); 572053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project leftText.setText(R.string.user_dictionary_creating_wordlist); 573053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mDelayUpdateHandler.removeCallbacks(updateWordListRunnable); 574053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mDelayUpdateHandler.postDelayed(updateWordListRunnable, 0); 575053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 576053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (mSelectedViewID >= 0) { 577053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project View v; 578053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project v = mTableLayout.findViewById(mSelectedViewID); 579053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (v != null) { 580053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ((View)v.getParent()).requestFocus(); 581053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 582053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mSelectedViewID--; 583053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (mSelectedViewID < 0) { 584053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mSelectedViewID = 0; 585053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 586053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project v = mTableLayout.findViewById(mSelectedViewID); 587053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (v != null) { 588053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ((View)v.getParent()).requestFocus(); 589053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 590053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 591053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 592053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project headerCreate(); 593053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project final TextView leftText = (TextView) findViewById(R.id.user_dictionary_tools_list_title_words_count); 594053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project leftText.setText(mWordCount + "/" + MAX_WORD_COUNT); 595053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mHasCreatedList = true; 596053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 597053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 598053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 599053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 600053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Handler for updating the word list. 601053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 602053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private final Runnable updateWordListRunnable = new Runnable() { 603053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project public void run() { 604053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project UserDictionaryToolsList self = UserDictionaryToolsList.this; 605053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (createWordList(mWordCount,mWordCount+MAX_LIST_WORD_DELAY_COUNT, self)) { 606053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mDelayUpdateHandler.removeCallbacks(updateWordListRunnable); 607053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mDelayUpdateHandler.postDelayed(updateWordListRunnable, 0); 608053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 609053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mDelayUpdateHandler.removeCallbacks(updateWordListRunnable); 610053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project final TextView leftText = (TextView) findViewById(R.id.user_dictionary_tools_list_title_words_count); 611053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project leftText.setText(mWordCount + "/" + MAX_WORD_COUNT); 612053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mHasCreatedList = true; 613053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (mInitializedMenu) { 614053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project onCreateOptionsMenu(mMenu); 615053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 616053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 617053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 618053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project }; 619053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 620053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project /** 621053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Create the list of words. 622053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 62377ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa * @param position Start position to create the list 62477ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa * @param max Maximum number of words to display 62577ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa * @param self UserDictionaryToolsList 62677ffa9b0b986a2d70143f63cdaa8451bf1674f84Daisuke Miyakawa * @return {@code true} if more words undisplayed; {@code false} if no more. 627053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 628053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project private boolean createWordList(int position ,int max, UserDictionaryToolsList self) { 629053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project boolean ret = true; 630053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 631053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (position >= MAX_WORD_COUNT) { 632053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return false; 633053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 634053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Window window = getWindow(); 635053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project WindowManager windowManager = window.getWindowManager(); 636053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project Display display = windowManager.getDefaultDisplay(); 637053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project int system_width = display.getWidth(); 638053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project WnnWord wnnWordGet = new WnnWord(); 639053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mEvent = new OpenWnnEvent(OpenWnnEvent.GET_WORD, wnnWordGet); 640053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 641053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project int i; 642053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project for (i = position; i < max; i++) { 643053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (!sendEventToIME(mEvent)) { 644053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ret = false; 645053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 646053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 647053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project wnnWordGet = mEvent.word; 648053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project int len_stroke = wnnWordGet.stroke.length(); 649053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project int len_candidate = wnnWordGet.candidate.length(); 650053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (len_stroke == 0 || len_candidate == 0) { 651053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project ret = false; 652053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 653053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 654053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 655053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mWordCount++; 656053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project TableRow row = new TableRow(self); 657053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project UserDictionaryToolsListFocus stroke = new UserDictionaryToolsListFocus(self); 658053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project stroke.setId(mWordCount); 659053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project stroke.setText(wnnWordGet.stroke); 660053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project stroke.setWidth(system_width/2); 661053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project stroke.setTextSize(WORD_TEXT_SIZE); 662053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project stroke.setTextColor(Color.LTGRAY); 663053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project stroke.setBackgroundColor(UNFOCUS_BACKGROUND_COLOR); 664053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project stroke.setSingleLine(); 665053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project stroke.setPadding(1,0,1,1); 666053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project stroke.setEllipsize(TextUtils.TruncateAt.END); 667053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project stroke.setClickable(true); 668053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project stroke.setFocusable(true); 669053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project stroke.setFocusableInTouchMode(true); 670053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project stroke.setOnTouchListener(self); 671053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project stroke.setOnFocusChangeListener(self); 672053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 673053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project UserDictionaryToolsListFocus candidate = new UserDictionaryToolsListFocus(self); 674053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project candidate.setId(mWordCount+MAX_WORD_COUNT); 675053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project candidate.setText(wnnWordGet.candidate); 676053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project candidate.setWidth(system_width/2); 677053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project candidate.setTextSize(WORD_TEXT_SIZE); 678053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project candidate.setTextColor(Color.LTGRAY); 679053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project candidate.setBackgroundColor(UNFOCUS_BACKGROUND_COLOR); 680053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project candidate.setSingleLine(); 681053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project candidate.setPadding(1,0,1,1); 682053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project candidate.setEllipsize(TextUtils.TruncateAt.END); 683053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project candidate.setClickable(true); 684053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project candidate.setFocusable(true); 685053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project candidate.setFocusableInTouchMode(true); 686053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project candidate.setOnTouchListener(self); 687053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project candidate.setOnFocusChangeListener(self); 688053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 689053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project stroke.setPairView(candidate); 690053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project candidate.setPairView(stroke); 691053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 692053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project row.addView(stroke); 693053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project row.addView(candidate); 694053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mTableLayout.addView(row, tableCreateParam(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 695053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 696053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project mTableLayout.requestLayout(); 697053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return ret; 698053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 699053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} 700