clayerlist.java
来自「This is a resource based on j2me embedde」· Java 代码 · 共 144 行
JAVA
144 行
/* * * * 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;/** * The class represents bi-directional ordered list of UI layers with * possibility to add, remove and iterate over list elements */class CLayerList { protected CLayerElement top; protected CLayerElement bottom; protected int count; /** Construct empty layers list */ CLayerList() { top = null; bottom = null; count = 0; } /** * Find UI layer instance in the list * @param layer the instance to search in the list for * @return list element with searched layer if success, null otherwise */ CLayerElement find(CLayer layer) { for(CLayerElement l = top; l != null; l = l.lower) if (l.layer == layer) return l; return null; } /** * Add new layer to the top of list with no check for other * occurrences of the layer in the list * * @param layer CLayer instance to be added * @return list element of the newly added layer */ CLayerElement addLayer(CLayer layer) { CLayerElement le = new CLayerElement(layer, top, null); if (top != null) top.upper = le; top = le; if (bottom == null) bottom = le; count ++; return le; } /** * Remove layer from the list * * @param layer CLayer instance to be removed * @return true if the layer was found and removed, false otherwise */ boolean removeLayer(CLayer layer) { CLayerElement le = find(layer); if (le != null) { removeLayerElement(le); le.layer = null; return true; } else { return false; } }; /** * Remove layer element from the list with no extra checks. * It's caller's responsibility to apply the method on * list elements only. * * @param le list element to be removed */ void removeLayerElement(CLayerElement le) { CLayerElement upper = le.upper; CLayerElement lower = le.lower; if (upper != null) { upper.lower = lower; } else if (top == le) { top = lower; } if (lower != null) { lower.upper = upper; } else if (bottom == le) { bottom = upper; } // Clear links to neighbour layers le.upper = le.lower = null; count --; } /** * Get the most top list element * @return return the element with top most layer */ CLayerElement getTop() { return top; } /** * Get the most bottom list element * @return return the element with top most layer */ CLayerElement getBottom() { return bottom; } /** * Get number of layers in the list * @return number of list elements */ int size() { return count; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?