⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linkomgraphiclist.java

📁 openmap java写的开源数字地图程序. 用applet实现,可以像google map 那样放大缩小地图.
💻 JAVA
字号:
// **********************************************************************// // <copyright>// //  BBN Technologies//  10 Moulton Street//  Cambridge, MA 02138//  (617) 873-8000// //  Copyright (C) BBNT Solutions LLC. All rights reserved.// // </copyright>// **********************************************************************// // $Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/layer/link/LinkOMGraphicList.java,v $// $RCSfile: LinkOMGraphicList.java,v $// $Revision: 1.5.2.1 $// $Date: 2004/10/14 18:27:08 $// $Author: dietrick $// // **********************************************************************package com.bbn.openmap.layer.link;import com.bbn.openmap.omGraphics.*;import com.bbn.openmap.util.Debug;import com.bbn.openmap.proj.Projection;import java.awt.Graphics;import java.util.HashMap;import java.util.ListIterator;/** * This class extends the OMGraphicList by allowing searches on the * AppObject contained by the OMGraphics on the list. The AppObject is * where the LinkGraphics store the graphic ID as defined by the * server. It also returns indexes from searches instead of the * graphic. This allows for deletions, replacements and graphic * location movement from within the list. */public class LinkOMGraphicList extends OMGraphicList implements        LinkPropertiesConstants {    private HashMap hash = new HashMap(541); // Why 541? Hmm, don't                                             // know.    protected Projection currentProjection = null;    /**     * Construct an OMGraphicList.     */    public LinkOMGraphicList() {        super(10);    };    /**     * Construct an OMGraphicList with an initial capacity.     *      * @param initialCapacity the initial capacity of the list     */    public LinkOMGraphicList(int initialCapacity) {        super(initialCapacity);    };    public void setProjection(Projection proj) {        currentProjection = proj;    }    public Projection getProjection() {        return currentProjection;    }    /**     * Check whether the list needs to be regenerated, considering the     * projection that the OMGraphics were projected with when the     * list was read. The projection equality projection is lazy, just     * checks objects.     */    public boolean getNeedToRegenerate(Projection proj) {        return super.getNeedToRegenerate() || currentProjection != proj;    }    /**     * Add an OMGraphic to the GraphicList. The OMGraphic must not be     * null.     *      * @param g the non-null OMGraphic to add     * @exception IllegalArgumentException if OMGraphic is null     */    public synchronized void _add(OMGeometry g) {        super._add(g);        String id = ((LinkProperties) g.getAppObject()).getProperty(LPC_GRAPHICID);        if (Debug.debugging("linkdetail")) {            Debug.output("LinkOMGraphicList: Adding graphic, id(" + id + ")");        }        if (id != null) {            hash.put(id.intern(), g);        }    }    /**     * Remove the graphic at a location in the list.     *      * @param location the OMGraphic object to remove.     * @return true if graphic was on the list, false if otherwise.     */    protected synchronized Object _remove(int location) {        Object ret = super._remove(location);        if (ret != null) {            String id = ((LinkProperties) ((OMGeometry) ret).getAppObject()).getProperty(LPC_GRAPHICID);            if (id != null) {                hash.remove(id.intern());                if (Debug.debugging("link")) {                    Debug.output("LinkOMGraphicList: Removing graphic " + id);                }            }        }        return ret;    }    /**     * Remove the graphic. If this list is not vague, it will also ask     * sub-OMGraphicLists to remove it if the geometry isn't found on     * this OMGraphicList.     *      * @param geometry the OMGeometry object to remove.     * @return true if geometry was on the list, false if otherwise.     */    protected synchronized boolean _remove(OMGeometry geometry) {        boolean ret = super._remove(geometry);        if (ret != false) {            String id = ((LinkProperties) geometry.getAppObject()).getProperty(LPC_GRAPHICID);            hash.remove(id.intern());            if (Debug.debugging("link")) {                Debug.output("LinkOMGraphicList: Removing graphic " + id);            }        }        return ret;    }    /**     * Set the graphic at the specified location. The OMGraphic must     * not be null, the AppObject in the OMGraphic must be null or a     * LinkProperties object. This method is extended from     * OMGraphicList so the link id is added to the hashtable for     * faster searching.     *      * @param graphic OMGraphic     * @param index index of the OMGraphic to return     * @exception ArrayIndexOutOfBoundsException if index is     *            out-of-bounds     */    public synchronized void setOMGraphicAt(OMGraphic graphic, int index) {        LinkProperties linkp = null;        try {            linkp = (LinkProperties) graphic.getAppObject();            String id = null;            if (linkp != null) {                id = linkp.getProperty(LPC_GRAPHICID);                if (Debug.debugging("link")) {                    Debug.output("LinkOMGraphicList.setOMGraphicAt(): Updating graphic "                            + id + " at " + index);                }                if (id != null) {                    hash.put(id.intern(), graphic);                }            }        } catch (ClassCastException cce) {            Debug.error("LinkOMGraphicList.setOMGraphicAt(): Updated graphic doesn't have id");        }        super.setOMGraphicAt(graphic, index);    }    /**     * Get the graphic with the graphic ID.     *      * @param gid graphic ID of the wanted graphic.     * @return OMGraphic or null if not found     */    public OMGraphic getOMGraphicWithId(String gid) {        return (OMGraphic) hash.get(gid.intern());    }    /**     * Get the graphic with the graphic ID. Traverse mode doesn't     * matter.     *      * @param gid graphic ID of the wanted graphic.     * @return OMGraphic index or Link.UNKNOWN if not found     */    public int getOMGraphicIndexWithId(String gid) {        OMGraphic graphic = getOMGraphicWithId(gid);        if (graphic != null) {            return super._indexOf(graphic);        } else {            return Link.UNKNOWN;        }    }    /**     * Remove all elements from the graphic list.     */    public synchronized void clear() {        super.clear();        hash.clear();    }    /**     * Renders all the objects in the list a graphics context. This is     * the same as <code>paint()</code> for AWT components. The     * graphics are rendered in the order of traverseMode. Any     * graphics where <code>isVisible()</code> returns false are not     * rendered.     *      * @param gr the AWT Graphics context     */    public synchronized void render(Graphics gr) {        OMGraphic graphic;        ListIterator iterator;        if (traverseMode == FIRST_ADDED_ON_TOP) {            iterator = graphics.listIterator(graphics.size());            while (iterator.hasPrevious()) {                graphic = (OMGraphic) iterator.previous();                if (graphic.isVisible()) {                    Object obj = graphic.getAppObject();                    if (Debug.debugging("linkdetail")                            && obj instanceof LinkProperties) {                        String id = ((LinkProperties) obj).getProperty(LPC_GRAPHICID);                        Debug.output("LinkOMGraphicList: Rendering graphic "                                + id);                    }                    graphic.render(gr);                }            }        } else {            iterator = graphics.listIterator();            while (iterator.hasNext()) {                graphic = (OMGraphic) iterator.next();                if (graphic.isVisible()) {                    Object obj = graphic.getAppObject();                    if (Debug.debugging("linkdetail")                            && obj instanceof LinkProperties) {                        String id = ((LinkProperties) obj).getProperty(LPC_GRAPHICID);                        Debug.output("LinkOMGraphicList: Rendering graphic "                                + id);                    }                    graphic.render(gr);                }            }        }    }}

⌨️ 快捷键说明

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