// **********************************************************************
//
// <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/omGraphics/editable/CircleSelectedState.java,v
// $
// $RCSfile: CircleSelectedState.java,v $
// $Revision: 1.6 $
// $Date: 2005/08/10 22:27:16 $
// $Author: dietrick $
//
// **********************************************************************
package com.bbn.openmap.omGraphics.editable;
import java.awt.event.MouseEvent;
import com.bbn.openmap.omGraphics.EditableOMCircle;
import com.bbn.openmap.omGraphics.GrabPoint;
import com.bbn.openmap.omGraphics.OMGraphic;
import com.bbn.openmap.omGraphics.event.EOMGEvent;
import com.bbn.openmap.util.Debug;
public class CircleSelectedState
extends GraphicSelectedState {
public CircleSelectedState(EditableOMCircle eomc) {
super(eomc);
}
/**
* In this state, we need to change states only if the graphic, or anyplace
* off the graphic is pressed down on. If the end points are clicked on,
* then we do nothing except set the moving point and go to edit mode.
*/
public boolean mousePressed(MouseEvent e) {
Debug.message("eomg", "GraphicStateMachine|selected state|mousePressed");
GrabPoint mp = graphic.getMovingPoint(e);
int renderType = graphic.getGraphic().getRenderType();
// If the latlon circle is so small that all you can see is the center
// grab point, assume that we're grabbing the edge. We can do this by
// nulling out the moving point, if it's the same as the center grab
// point.
if (renderType == OMGraphic.RENDERTYPE_LATLON && mp == graphic.getGrabPoints()[EditableOMCircle.CENTER_POINT_INDEX]
&& graphic.isMouseEventTouchingTheEdge(e)) {
mp = null;
}
// If no grab point was selected, need to check if the graphic itself
// was clicked on. If so, then just go to selected mode.
if (mp == null) {
if ((renderType != OMGraphic.RENDERTYPE_LATLON && graphic.isMouseEventTouching(e))
|| graphic.isMouseEventTouchingTheEdge(e)) {
if (graphic.getCanGrabGraphic()) {
// No point was selected, but the graphic was. Get
// ready
// to move the graphic.
Debug.message("eomg", "GraphicStateMachine|selected state|mousePressed - graphic held");
graphic.getStateMachine().setEdit();
// This is the only difference in this method from
// the
// GraphicSelectedState.mousePressed method.
graphic.fireEvent(EOMGCursors.EDIT, "", EOMGEvent.EOMG_EDIT);
// //////
graphic.move(e);
}
} else {
graphic.fireEvent(EOMGCursors.DEFAULT, "", EOMGEvent.EOMG_UNCHANGED);
graphic.redraw(e, true);
}
} else {
// else, if the moving point is set, go to edit mode. If
// the mouse is released, we'll consider ourselves
// unselected agin.
graphic.getStateMachine().setEdit();
graphic.fireEvent(EOMGCursors.EDIT, "", EOMGEvent.EOMG_EDIT);
}
return getMapMouseListenerResponse();
}
public boolean mouseMoved(MouseEvent e) {
Debug.message("eomgdetail", "CircleStateMachine|selected state|mouseMoved");
GrabPoint mp = graphic.getMovingPoint(e);
if (mp == null) {
if (graphic.getCanGrabGraphic() && graphic.isMouseEventTouchingTheEdge(e)) {
graphic.fireEvent(EOMGCursors.EDIT, i18n.get(CircleSelectedState.class, "Click_and_Drag_edge_to_resize.",
"Click and Drag edge to resize."), EOMGEvent.EOMG_UNCHANGED);
} else {
graphic.fireEvent(EOMGCursors.DEFAULT, "", EOMGEvent.EOMG_UNCHANGED);
}
} else {
graphic.fireEvent(EOMGCursors.EDIT, i18n.get(CircleSelectedState.class, "Click_and_Drag_to_change_the_graphic.",
"Click and Drag to change the graphic."), EOMGEvent.EOMG_UNCHANGED);
}
return false;
}
}