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

📄 linklayer.java

📁 openmap java写的开源数字地图程序. 用applet实现,可以像google map 那样放大缩小地图.
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
                    Debug.message("link",                            "LinkLayer.handleLinkActionList: trying to add null OMGraphic, id: "                                    + gu.id);                }            } else if (gu.id != null) {                reactionGraphicIndex = graphics.getOMGraphicIndexWithId(gu.id);                if (reactionGraphicIndex == Link.UNKNOWN) {                    // Must be an addition/new graphic                    if (LinkUtil.isMask(gu.action, UPDATE_ADD_GRAPHIC_MASK)) {                        // If gu.graphic is null, this will throw an                        // exception                        if (Debug.debugging("link")) {                            Debug.output("LinkLayer.handleLinkActionList: adding graphic "                                    + gu.id);                        }                        if (gug != null) {                            gug.generate(proj);                            graphics.add(gug);                            reactionGraphic = gug;                        } else {                            Debug.message("link",                                    "LinkLayer.handleLinkActionList: trying to add null OMGraphic, id: "                                            + gu.id);                        }                    } else {                        gu.action = 0; // No action...                        Debug.error("LinkLayer.handleLinkActionList: Gesture Response on an unknown graphic.");                    }                } else if (LinkUtil.isMask(gu.action, UPDATE_GRAPHIC_MASK)) {                    if (gug != null) {                        gug.generate(proj);                        reactionGraphic = gug;                    } else {                        Debug.message("link",                                "LinkLayer.handleLinkActionList: trying to update null OMGraphic, id: "                                        + gu.id);                    }                } else {                    reactionGraphic = graphics.getOMGraphicWithId(gu.id);                }            } else {                Debug.error("LinkLayer.handleLinkActionList:  null ID for graphic");            }            // Now, perform the appropriate action on the graphic...            // Delete a graphic... If you do this, nothing else            // gets done on the graphic...            if (LinkUtil.isMask(gu.action, MODIFY_DELETE_GRAPHIC_MASK)) {                Debug.message("link", "LinkLayer: deleting graphic");                graphics.removeOMGraphicAt(reactionGraphicIndex);            } else {                // For properties updating, or graphic replacement                if (LinkUtil.isMask(gu.action, UPDATE_GRAPHIC_MASK)) {                    Debug.message("link", "LinkLayer: updating graphic");                    graphics.setOMGraphicAt(reactionGraphic,                            reactionGraphicIndex);                }                // For graphic selection and deselection                if (LinkUtil.isMask(gu.action, MODIFY_SELECT_GRAPHIC_MASK)) {                    Debug.message("link", "LinkLayer: selecting graphic");                    reactionGraphic.select();                } else if (LinkUtil.isMask(gu.action,                        MODIFY_DESELECT_GRAPHIC_MASK)) {                    Debug.message("link", "LinkLayer: deselecting graphic");                    reactionGraphic.deselect();                }                // Now, raising or lowering the graphic...                if (LinkUtil.isMask(gu.action, MODIFY_RAISE_GRAPHIC_MASK)) {                    Debug.message("link", "LinkLayer: raising graphic");                    graphics.moveIndexedToTop(reactionGraphicIndex);                } else if (LinkUtil.isMask(gu.action, MODIFY_LOWER_GRAPHIC_MASK)) {                    Debug.message("link", "LinkLayer: lowering graphic");                    graphics.moveIndexedToBottom(reactionGraphicIndex);                }            } // else if not deleting it...        } // while        if (lal.getNeedMapUpdate()) {            updateMap(lal.getMapProperties());            lal.setNeedMapUpdate(false);            needRepaint = false;        }        if (needRepaint) {            repaint();        }    }    public void handleLinkActionRequest(LinkActionRequest lar) {        Debug.message("link", "LinkLayer.handleLinkActionRequest()");        if (lar != null) {            setGestureDescriptor(lar.getDescriptor());        }    }    /**     * Looks at a properties object, and checks for the pre-defined     * messaging attributes. Then, the information delegator is called     * to handle their display.     *      * @param props LinkProperties containing messages.     */    public void handleMessages(LinkProperties props) {        String value = props.getProperty(LPC_INFO);        if (value != null)            fireRequestInfoLine(value);        value = props.getProperty(LPC_URL);        if (value != null) {            fireRequestURL(value);        } else {            value = props.getProperty(LPC_HTML);            if (value != null)                fireRequestBrowserContent(value);        }        value = props.getProperty(LPC_MESSAGE);        if (value != null)            fireRequestMessage(value);    }    //----------------------------------------------------------------------    // MapMouseListener interface implementation    //----------------------------------------------------------------------    /** Return the MapMouseListener for the layer. */    public synchronized MapMouseListener getMapMouseListener() {        return this;    }    /**     * Return the strings identifying the Mouse Modes that the     * MapMouseListener wants to receive gestures from.     */    public String[] getMouseModeServiceList() {        String[] services = { SelectMouseMode.modeID };        return services;    }    public boolean mousePressed(MouseEvent e) {        if (LinkUtil.isMask(getGestureDescriptor(), MOUSE_PRESSED_MASK)) {            return handleGesture(MOUSE_PRESSED_MASK, e);        }        return false;    }    public boolean mouseReleased(MouseEvent e) {        if (LinkUtil.isMask(getGestureDescriptor(), MOUSE_RELEASED_MASK)) {            return handleGesture(MOUSE_RELEASED_MASK, e);        }        return false;    }    public boolean mouseClicked(MouseEvent e) {        if (LinkUtil.isMask(getGestureDescriptor(), MOUSE_CLICKED_MASK)) {            return handleGesture(MOUSE_CLICKED_MASK, e);        }        return false;    }    public void mouseEntered(MouseEvent e) {        if (LinkUtil.isMask(getGestureDescriptor(), MOUSE_ENTERED_MASK)) {            handleGesture(MOUSE_ENTERED_MASK, e);        }    }    public void mouseExited(MouseEvent e) {        if (LinkUtil.isMask(getGestureDescriptor(), MOUSE_EXITED_MASK)) {            handleGesture(MOUSE_EXITED_MASK, e);        }    }    public boolean mouseDragged(MouseEvent e) {        if (LinkUtil.isMask(getGestureDescriptor(), MOUSE_DRAGGED_MASK)) {            return handleGesture(MOUSE_DRAGGED_MASK, e);        }        return false;    }    public boolean mouseMoved(MouseEvent e) {        if (LinkUtil.isMask(getGestureDescriptor(), MOUSE_MOVED_MASK)) {            return handleGesture(MOUSE_MOVED_MASK, e);        }        return false;    }    public void mouseMoved() {        if (LinkUtil.isMask(getGestureDescriptor(), MOUSE_MOVED_MASK)) {            handleGesture(MOUSE_MOVED_MASK, null);        }    }    /**     * Given a graphic and the type of gesture caught, react to it     * based on the properties object located in the Graphic. The     * default behavior here is that if the gesture is a MouseMoved,     * select the graphic, and if there is an info line, show it. If     * the gesture is a MouseRelease, display the info line, and also     * check the following, in this order: url and then html. If there     * is a message property, the message is sent in a pop-up window.     *      * @param graphic the graphic to check out.     * @param descriptor the type of gesture.     * @param e mouse event, to get location.     * @return true if the server still needs to be told - per     *         descriptor bit 11.     */    protected boolean graphicGestureReaction(OMGraphic graphic, int descriptor,                                             MouseEvent e) {        LinkProperties props = (LinkProperties) graphic.getAppObject();        // Mouse clicked        boolean mc = LinkUtil.isMask(descriptor, MOUSE_CLICKED_MASK);        // Mouse released        boolean mr = LinkUtil.isMask(descriptor, MOUSE_RELEASED_MASK);        // Mouse moved        boolean mm = LinkUtil.isMask(descriptor, MOUSE_MOVED_MASK);        // server inform        boolean si = LinkUtil.isMask(getGestureDescriptor(),                SERVER_NOTIFICATION_MASK);        boolean ret = true;        if (mr || mc) {            String url = props.getProperty(LPC_URL);            if (url != null) {                if (Debug.debugging("link")) {                    System.out.println("LinkLayer:graphicGestureReaction: displaying url: "                            + url);                }                fireRequestURL(url);                ret = si;            } else {                String html = props.getProperty(LPC_HTML);                if (html != null) {                    fireRequestBrowserContent(html);                    ret = si;                }            }            // Just reuse url instead of declaring another string            // object            url = props.getProperty(LPC_MESSAGE);            if (url != null) {                fireRequestMessage(url);                ret = si;            }        }        if (mr || mm || mc) {            String info = props.getProperty(LPC_INFO);            if (info != null) {                if (Debug.debugging("link")) {                    System.out.println("LinkLayer:graphicGestureReaction: displaying info line: "                            + info);                }                fireRequestInfoLine(info);                ret = si;            }        }        return ret;    }    /**     * Send the query, act on the response, and tell the caller if the     * gesture was consumed. The Link actually gets a copy of the     * layer to handle communication with the InformationDelegator.     * The GraphicUpdates are handled in this method - the graphics     * list is modified.     *      * @param descriptor a masked integer telling the type of gesture.     * @param e the MouseEvent.     * @return true if the event was consumed.     */    protected boolean handleGesture(int descriptor, MouseEvent e) {        Debug.message("link", "LinkLayer: handleGesture:");        try {            LinkOMGraphicList graphics = getGraphicList(); // Get old            // list            if (graphics == null) {                // Nothing to search on - this condition occurs when                // the layer is already busy getting new graphics as a                // result of a changed projection.                Debug.message("link", "LinkLayer: null graphics list.");                return false;            }            if (e == null) {                graphics.deselectAll();                return false;            }            // Find out if a graphic is closeby...//            int gesGraphicIndex = graphics.findIndexOfClosest(e.getX(),//                    e.getY(),//                    distanceLimit);            // We need to do this to deselect everything else too.            OMGraphic gesGraphic = graphics.selectClosest(e.getX(),                    e.getY(),                    distanceLimit);            String id = null;            // If there was a graphic, set the mask to indicate that,            // and keep track of the graphic and the list index of the            // graphic for the response. If a graphic modify command            // comes back without an ID, then we'll assume the server            // was refering to this graphic.            if (gesGraphic != null) {                boolean tellServer = graphicGestureReaction(gesGraphic,                        descriptor,

⌨️ 快捷键说明

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