| /* |
| * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. |
| * |
| * 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 jp.co.omronsoft.openwnn; |
| |
| import android.app.Dialog; |
| import android.content.res.Resources; |
| import android.content.SharedPreferences; |
| import android.view.Gravity; |
| import android.view.View; |
| import android.view.ViewGroup; |
| import android.view.ViewGroup.LayoutParams; |
| import android.widget.HorizontalScrollView; |
| import android.widget.LinearLayout; |
| import android.widget.TextView; |
| import android.util.TypedValue; |
| |
| import java.util.ArrayList; |
| |
| /** |
| * The interface of candidates view manager used by {@link OpenWnn}. |
| * |
| * @author Copyright (C) 2008-2011 OMRON SOFTWARE CO., LTD. All Rights Reserved. |
| */ |
| public abstract class CandidatesViewManager { |
| /** Size of candidates view (normal) */ |
| public static final int VIEW_TYPE_NORMAL = 0; |
| /** Size of candidates view (full) */ |
| public static final int VIEW_TYPE_FULL = 1; |
| /** Size of candidates view (close/non-display) */ |
| public static final int VIEW_TYPE_CLOSE = 2; |
| |
| /** |
| * Attribute of a word (no attribute) |
| * @see jp.co.omronsoft.openwnn.WnnWord |
| */ |
| public static final int ATTRIBUTE_NONE = 0; |
| /** |
| * Attribute of a word (a candidate in the history list) |
| * @see jp.co.omronsoft.openwnn.WnnWord |
| */ |
| public static final int ATTRIBUTE_HISTORY = 1; |
| /** |
| * Attribute of a word (the best candidate) |
| * @see jp.co.omronsoft.openwnn.WnnWord |
| */ |
| public static final int ATTRIBUTE_BEST = 2; |
| /** |
| * Attribute of a word (auto generated/not in the dictionary) |
| * @see jp.co.omronsoft.openwnn.WnnWord |
| */ |
| public static final int ATTRIBUTE_AUTO_GENERATED = 4; |
| |
| /** The view of the LongPressDialog */ |
| protected View mViewLongPressDialog = null; |
| |
| /** Whether candidates long click enable */ |
| protected Dialog mDialog = null; |
| |
| /** The word pressed */ |
| protected WnnWord mWord; |
| |
| /** |
| * Initialize the candidates view. |
| * |
| * @param parent The OpenWnn object |
| * @param width The width of the display |
| * @param height The height of the display |
| * |
| * @return The candidates view created in the initialize process; {@code null} if cannot create a candidates view. |
| */ |
| public abstract View initView(OpenWnn parent, int width, int height); |
| |
| /** |
| * Get the candidates view being used currently. |
| * |
| * @return The candidates view; {@code null} if no candidates view is used currently. |
| */ |
| public abstract View getCurrentView(); |
| |
| /** |
| * Set the candidates view type. |
| * |
| * @param type The candidate view type, |
| * from {@link CandidatesViewManager#VIEW_TYPE_NORMAL} to |
| * {@link CandidatesViewManager#VIEW_TYPE_CLOSE} |
| */ |
| public abstract void setViewType(int type); |
| |
| /** |
| * Get the candidates view type. |
| * |
| * @return The view type, |
| * from {@link CandidatesViewManager#VIEW_TYPE_NORMAL} to |
| * {@link CandidatesViewManager#VIEW_TYPE_CLOSE} |
| */ |
| public abstract int getViewType(); |
| |
| /** |
| * Display candidates. |
| * |
| * @param converter The {@link WnnEngine} from which {@link CandidatesViewManager} gets the candidates |
| * |
| * @see jp.co.omronsoft.openwnn.WnnEngine#getNextCandidate |
| */ |
| public abstract void displayCandidates(WnnEngine converter); |
| |
| /** |
| * Clear and hide the candidates view. |
| */ |
| public abstract void clearCandidates(); |
| |
| /** |
| * Replace the preferences in the candidates view. |
| * |
| * @param pref The preferences |
| */ |
| public abstract void setPreferences(SharedPreferences pref); |
| |
| /** |
| * KeyEvent action for soft key board. |
| * |
| * @param key Key event |
| */ |
| public abstract void processMoveKeyEvent(int key); |
| |
| /** |
| * Get candidate is focused now. |
| * |
| * @return the Candidate is focused of a flag. |
| */ |
| public abstract boolean isFocusCandidate(); |
| |
| /** |
| * Select candidate that has focus. |
| */ |
| public abstract void selectFocusCandidate(); |
| |
| /** |
| * MSG_SET_CANDIDATES removeMessages. |
| */ |
| public abstract void setCandidateMsgRemove(); |
| |
| /** |
| * Display Dialog. |
| * |
| * @param view View, |
| * @param word Display word, |
| */ |
| protected void displayDialog(View view, final WnnWord word) { |
| if ((view instanceof CandidateTextView) && (null != mViewLongPressDialog)) { |
| closeDialog(); |
| mDialog = new Dialog(view.getContext(), R.style.Dialog); |
| |
| TextView text = (TextView)mViewLongPressDialog.findViewById(R.id.candidate_longpress_dialog_text); |
| text.setText(word.candidate); |
| |
| mDialog.setContentView(mViewLongPressDialog); |
| ((CandidateTextView) view).displayCandidateDialog(mDialog); |
| } |
| } |
| |
| /** |
| * Close Dialog. |
| * |
| */ |
| public void closeDialog() { |
| if (null != mDialog) { |
| mDialog.dismiss(); |
| mDialog = null; |
| if (null != mViewLongPressDialog) { |
| ViewGroup parent = (ViewGroup)mViewLongPressDialog.getParent(); |
| if (null != parent) { |
| parent.removeView(mViewLongPressDialog); |
| } |
| } |
| } |
| } |
| } |