ptiteratorimpl.java

来自「This is a resource based on j2me embedde」· Java 代码 · 共 227 行

JAVA
227
字号
/* *   * * Copyright  1990-2007 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER *  * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation. *  * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License version 2 for more details (a copy is * included at /legal/license.txt). *  * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA *  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. */package com.sun.midp.chameleon.input;import com.sun.midp.io.Util;import com.sun.midp.log.LogChannels;import com.sun.midp.log.Logging;/**  * Implements PTIterator using machine-dependent KNI interface. * */public class PTIteratorImpl implements PTIterator {    /**      * Internal array size to hold KNI word completion     */    static final int MAX_STRING = 128;        /**      * Internal array to hold KNI word completion     */    private byte[] entry;    /**      * current handle     */    private int handle;        /**      * create a new iterator     * @param dictionary dictionary id      */    public PTIteratorImpl(int dictionary) {        entry = new byte[MAX_STRING];        handle = ptNewIterator0(dictionary);    }    /**      * create a new handle and clear completion state by     * calling ptNewIterator0()     */    public void reset() {        ptClear0(handle);    }        /**      * check if current handle is valid     * @return true is valid, false otherwise     */    public boolean isValid() {        if (Logging.REPORT_LEVEL <= Logging.INFORMATION) {            Logging.report(Logging.INFORMATION, LogChannels.LC_HIGHUI,                "isValid = " + (handle != 0));        }        return handle > 0;    }        /**      * Adds a key to current completion string     * @param keyCode char in the range '0'-'9', '#', or '*'     */    public void nextLevel(int keyCode) {        if (isValid()) {            ptAddKey0(handle, keyCode);        }    }        /**      * Backspace on key in current completion string.     */    public void prevLevel() {        if (isValid()) {            ptDeleteKey0(handle);        }    }        /**     * Returns true if the iteration has more elements. (In other words,     * returns <code>true</code> if <code>next</code> would return an     * element rather than throwing an exception.)     *     * @return true if the iterator has more elements.     */    public boolean hasNext() {        boolean ret = false;        if (isValid()) {            ret = ptHasCompletionOption0(handle);        }        return ret;    }        /**      * Reverts to first possible completion.     * If next() has been called uptil hasNext() returns false, then after      * calling reviewCompletionOptions(), calling next() will return     * the 1st completion     */    public void resetNext() {        if (isValid()) {            ptRenewCompletionOptions0(handle);        }    }    /**     * Returns the next element in the iteration.     *     * @return next element in the iteration.     *     * @exception NoSuchElementException iteration has no more elements.     */    public String next() {        if (Logging.REPORT_LEVEL <= Logging.INFORMATION) {            Logging.report(Logging.INFORMATION, LogChannels.LC_HIGHUI,                "[iter.nextCompletionOption] >>");        }        String ret = null;        if (isValid()) {            ret = ptNextCompletionOption0(handle, entry.length);        }        if (ret == null)            ret = "";        if (Logging.REPORT_LEVEL <= Logging.INFORMATION) {            Logging.report(Logging.INFORMATION, LogChannels.LC_HIGHUI,                "[iter.nextCompletionOption] : " + ret);        }        return ret;    }    /**      * NATIVE CODE     */    /**     * Create a new iterator instance     *     * @param dictionary library handle     * @return handle of new iterator.     */    private static native int ptNewIterator0(int dictionary);    /**     * Clear all text from the predictive text iterator      *     * @param handle the handle of the iterator      * @return true if iterator has been cleared successfully otherwise false.     */    private static native boolean  ptClear0(int handle);    /**     * Advances the predictive text iterator using the next key code     *     * @param handle the handle of the iterator      * @param keyCode the next key ('0'-'9')     *     * @return true if key code has been added successfully otherwise false     */    private static native boolean  ptAddKey0(int handle, int keyCode);    /**     * Backspace the iterator one key      *     * @param handle the handle of the iterator      * @return true if key has been deleted successfully otherwise false.     */    private static native boolean  ptDeleteKey0(int handle);        /**     * reset completion options for for the current predictive text entry     * After this call, ptNextCompletionOption() will return all     * completion options starting from 1st one.     *     * @param handle the handle of the iterator      * @return true if iterator has been reset successfully otherwise false.     */    private static native boolean  ptRenewCompletionOptions0(int handle);    /**     * return the current predictive text completion option     *     * @param handle the handle of the iterator      * @param outMaxSize max size of the outArray      *     * @return next element in the iteration     */    private static native String ptNextCompletionOption0(                                         int handle, int outMaxSize);    /**     * see if exist further completion options for the current     * predictive text entry     *     * @param handle the handle of the iterator      *     * @return true if more completion options exist, false otherwise     */    private static native boolean ptHasCompletionOption0(int handle);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?