scrollindlayer.java

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

JAVA
171
字号
/* *    * * 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.layers;import com.sun.midp.chameleon.*;import com.sun.midp.chameleon.skins.resources.ScrollIndResourcesConstants;/** * A ScrollIndLayer is a region of the display used for showing scroll indicator * status either as arrows or bar.   */public abstract class ScrollIndLayer extends CLayer {    /**     * Scrollbar operation types     */    public static final int SCROLL_NONE = 0;    public static final int SCROLL_LINEUP = 1;    public static final int SCROLL_LINEDOWN= 2;    public static final int SCROLL_PAGEUP = 3;    public static final int SCROLL_PAGEDOWN= 4;    public static final int SCROLL_THUMBTRACK= 5;    /**     * scrollIndArrow layer is just one for all scrollable layers.     * It is chached and shared between all layers     */     private static ScrollIndLayer scrollIndArrows;    /** Scrollable layer */     protected CLayer scrollable;    /**     * True if special alert indicator bar should be drawn instead of      * the regular one     */    protected boolean alertMode;    /**     * Scrolling listener.     * This layer is notified if the scroll indicator is changed     */    protected ScrollListener listener;    /**     * Set the current vertical scroll position and proportion.     *     * @param scrollPosition vertical scroll position.     * @param scrollProportion vertical scroll proportion.     */    public abstract void setVerticalScroll(int scrollPosition,                                   int scrollProportion);    /**     * Calculate layer bounds depending on the scrollable     */    public abstract void setBounds();    /**     * Common constructor.     * @param layer the scrollable controlling the scrolling layer      */    protected ScrollIndLayer(CLayer layer) {        super();        setOpaque(false);        setSupportsInput(true);        scrollable = layer;        alertMode = scrollable instanceof AlertLayer;    }    /**     * Additional constructor.     * @param layer the scrollable controlling the scrolling layer      * @param listener the scrolling listener     */    public ScrollIndLayer(CLayer layer, ScrollListener listener) {        this(layer);        this.listener = listener;    }    /**     * Set new scrollable      * @param layer new scrollable controlling the scrolling layer     * @return true if the scrollable is changed, false - otherwise     */    public boolean setScrollable(CLayer layer) {        boolean ret = scrollable != layer;        if (ret) {            setVisible(false);            scrollable = layer;            alertMode = scrollable instanceof AlertLayer;        }        return ret;    }        /**     * Set new listener      * @param newListener new scrolling listener     * @return true if the listener is changed, false - otherwise     */    public boolean setListener(ScrollListener newListener) {        boolean ret = listener != newListener;        if (ret) {            listener = newListener;            if (listener != null) {                listener.updateScrollIndicator();            }        }        return ret;    }    /**     * Update bounds of layer     *     * @param layers - current layer can be dependant on this parameter     */    public void update(CLayer[] layers) {        super.update(layers);        setBounds();    }    /**     * Called by MIDPWindow to initialize this layer     */    protected void initialize() {        super.initialize();        setBounds();    }    public static ScrollIndLayer getInstance(int type) {        ScrollIndLayer s = null;        switch (type) {        case ScrollIndResourcesConstants.MODE_ARROWS:            if (scrollIndArrows == null) {                scrollIndArrows = new ScrollArrowLayer(null, null);            }            s = scrollIndArrows;            break;        case ScrollIndResourcesConstants.MODE_BAR:            s = new ScrollBarLayer(null, null);            break;        default:            break;        }        return s;    }}

⌨️ 快捷键说明

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