/* * CombinedTool.java * * Created on June 11, 2006, 1:54 PM * */ package ika.map.tools; import ika.geo.RenderParams; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.awt.geom.*; import java.util.*; /** * A combination of various map tools. * @author jenny */ public class CombinedTool extends MapTool{ ArrayList tools = new ArrayList(); String name = ""; /** Creates a new instance of CombinedTool */ public CombinedTool(ika.gui.MapComponent mapComponent, String name) { super(mapComponent); this.name = name; } public void addMapTool(CombinableTool mapTool) { this.tools.add(mapTool); } public void deactivate() { try { super.deactivate(); } finally { Iterator iterator = tools.iterator(); while (iterator.hasNext()) { ((MapTool)iterator.next()).deactivate(); } } } public void pause(){ Iterator iterator = tools.iterator(); while (iterator.hasNext()) { ((MapTool)iterator.next()).pause(); } } public void resume(){ Iterator iterator = tools.iterator(); while (iterator.hasNext()) { ((MapTool)iterator.next()).resume(); } } public void mouseClicked(Point2D.Double point, MouseEvent evt) { Iterator iterator = tools.iterator(); while (iterator.hasNext()) { ((MapTool)iterator.next()).mouseClicked(point, evt); } } public void mouseDown(Point2D.Double point, MouseEvent evt) { Iterator iterator = tools.iterator(); while (iterator.hasNext()) { ((MapTool)iterator.next()).mouseDown(point, evt); } } public void mouseMoved(Point2D.Double point, MouseEvent evt) { Iterator iterator = tools.iterator(); while (iterator.hasNext()) { MapTool tool = ((MapTool)iterator.next()); tool.mouseMoved(point, evt); } // adjust the cursor iterator = tools.iterator(); boolean cursorAdjusted = false; while (iterator.hasNext()) { CombinableTool tool = ((CombinableTool)iterator.next()); if (cursorAdjusted |= tool.adjustCursor(point)) break; } if (!cursorAdjusted) this.setDefaultCursor(); } public void mouseEntered(Point2D.Double point, MouseEvent evt) { Iterator iterator = tools.iterator(); while (iterator.hasNext()) { ((MapTool)iterator.next()).mouseEntered(point, evt); } } public void mouseExited(Point2D.Double point, MouseEvent evt) { Iterator iterator = tools.iterator(); while (iterator.hasNext()) { ((MapTool)iterator.next()).mouseExited(point, evt); } } public void startDrag(Point2D.Double point, MouseEvent evt) { Iterator iterator = tools.iterator(); while (iterator.hasNext()) { MapTool mapTool = (MapTool)iterator.next(); mapTool.startDrag(point, evt); if (mapTool.isDragging()) break; } } public void updateDrag(Point2D.Double point, MouseEvent evt) { Iterator iterator = tools.iterator(); while (iterator.hasNext()) { MapTool mapTool = (MapTool)iterator.next(); if (mapTool.isDragging()) { mapTool.updateDrag(point, evt); break; } } } public void endDrag(Point2D.Double point, MouseEvent evt) { Iterator iterator = tools.iterator(); while (iterator.hasNext()) { MapTool mapTool = (MapTool)iterator.next(); if (mapTool.isDragging()) { mapTool.endDrag(point, evt); break; } } } /** * Treat key events. * The event can be consumed (return true) or be delegated to other * listeners (return false). * @param keyEvent The new key event. * @return True if the key event has been consumed, false otherwise. */ public boolean keyEvent(KeyEvent keyEvent) { Iterator iterator = tools.iterator(); while (iterator.hasNext()) { final MapTool mapTool = (MapTool)iterator.next(); final boolean consumed = mapTool.keyEvent(keyEvent); if (consumed) return true; } return false; } public void draw(RenderParams rp) { Iterator iterator = tools.iterator(); while (iterator.hasNext()) { ((MapTool)iterator.next()).draw(rp); } } public boolean drawBackground(java.awt.Graphics2D g2d) { Iterator iterator = tools.iterator(); while (iterator.hasNext()) { MapTool mapTool = (MapTool)iterator.next(); if (mapTool.drawBackground(g2d)) return true; } return false; } }