📄 omgraphicdeletetool.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 + -