Package com.bbn.openmap.omGraphics.editable

Source Code of com.bbn.openmap.omGraphics.editable.GraphicSelectedState

// **********************************************************************
//
// <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/GraphicSelectedState.java,v
// $
// $RCSfile: GraphicSelectedState.java,v $
// $Revision: 1.5.2.2 $
// $Date: 2005/08/10 22:45:11 $
// $Author: dietrick $
//
// **********************************************************************

package com.bbn.openmap.omGraphics.editable;

import java.awt.event.MouseEvent;

import com.bbn.openmap.layer.util.stateMachine.State;
import com.bbn.openmap.omGraphics.EditableOMGraphic;
import com.bbn.openmap.omGraphics.GrabPoint;
import com.bbn.openmap.util.Debug;

public class GraphicSelectedState extends State implements EOMGSelectedState {

    protected EditableOMGraphic graphic;

    public GraphicSelectedState(EditableOMGraphic eomg) {
        graphic = eomg;
    }

    /**
     * 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);

        // If the graphic itself was clicked on, then just go to
        // selected
        // mode.
        if (mp == null) {
            float distance = graphic.getGraphic().distance(e.getX(), e.getY());
            if (distance <= 2) {
                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();
                    graphic.fireEvent(EOMGCursors.MOVE, "");
                    graphic.move(e);
                } else {
                    Debug.message("eomg",
                            "GraphicStateMachine|selected state|mousePressed - graphic can't be held");
                }
                graphic.fireEvent(EOMGCursors.DEFAULT, "");
            } else {
                Debug.message("eomg",
                        "GraphicStateMachine|selected state|mousePressed - click off graphic, "
                                + distance + " away");
                graphic.fireEvent(EOMGCursors.DEFAULT, "");
                // Preparing for deactivation, why bother
                // repainting...
                // 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, "");
        }
        return getMapMouseListenerResponse();
    }

    /**
     */
    public boolean mouseReleased(MouseEvent e) {
        Debug.message("eomg",
                "GraphicStateMachine|selected state|mouseReleased");

        GrabPoint mp = graphic.getMovingPoint(e);

        // If the graphic itself was clicked on, then just go to
        // selected
        // mode.
        if (mp == null) {
            if (graphic.getGraphic().distance(e.getX(), e.getY()) <= 2) {
                if (graphic.getCanGrabGraphic()) {

                    graphic.fireEvent(EOMGCursors.EDIT, "", e);
                    graphic.redraw(e, true);
                } else {
                    graphic.fireEvent(EOMGCursors.DEFAULT, "", e);
                }
            } else {
                Debug.message("eomg", " deactivating with fired event");
                // If the graphic isn't picked, then need to
                // deactivate with a deactivation event.
                graphic.fireEvent(new com.bbn.openmap.omGraphics.event.EOMGEvent());
            }
        } else {
            // If the moving point was valid, just stay in selected
            // mode.
            graphic.fireEvent(EOMGCursors.EDIT, "", e);
            graphic.redraw(e, true);
        }

        graphic.setMovingPoint(null);
        return getMapMouseListenerResponse();
    }

    public boolean mouseMoved(MouseEvent e) {
        Debug.message("eomgdetail",
                "GraphicStateMachine|selected state|mouseMoved");

        GrabPoint mp = graphic.getMovingPoint(e);

        // If the graphic itself was clicked on, then just go to
        // selected
        // mode.
        if (mp == null) {
            if (graphic.getGraphic().distance(e.getX(), e.getY()) < 2) {
                graphic.fireEvent(EOMGCursors.EDIT,
                        i18n.get(GraphicSelectedState.class,
                                "Click_and_Drag_to_move_the_graphic.",
                                "Click and Drag to move the graphic."));
            } else {
                graphic.fireEvent(EOMGCursors.DEFAULT, "");
            }
        } else {
            graphic.fireEvent(EOMGCursors.EDIT,
                    i18n.get(GraphicSelectedState.class,
                            "Click_and_Drag_to_change_the_graphic.",
                            "Click and Drag to change the graphic."));
        }
        return false;
    }
}
TOP

Related Classes of com.bbn.openmap.omGraphics.editable.GraphicSelectedState

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.