/*
* 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.view.KeyEvent;
import java.util.*;
/**
* The definition class of event message used by OpenWnn framework.
*
* @author Copyright (C) 2009-2011 OMRON SOFTWARE CO., LTD. All Rights Reserved.
*/
public class OpenWnnEvent {
/** Offset value for private events */
public static final int PRIVATE_EVENT_OFFSET = 0xFF000000;
/** Undefined */
public static final int UNDEFINED = 0;
/**
* Reverse key.
*
* This is used for multi-tap keyboard like 12-key.
*/
public static final int TOGGLE_REVERSE_CHAR = 0xF0000001;
/**
* Convert.
*
* This event makes {@link OpenWnn} to display conversion candidates from {@link ComposingText}.
*/
public static final int CONVERT = 0xF0000002;
/**
* Predict.
*
* This event makes {@link OpenWnn} to display prediction candidates from {@link ComposingText}.
*/
public static final int PREDICT = 0xF0000008;
/**
* List candidates (normal view).
*
* This event changes the candidates view's size
*/
public static final int LIST_CANDIDATES_NORMAL = 0xF0000003;
/**
* List candidates (wide view).
*
* This event changes the candidates view's size
*/
public static final int LIST_CANDIDATES_FULL = 0xF0000004;
/**
* Close view
*/
public static final int CLOSE_VIEW = 0xF0000005;
/**
* Insert character(s).
*
* This event input specified character({@code chars}) into the cursor position.
*/
public static final int INPUT_CHAR = 0xF0000006;
/**
* Toggle a character.
*
* This event changes a character at cursor position with specified rule({@code toggleMap}).
* This is used for multi-tap keyboard.
*/
public static final int TOGGLE_CHAR = 0xF000000C;
/**
* Replace a character at the cursor.
*/
public static final int REPLACE_CHAR = 0xF000000D;
/**
* Input key.
*
* This event processes a {@code keyEvent}.
*/
public static final int INPUT_KEY = 0xF0000007;
/**
* Input Soft key.
*
* This event processes a {@code keyEvent}.
* If the event is not processed in {@link OpenWnn}, the event is thrown to the IME's client.
*/
public static final int INPUT_SOFT_KEY = 0xF000000E;
/**
* Focus to the candidates view.
*/
public static final int FOCUS_TO_CANDIDATE_VIEW = 0xF0000009;
/**
* Focus out from the candidates view.
*/
public static final int FOCUS_OUT_CANDIDATE_VIEW = 0xF000000A;
/**
* Select a candidate
*/
public static final int SELECT_CANDIDATE = 0xF000000B;
/**
* Change Mode
*/
public static final int CHANGE_MODE = 0xF000000F;
/**
* Key long press event.
*/
public static final int KEYLONGPRESS = 0xF0000024;
/**
* The definition class of engine's mode.
*/
public static final class Mode {
/** Default (use both of the letterConverter and the {@link WnnEngine}) */
public static final int DEFAULT = 0;
/** Direct input (not use the letterConverter and the {@link WnnEngine}) */
public static final int DIRECT = 1;
/** Do not use the {@link LetterConverter} */
public static final int NO_LV1_CONV = 2;
/** Do not use the {@link WnnEngine} */
public static final int NO_LV2_CONV = 3;
}
/**
* Commit the composing text
*/
public static final int COMMIT_COMPOSING_TEXT = 0xF0000010;
/**
* List symbols
*/
public static final int LIST_SYMBOLS = 0xF0000011;
/**
* Switch Language
*/
public static final int SWITCH_LANGUAGE = 0xF0000012;
/**
* Initialize the user dictionary.
*/
public static final int INITIALIZE_USER_DICTIONARY = 0xF0000013;
/**
* Initialize the learning dictionary.
*/
public static final int INITIALIZE_LEARNING_DICTIONARY = 0xF0000014;
/**
* List words in the user dictionary.
*
* To get words from the list, use {@code GET_WORD} event.
*/
public static final int LIST_WORDS_IN_USER_DICTIONARY = 0xF0000015;
/**
* Get a word from the user dictionary.
*
* Get a word from top of the list made by {@code LIST_WORDS_IN_USER_DICTIONARY}.
*/
public static final int GET_WORD = 0xF0000018;
/**
* Add word to the user dictionary.
*/
public static final int ADD_WORD = 0xF0000016;
/**
* Delete a word from the dictionary.
*/
public static final int DELETE_WORD = 0xF0000017;
/**
* Update the candidate view
*/
public static final int UPDATE_CANDIDATE = 0xF0000019;
/**
* Edit words in the user dictionary.
*/
public static final int EDIT_WORDS_IN_USER_DICTIONARY = 0xF000001A;
/**
* Undo
*/
public static final int UNDO = 0xF000001B;
/**
* Change input view
*/
public static final int CHANGE_INPUT_VIEW = 0xF000001C;
/**
* Touch the candidate view.
*/
public static final int CANDIDATE_VIEW_TOUCH = 0xF000001D;
/**
* Key up event.
*/
public static final int KEYUP = 0xF000001F;
/**
* Touch the other key.
*/
public static final int TOUCH_OTHER_KEY = 0xF0000020;
/**
* Start focus candidate.
*/
public static final int FOCUS_CANDIDATE_START = 0xF0002000;
/**
* End focus candidate.
*/
public static final int FOCUS_CANDIDATE_END = 0xF0002001;
/**
* Scroll up for symbol keyboard.
*/
public static final int CANDIDATE_VIEW_SCROLL_UP = 0xF0001000;
/**
* Scroll down for symbol keyboard.
*/
public static final int CANDIDATE_VIEW_SCROLL_DOWN = 0xF0001001;
/**
* Scroll full up for symbol keyboard.
*/
public static final int CANDIDATE_VIEW_SCROLL_FULL_UP = 0xF0001002;
/**
* Scroll full down for symbol keyboard.
*/
public static final int CANDIDATE_VIEW_SCROLL_FULL_DOWN = 0xF0001003;
/** Event code */
public int code = UNDEFINED;
/** Detail mode of the event */
public int mode = 0;
/** Type of dictionary */
public int dictionaryType = 0;
/** Input character(s) */
public char[] chars = null;
/** Key event */
public KeyEvent keyEvent = null;
/** Mapping table for toggle input */
public String[] toggleTable = null;
/** Mapping table for toggle input */
public HashMap,?> replaceTable = null;
/** Word's information */
public WnnWord word = null;
/** Error code */
public int errorCode;
/**
* Generate {@link OpenWnnEvent}
*
* @param code The code
*/
public OpenWnnEvent(int code) {
this.code = code;
}
/**
* Generate {@link OpenWnnEvent} for changing the mode
*
* @param code The code
* @param mode The mode
*/
public OpenWnnEvent(int code, int mode) {
this.code = code;
this.mode = mode;
}
/**
* Generate {@link OpenWnnEvent} for a inputing character
*
* @param code The code
* @param c The inputing character
*/
public OpenWnnEvent(int code, char c) {
this.code = code;
this.chars = new char[1];
this.chars[0] = c;
}
/**
* Generate {@link OpenWnnEvent} for inputing characters
*
* @param code The code
* @param c The array of inputing character
*/
public OpenWnnEvent(int code, char c[]) {
this.code = code;
this.chars = c;
}
/**
* Generate {@link OpenWnnEvent} for toggle inputing a character
*
* @param code The code
* @param toggleTable The array of toggle inputing a character
*/
public OpenWnnEvent(int code, String[] toggleTable) {
this.code = code;
this.toggleTable = toggleTable;
}
/**
* Generate {@link OpenWnnEvent} for replacing a character
*
* @param code The code
* @param replaceTable The replace table
*/
public OpenWnnEvent(int code, HashMap,?> replaceTable) {
this.code = code;
this.replaceTable = replaceTable;
}
/**
* Generate {@link OpenWnnEvent} from {@link KeyEvent}
*
* This constructor is same as {@code OpenWnnEvent(INPUT_KEY, ev)}.
*
* @param ev The key event
*/
public OpenWnnEvent(KeyEvent ev) {
if(ev.getAction() != KeyEvent.ACTION_UP){
this.code = INPUT_KEY;
}else{
this.code = KEYUP;
}
this.keyEvent = ev;
}
/**
* Generate {@link OpenWnnEvent} from {@link KeyEvent}
*
* @param code The code
* @param ev The key event
*/
public OpenWnnEvent(int code, KeyEvent ev) {
this.code = code;
this.keyEvent = ev;
}
/**
* Generate {@link OpenWnnEvent} for selecting a candidate
*
* @param code The code
* @param word The selected candidate
*/
public OpenWnnEvent(int code, WnnWord word) {
this.code = code;
this.word = word;
}
/**
* Generate {@link OpenWnnEvent} for dictionary management
*
* @param code The code
* @param dict The type of dictionary
* @param word The selected candidate
*/
public OpenWnnEvent(int code, int dict, WnnWord word) {
this.code = code;
this.dictionaryType = dict;
this.word = word;
}
}