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

📄 omgraphicdeletetool.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/gui/OMGraphicDeleteTool.java,v $// $RCSfile: OMGraphicDeleteTool.java,v $// $Revision: 1.5.2.2 $// $Date: 2006/01/18 17:51:03 $// $Author: dietrick $// // **********************************************************************package com.bbn.openmap.gui;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.util.Hashtable;import java.util.Iterator;import java.util.Vector;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JToolBar;import com.bbn.openmap.I18n;import com.bbn.openmap.MapBean;import com.bbn.openmap.omGraphics.OMAction;import com.bbn.openmap.omGraphics.OMGraphic;import com.bbn.openmap.omGraphics.OMGraphicConstants;import com.bbn.openmap.omGraphics.event.SelectionEvent;import com.bbn.openmap.omGraphics.event.SelectionListener;import com.bbn.openmap.omGraphics.event.SelectionProvider;import com.bbn.openmap.tools.drawing.DrawingToolRequestor;import com.bbn.openmap.tools.drawing.OMDrawingTool;import com.bbn.openmap.util.Debug;/** * The OMGraphicDeleteTool is a Swing component that contains a button that * listens for notifications that tell it that an OMGraphic has been 'selected', * and provides the capability to delete that OMGraphic from the component that * manages it. The OMGraphicDeleteTool gathers SelectionEvents, which provide it * information about the OMGraphic and the DrawingToolRequestor that can delete * it from the map. If multiple events are received, pressing the button will * cause notifications to be sent to all the DrawingToolRequestors to delete all * the OMGraphics that are currently selected. This component is also a * com.bbn.openmap.gui.Tool, so if the ToolPanel sees it in the MapHandler, the * button will automatically be added to it. * <p> * To add the button to the OpenMap application, it just needs to be added to * the openmap.components property in the openmap.properties file. */public class OMGraphicDeleteTool extends OMToolComponent implements        SelectionListener, ActionListener, KeyListener {    protected JButton deleteButton = null;    protected String defaultKey = "omgraphicdeletetool";    protected Hashtable deleteList;    protected Vector requestors;    protected JToolBar jToolBar;    public OMGraphicDeleteTool() {        super();        setKey(defaultKey);        Debug.message("deletebutton", "OMGTL()");        setLayout(new java.awt.GridLayout());        jToolBar = new JToolBar();        jToolBar.setFloatable(false);        deleteList = new Hashtable();        requestors = new Vector();        java.net.URL url = this.getClass().getResource("delete.gif");        if (url != null) {            ImageIcon icon = new ImageIcon(url);            deleteButton = new JButton(icon);        } else {            deleteButton = new JButton("Delete");        }        deleteButton.addActionListener(this);        // deleteButton.setToolTipText("Delete selected map graphic");        deleteButton.setToolTipText(i18n.get(OMGraphicDeleteTool.class,                "deleteButton",                I18n.TOOLTIP,                "Delete selected map graphic"));        deleteButton.setEnabled(false);        jToolBar.add(deleteButton);        add(jToolBar);    }    public void keyPressed(KeyEvent e) {}    public void keyReleased(KeyEvent e) {        if (e.getKeyCode() == KeyEvent.VK_BACK_SPACE) {            deleteSelected();        }    }    public void keyTyped(KeyEvent e) {}    public void actionPerformed(ActionEvent ae) {        Debug.message("deletebutton", "OMGDT.actionPerformed()");        deleteSelected();    }    public void deleteSelected() {        Iterator it = deleteList.values().iterator();        while (it.hasNext()) {            SelectionEvent item = (SelectionEvent) it.next();            Object itemSource = item.getSource();            // Too specific?            if (itemSource instanceof OMDrawingTool) {                // This should notify the requestor...                ((OMDrawingTool) itemSource).deactivate(OMGraphicConstants.DELETE_GRAPHIC_MASK);            } else {                if (item != null) { // is this check necessary? I                    // doubt it.                    DrawingToolRequestor requestor = item.getRequestor();                    OMGraphic omg = item.getOMGraphic();                    if (requestor != null) {                        requestor.drawingComplete(omg,                                new OMAction(OMGraphicConstants.DELETE_GRAPHIC_MASK));                    } else {                        // if there isn't a requestor specified, tell                        // anyone who will listen.                        Iterator reqs = requestors.iterator();                        while (reqs.hasNext()) {                            ((DrawingToolRequestor) reqs.next()).drawingComplete(omg,                                    new OMAction(OMGraphicConstants.DELETE_GRAPHIC_MASK));                        }                    }                }            }        }        // Should we just clear the list now?        deleteList.clear();        deleteButton.setEnabled(!deleteList.isEmpty());    }    public void selectionNotification(SelectionEvent event) {        if (event.isSelected() && event.getOMGraphic() != null) {            Debug.message("deletebutton",                    "OMGDT.selection notification: adding selected to list.");            deleteList.put(event.getOMGraphic(), event);        } else if (!event.isSelected()) {            Debug.message("deletebutton",                    "OMGDT.selection notification: removing selected from list.");            deleteList.remove(event.getOMGraphic());        } else {            Debug.message("deletebutton",                    "OMGDT.selection notification: omgraphic missing from notification.");        }        deleteButton.setEnabled(!deleteList.isEmpty());    }    // /////////////////////////////////////////////////////////////////////////    // // MapHandlerChild methods to make the tool work with    // // the MapHandler to find any SelectionProviders.    // /////////////////////////////////////////////////////////////////////////    public void findAndInit(Object obj) {        if (obj instanceof SelectionProvider) {            Debug.message("deletebutton",                    "OMGDT.findAndInit() found selection provider");            ((SelectionProvider) obj).addSelectionListener(this);        }        if (obj instanceof DrawingToolRequestor) {            // Keep track of them so if the requestor is not known,            // just            // tell everyone who may be listening to delete the            // OMGraphic in question and let them react accordingly.            // If they don't already have the OMGraphic, they should            // just ignore the request.            requestors.add((DrawingToolRequestor) obj);        }        if (obj instanceof MapBean) {            ((MapBean) obj).addKeyListener(this);        }    }    public void findAndUndo(Object obj) {        if (obj instanceof SelectionProvider) {            ((SelectionProvider) obj).removeSelectionListener(this);        }        if (obj instanceof DrawingToolRequestor) {            requestors.remove((DrawingToolRequestor) obj);        }        if (obj instanceof MapBean) {            ((MapBean) obj).removeKeyListener(this);        }    }}

⌨️ 快捷键说明

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