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

📄 interactionlayer.java

📁 OpenMap是一个基于JavaBeansTM的开发工具包。利用OpenMap你就能够快速构建用于访问legacy数据库的应用程序与applets。OpenMap提供了允许用户查看和操作地理空间信息的
💻 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/learn/InteractionLayer.java,v $// $RCSfile: InteractionLayer.java,v $// $Revision: 1.1.2.2 $// $Date: 2007/02/26 16:57:12 $// $Author: dietrick $// // **********************************************************************package com.bbn.openmap.layer.learn;import java.awt.BasicStroke;import java.awt.Color;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import java.util.List;import javax.swing.JMenuItem;import com.bbn.openmap.event.MapMouseEvent;import com.bbn.openmap.layer.OMGraphicHandlerLayer;import com.bbn.openmap.omGraphics.OMGraphic;import com.bbn.openmap.omGraphics.OMGraphicConstants;import com.bbn.openmap.omGraphics.OMGraphicList;import com.bbn.openmap.omGraphics.OMLine;import com.bbn.openmap.omGraphics.OMPoint;import com.bbn.openmap.omGraphics.OMTextLabeler;/** * This layer demonstrates how to interact with your OMGraphics on the map, * getting them to change appearance with mouse events and provide additional * information about themselves. This layer builds on the example demonstrated * in the BasicDisplayLayer, which involved creating OMGraphics for the map. For * any of the methods listed below that are designed to assist with responding * to mouse events, simply return null from them if you want a no-op, which is * the default implementation in the OMGraphicHandlerLayer (so don't even * override them). *  * @see OMGraphicHandlerLayer#isHighlightable * @see OMGraphicHandlerLayer#highlight * @see OMGraphicHandlerLayer#unhighlight * @see OMGraphicHandlerLayer#getInfoText * @see OMGraphicHandlerLayer#getToolTipText *  * @see OMGraphicHandlerLayer#isSelectable * @see OMGraphicHandlerLayer#select * @see OMGraphicHandlerLayer#deselect * @see OMGraphicHandlerLayer#getItemsForMapMenu * @see OMGraphicHandlerLayer#getItemsForOMGraphicMenu *  * @see OMGraphicHandlerLayer#receivesMapEvents * @see OMGraphicHandlerLayer#mouseOver(MapMouseEvent) * @see OMGraphicHandlerLayer#leftClick */public class InteractionLayer extends BasicLayer {    public InteractionLayer() {        // Sets the name of the layer that is visible in the GUI. Can also be        // set with properties with the 'prettyName' property.        setName("Interaction Layer");        // This is how to set the ProjectionChangePolicy, which        // dictates how the layer behaves when a new projection is        // received. The StandardPCPolicy is the default policy and you don't        // need to set it, this method call is here to illustrate where and how        // you would make that call with a different policy.        setProjectionChangePolicy(new com.bbn.openmap.layer.policy.StandardPCPolicy(this, true));        // Making the setting so this layer receives events from the        // SelectMouseMode, which has a modeID of "Gestures". Other        // IDs can be added as needed. You need to tell the layer which        // MouseMode it should listen to, so it can tell the MouseModes to send        // events to it.        setMouseModeIDsForEvents(new String[] { "Gestures" });    }    /**     * Called from the prepare() method if the layer discovers that its     * OMGraphicList is null. This method is being overridden so that TOOLTIPS     * can be set as attributes on the OMGraphics, and retrieved later in the     * gesturing queries.     *      * @return new OMGraphicList with OMGraphics that you always want to display     *         and reproject as necessary.     *      * @see BasicLayer#prepare     */    public OMGraphicList init() {        // This layer keeps a pointer to an OMGraphicList that it uses        // for painting. It's initially set to null, which is used as        // a flag in prepare() to signal that the OMGraphcs need to be        // created. The list returned from prepare() gets set in the        // layer.        // This layer uses the StandardPCPolicy for new        // projections, which keeps the list intact and simply calls        // generate() on it with the new projection, and repaint()        // which calls paint().        /*         * Note that the OMGraphics have their select paint set in order to         * react to hightlight calls, and an OMGraphicConstants.TOOLTIP         * attribute set to provide tooltip text when needed.         */        OMGraphicList omList = new OMGraphicList();        // Add an OMLine        OMLine line = new OMLine(40f, -75f, 42f, -70f, OMGraphic.LINETYPE_GREATCIRCLE);        line.setStroke(new BasicStroke(2));        line.putAttribute(OMGraphicConstants.LABEL,                new OMTextLabeler("Line Label"));        line.setLinePaint(Color.red);        line.setSelectPaint(Color.blue);        line.putAttribute(OMGraphicConstants.TOOLTIP, "This is an OMLine.");        omList.add(line);        // Add a list of OMPoints.        OMGraphicList pointList = new OMGraphicList();        for (int i = 0; i < 100; i++) {            OMPoint point = new OMPoint((float) (Math.random() * 89f), (float) (Math.random() * -179f), 3);            point.putAttribute(OMGraphicConstants.TOOLTIP, "This is OMPoint #"                    + i);            point.setLinePaint(Color.green);            point.setSelectPaint(Color.yellow);            pointList.add(point);        }        omList.add(pointList);        return omList;    }    /**     * Query that an OMGraphic can be highlighted when the mouse moves over it.     * If the answer is true, then highlight with this OMGraphics will be     * called, and unhighlight will be called with the mouse is moved off of it.     *      * @see OMGraphicHandlerLayer#highlight     * @see OMGraphicHandlerLayer#unhighlight     */    public boolean isHighlightable(OMGraphic omg) {        return true;    }    /**     * Query that an OMGraphic is selectable. Examples of handing selection are     * in the EditingLayer. The default OMGraphicHandlerLayer behavior is to add     * the OMGraphic to an OMGraphicList called selectedList. If you aren't     * going to be doing anything in particular with the selection, then return     * false here to reduce the workload of the layer.     *      * @see OMGraphicHandlerLayer#select     * @see OMGraphicHandlerLayer#deselect     */    public boolean isSelectable(OMGraphic omg) {        return true;    }    /**     * Designate a list of OMGraphics as selected.     *      * @see OMGraphicHandlerLayer#select     */    public void select(OMGraphicList list) {        super.select(list);        // selectedList is a member variable held by OMGraphicHandlerLayer.        if (selectedList != null) {            System.out.println("Current selection list: " + selectedList.getDescription());        }    }    /**     * Designate a list of OMGraphics as deselected.     *      * @see OMGraphicHandlerLayer#deselect     */    public void deselect(OMGraphicList list) {        super.deselect(list);        // selectedList is a member variable held by OMGraphicHandlerLayer.        if (selectedList != null) {            System.out.println("Current selection list: " + selectedList.getDescription());        }    }    /**     * Query for what text should be placed over the information bar when the     * mouse is over a particular OMGraphic.     */    public String getInfoText(OMGraphic omg) {        String classname = omg.getClass().getName();        return "Interaction Layer OMGraphic - "                + classname.substring(classname.lastIndexOf('.') + 1);    }    /**     * Query for what tooltip to display for an OMGraphic when the mouse is over     * it.     */    public String getToolTipTextFor(OMGraphic omg) {        Object tt = omg.getAttribute(OMGraphic.TOOLTIP);        if (tt instanceof String) {            return (String) tt;        } else {            return null;        }    }    /**     * This method is called when a right mouse click is detected over the map     * and not over an OMGraphic. You can provide a List of components to be     * displayed in a popup menu. You have to do the wiring for making the list     * components do something, though.     */    public List getItemsForMapMenu(MapMouseEvent me) {        List l = new ArrayList();        JMenuItem when = new JMenuItem("When");        when.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent ae) {                fireRequestMessage("When was chosen.");            }        });        JMenuItem where = new JMenuItem("Where");        where.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent ae) {                fireRequestMessage("Where was chosen.");            }        });        JMenuItem how = new JMenuItem("How");        how.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent ae) {                fireRequestMessage("How was chosen.");            }        });        l.add(when);        l.add(where);        l.add(how);        return l;    }    /**     * This method is called when a right mouse click is detected over an     * OMGraphic. You can provide a List of components to be displayed in a     * popup menu. You have to do the wiring for making the list components do     * something, though.     */    public List getItemsForOMGraphicMenu(OMGraphic omg) {        final OMGraphic chosen = omg;        List l = new ArrayList();        JMenuItem which = new JMenuItem("Which");        which.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent ae) {                String classname = chosen.getClass().getName();                fireRequestMessage("Which was chosen over "                        + classname.substring(classname.lastIndexOf('.') + 1));            }        });        JMenuItem why = new JMenuItem("Why");        why.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent ae) {                String classname = chosen.getClass().getName();                fireRequestMessage("Why was chosen over "                        + classname.substring(classname.lastIndexOf('.') + 1));            }        });        l.add(which);        l.add(why);        return l;    }}

⌨️ 快捷键说明

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