Ejemplo n.º 1
0
 /// <summary>
 /// User has decided to cancel the dragging action. Make sure his wishes are followed
 /// </summary>
 public void OnLeftMouseCancel()
 {
     if (activeMouseDragAction == null)
     {
         return;
     }
     activeMouseDragAction.CancelDragging();
     activeMouseDragAction = null;
     _draggingIsActive     = false;
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Mouse has been released, so dragging is ended. Perform the corresponding closing actions
        /// </summary>
        public void OnLeftMouseRelease()
        {
            if (activeMouseDragAction == null)
            {
                return;
            }

            activeMouseDragAction.EndDragging();
            activeMouseDragAction = null;
            OnPathChanged();
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Determine which action would be taken if, subsequently, the left-mouse button will be clicked
        /// </summary>
        /// <param name="wantDragAction">Do we want a drag-action?</param>
        /// <param name="wantClickAction">Do we want a click-action?</param>
        /// <param name="mouseX">The current location of the mouse in x-direction</param>
        /// <param name="mouseY">The current location of the mouse in y-direction</param>
        public void DeterminePossibleActions(bool wantDragAction, bool wantClickAction, int mouseX, int mouseY)
        {
            CurrentActionDescription = "";
            activeMouseDragAction    = null;
            activeMouseClickAction   = null;
            if (wantDragAction)
            {
                foreach (EditorActionMouseDrag mouseDragAction in editorDragActionsMouseClicked)
                {
                    if (mouseDragAction.MenuState(CurrentTrainPath, activeNode, activeTrackLocation, UpdateAfterEdits,
                                                  mouseX, mouseY))
                    {
                        CurrentActionDescription = mouseDragAction.ToString();
                        activeMouseDragAction    = mouseDragAction;
                        return;
                    }
                }
            }
            else if (wantClickAction)
            {
                foreach (EditorAction action in editorActionsMouseClicked)
                {
                    bool actionCanBeExecuted = action.MenuState(CurrentTrainPath, activeNode, activeTrackLocation, UpdateAfterEdits,
                                                                mouseX, mouseY);
                    if (actionCanBeExecuted)
                    {
                        CurrentActionDescription = action.ToString();
                        activeMouseClickAction   = action;
                        return;
                    }
                }
            }

            //direct key actions
            activeAddEndAction = possibleAddEndAction.MenuState(CurrentTrainPath, activeNode, activeTrackLocation, UpdateAfterEdits, mouseX, mouseY) ?
                                 possibleAddEndAction : null;
            activeAddWaitAction = possibleAddWaitAction.MenuState(CurrentTrainPath, activeNode, activeTrackLocation, UpdateAfterEdits, mouseX, mouseY) ?
                                  possibleAddWaitAction : null;
        }
Ejemplo n.º 4
0
        /// <summary>
        /// See whether an action is possible based on mouse click and perform it.
        /// </summary>
        /// <param name="mouseX"></param>
        /// <param name="mouseY"></param>
        public void OnLeftMouseClick(int mouseX, int mouseY)
        {
            foreach (EditorActionMouseDrag mouseDragAction in mouseDragActions)
            {
                if (mouseDragAction.MenuState(currentTrainPath, activeNode, activeTrackLocation, UpdateAfterEdits,
                                              mouseX, mouseY))
                {
                    activeMouseDragAction = mouseDragAction;
                    activeMouseDragAction.StartDragging();
                    return;
                }
            }

            foreach (EditorAction action in editorActionsMouseClicked)
            {
                bool actionCanBeExecuted = action.MenuState(currentTrainPath, activeNode, activeTrackLocation, UpdateAfterEdits,
                                                            mouseX, mouseY);
                if (actionCanBeExecuted)
                {
                    action.DoAction();
                    break;
                }
            }
        }