// ********************************************************************** // // <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/NavigateMenu.java,v $ // $RCSfile: NavigateMenu.java,v $ // $Revision: 1.10 $ // $Date: 2004/10/14 18:05:48 $ // $Author: dietrick $ // // ********************************************************************** package com.bbn.openmap.gui; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JMenu; import javax.swing.JMenuItem; import com.bbn.openmap.MapBean; import com.bbn.openmap.event.ZoomEvent; import com.bbn.openmap.event.ZoomListener; import com.bbn.openmap.event.ZoomSupport; import com.bbn.openmap.gui.menu.CoordsMenuItem; import com.bbn.openmap.gui.menu.ProjectionMenu; import com.bbn.openmap.util.Debug; /** * Provides MenuItems that lets users control the projection. This * includes providing a means to call up the Coordinate Window to let * users enter coordinates to center the map, a projection choice * menu, and zooming choices. */ public class NavigateMenu extends AbstractOpenMapMenu implements ActionListener { public static final String defaultText = "Navigate"; public static final String defaultMnemonic = "N"; protected ZoomSupport zoomSupport = new ZoomSupport(this); public final static transient String zoomIn2Cmd = "zoomIn2Cmd"; public final static transient String zoomIn4Cmd = "zoomIn4Cmd"; public final static transient String zoomOut2Cmd = "zoomOut2Cmd"; public final static transient String zoomOut4Cmd = "zoomOut4Cmd"; /** * This constructor automatically configures the Menu to have * choices to bring up the Coordinates Window, the projection * choice menu, and the zoom menus. */ public NavigateMenu() { super(); setText(i18n.get(this, "navigate", defaultText)); // setMnemonic(i18n.get(this, "navigate", I18n.MNEMONIC, defaultMnemonic) // .charAt(0)); add(new CoordsMenuItem()); JMenuItem mi; JMenu submenu = (JMenu) add(new JMenu(i18n.get(this, "zoomIn", "Zoom In"))); mi = (JMenuItem) submenu.add(new JMenuItem(i18n.get(this, "zoomIn2X", "2X"))); mi.setActionCommand(zoomIn2Cmd); mi.addActionListener(this); mi = (JMenuItem) submenu.add(new JMenuItem(i18n.get(this, "zoomIn4X", "4X"))); mi.setActionCommand(zoomIn4Cmd); mi.addActionListener(this); submenu = (JMenu) add(new JMenu(i18n.get(this, "zoomOut", "Zoom Out"))); mi = (JMenuItem) submenu.add(new JMenuItem(i18n.get(this, "zoomOut2X", "2X"))); mi.setActionCommand(zoomOut2Cmd); mi.addActionListener(this); mi = (JMenuItem) submenu.add(new JMenuItem(i18n.get(this, "zoomOut4X", "4X"))); mi.setActionCommand(zoomOut4Cmd); mi.addActionListener(this); add(new ProjectionMenu()); } /** * ActionListener interface, lets the Menu act on the actions of * the MenuItems. */ public void actionPerformed(ActionEvent ae) { String command = ae.getActionCommand(); Debug.message("navigatemenu", "NavigateMenu.actionPerformed(): " + command); if (command.equals(zoomIn2Cmd)) { fireZoom(ZoomEvent.RELATIVE, 0.5f); } else if (command.equals(zoomIn4Cmd)) { fireZoom(ZoomEvent.RELATIVE, 0.25f); } else if (command.equals(zoomOut2Cmd)) { fireZoom(ZoomEvent.RELATIVE, 2.0f); } else if (command.equals(zoomOut4Cmd)) { fireZoom(ZoomEvent.RELATIVE, 4.0f); } } /*---------------------------------------------------------------------- * Zoom Support - for broadcasting zoom events *---------------------------------------------------------------------- */ /** * */ public synchronized void addZoomListener(ZoomListener l) { zoomSupport.add(l); } /** * */ public synchronized void removeZoomListener(ZoomListener l) { zoomSupport.remove(l); } /** * */ public void fireZoom(int zoomType, float amount) { zoomSupport.fireZoom(zoomType, amount); } public void findAndInit(Object someObj) { super.findAndInit(someObj); if (someObj instanceof MapBean) { addZoomListener((MapBean) someObj); } } public void findAndUndo(Object someObj) { super.findAndUndo(someObj); if (someObj instanceof MapBean) { removeZoomListener((MapBean) someObj); } } }