예제 #1
0
        // --- mouse ---
        protected override void OnMouseDown(MouseEventArgs e)
        {
            base.OnMouseDown(e);

            ClearDragTarget();
            if (e.Button != MouseButtons.Left || e.Clicks >= 2)
            {
                return;
            }

            var tabPage = GetTabPage(e.Location);

            if (tabPage != null)
            {
                if (e.Button == MouseButtons.Left && !KeyUtil.IsShiftPressed() && !KeyUtil.IsControlPressed())
                {
                    var r = GetCloseButtonBounds(tabPage);
                    if (r.Contains(e.Location))
                    {
                        OnCloseButtonPressed(tabPage);
                        _closeButtonState = CloseButtonState.None;
                        Invalidate(r);
                        return;
                    }
                }
            }

            SetupDragTarget(e.X, e.Y);
        }
예제 #2
0
        public virtual void HandleDragFinish(object sender, MouseEventArgs e)
        {
            using (Handle.Host.Figure.DirtManager.BeginDirty()) {
                var moveDelta = (Size)e.Location - (Size)_startPoint;
                if (KeyUtil.IsControlPressed())
                {
                    _targets.HideFeedback(_moveRequest);
                    if (_targets.Editors.Any())
                    {
                        var target = _targets.Editors.First().Parent;

                        var cloneRequest = new CloneRequest(_targets.Editors);
                        cloneRequest.MoveDelta = moveDelta;

                        var cmd = target.PerformRequest(cloneRequest) as CloneCommand;
                        if (cmd != null && cmd.ClonedEditors != null)
                        {
                            var select = new SelectMultiCommand(cmd.ClonedEditors, SelectKind.True, true);
                            select.Execute();
                        }
                    }
                }
                else
                {
                    _moveRequest.MoveDelta = moveDelta;
                    _targets.HideFeedback(_moveRequest);
                    _targets.PerformCompositeRequest(_moveRequest, Handle.Host.Site.CommandExecutor);
                }
                Handle.Host.ShowFeedback(new HighlightRequest());
            }
        }
예제 #3
0
        public override bool HandleDragFinish(MouseEventArgs e)
        {
            if (_target != null)
            {
                _request.EndPoint = e.Location;

                var oldEdgeTargetEditor = _request.EdgeTargetEditor;
                _request.EdgeSourceEditor = _Host.RootEditor.FindEditor(
                    _request.StartPoint,
                    editor =>
                    !editor.IsRoot &&
                    editor != _target &&
                    editor.IsConnectable &&
                    (_sourceConnectionJudge == null? true: _sourceConnectionJudge(editor.Model))
                    );
                _request.EdgeTargetEditor = _Host.RootEditor.FindEditor(
                    _request.EndPoint,
                    editor =>
                    !editor.IsRoot &&
                    editor != _target &&
                    editor.IsConnectable &&
                    (_targetConnectionJudge == null? true: _targetConnectionJudge(editor.Model))
                    );
                if (_request.EdgeTargetEditor != null && _request.EdgeTargetEditor == _request.EdgeSourceEditor)
                {
                    /// ループ接続はだめ
                    _request.EdgeTargetEditor = null;
                }

                _target.HideFeedback(_request);
                if (oldEdgeTargetEditor != null)
                {
                    HideDropTextFeedback(oldEdgeTargetEditor);
                }

                var cmd = _target.PerformRequest(_request) as CreateEdgeCommand;
                if (_edgeInitializer != null && cmd != null)
                {
                    var created = cmd.CreatedEditor;
                    var edge    = created.Figure as IEdge;
                    if (edge != null)
                    {
                        _edgeInitializer(edge);
                    }
                }
                if (!KeyUtil.IsControlPressed())
                {
                    _target.Site.EditorCanvas.Tool = _defaultTool;
                }
                OnEdgeCreated();
                _target = null;
            }
            return(true);
        }
        protected override void OnFigureMouseDown(MouseEventArgs e)
        {
            _startRowIndex = -1;
            _startColIndex = -1;
            _endRowIndex   = -1;
            _endColIndex   = -1;

            _isScenarioHandled = false;

            if (KeyUtil.IsShiftPressed())
            {
                var parent          = Host.Parent;
                var man             = Host.Site.SelectionManager;
                var selectedEditors = man.SelectedEditors;
                if (selectedEditors.Any() && selectedEditors.First().Parent == parent)
                {
                    var tableData   = GetParentTableData();
                    var firstEditor = selectedEditors.First();
                    _startRowIndex = tableData.GetRowIndex(firstEditor.Figure as TableCellFigure);
                    _startColIndex = tableData.GetColumnIndex(firstEditor.Figure as TableCellFigure);

                    _endRowIndex = tableData.GetRowIndex(Host.Figure as TableCellFigure);
                    _endColIndex = tableData.GetColumnIndex(Host.Figure as TableCellFigure);
                    SelectRange(_startRowIndex, _startColIndex, _endRowIndex, _endColIndex);
                }
            }
            else if (
                e.Button == MouseButtons.Left &&
                !KeyUtil.IsAltPressed() &&
                !KeyUtil.IsControlPressed() &&
                !KeyUtil.IsShiftPressed()
                )
            {
                var run = GetRun(e.Location);
                if (run != null && run.HasLink)
                {
                    LinkUtil.GoLink(run.Link);
                    _isScenarioHandled = true;
                }
                else
                {
                    _selectScenario.HandleMouseDown(this, e);
                }
            }
            else
            {
                _selectScenario.HandleMouseDown(this, e);
            }

            base.OnFigureMouseDown(e);
        }
예제 #5
0
        protected virtual void HandleMouseDown(object sender, MouseEventArgs e)
        {
            /// 他のEditorがFocusされていたらCommitしておく
            var prevFocused = Handle.Host.Site.FocusManager.FocusedEditor;

            if (prevFocused != null && prevFocused != Handle.Host)
            {
                prevFocused.RequestFocusCommit(true);
            }

            _toggle = KeyUtil.IsControlPressed();
            if (!_toggle)
            {
                Handle.Host.RequestSelect(SelectKind.True, true);
            }
        }
예제 #6
0
 public override bool HandleMouseClick(MouseEventArgs e)
 {
     if (_target != null)
     {
         var bounds = new Rectangle(_startPoint, _defaultNodeSize);
         _request.Bounds = bounds;
         _target.HideFeedback(_request);
         if (!KeyUtil.IsControlPressed())
         {
             _target.Site.EditorCanvas.Tool = _defaultTool;
         }
         CreateNode(_target, bounds);
         _target = null;
     }
     return(true);
 }
예제 #7
0
 public override bool HandleDragFinish(MouseEventArgs e)
 {
     if (_target != null)
     {
         var bounds = RectUtil.GetRectangleFromDiagonalPoints(_startPoint, e.Location);
         _request.Bounds = bounds;
         _target.HideFeedback(_request);
         CreateNode(_target, bounds);
         if (!KeyUtil.IsControlPressed())
         {
             _target.Site.EditorCanvas.Tool = _defaultTool;
         }
         _target = null;
     }
     return(true);
 }
예제 #8
0
        // ========================================
        // method
        // ========================================
        // ------------------------------
        // protected
        // ------------------------------
        protected override void OnFigureMouseDown(MouseEventArgs e)
        {
            base.OnFigureMouseDoubleClick(e);

            /// 他のEditorがFocusされていたらCommitしておく
            var prevFocused = Host.Site.FocusManager.FocusedEditor;

            if (prevFocused != null && prevFocused != Host)
            {
                prevFocused.RequestFocusCommit(true);
            }

            _toggle = KeyUtil.IsControlPressed();
            if (!_toggle)
            {
                Host.RequestSelect(SelectKind.True, true);
            }
        }
예제 #9
0
        // ------------------------------
        // protected
        // ------------------------------
        public virtual void HandleMouseDown(object sender, MouseEventArgs e)
        {
            _isSelectedOnMouseDown = Handle.Host.IsSelected;
            _toggle = KeyUtil.IsControlPressed();

            /// EditorがFocusされていたらCommitしておく
            var focused = Handle.Host.Site.FocusManager.FocusedEditor;

            if (focused != null)
            {
                focused.RequestFocusCommit(true);
            }

            Handle.Host.RequestSelect(
                SelectKind.True,
                _needClearSelectionOnMouseDown || (!_toggle && !_isSelectedOnMouseDown)
                );
        }
예제 #10
0
        protected virtual void HandleMouseDown(object sender, MouseEventArgs e)
        {
            /// 他のEditorがFocusされていたらCommitしておく
            var prevFocused = Handle.Host.Site.FocusManager.FocusedEditor;

            if (prevFocused != null && prevFocused != Handle.Host)
            {
                prevFocused.RequestFocusCommit(true);
            }

            _toggle = KeyUtil.IsControlPressed();
            if (!_toggle)
            {
                Handle.Host.RequestSelect(SelectKind.True, true);
            }

            if (_Caret != null)
            {
                var expectedTextPos = CaretUtil.GetExpectedMemoTextPosition(new Point(e.X, e.Y - _Caret.Height / 2));
                _Caret.Position = CaretUtil.GetExpectedCaretPosition(expectedTextPos, Handle.Host.Site.GridService);
            }
        }
예제 #11
0
        protected override void OnFigureMouseClick(MouseEventArgs e)
        {
            var handled = false;

            if (
                e.Button == MouseButtons.Left &&
                !KeyUtil.IsAltPressed() &&
                !KeyUtil.IsControlPressed() &&
                !KeyUtil.IsShiftPressed()
                )
            {
                var run = GetRun(e.Location);
                if (run != null && run.HasLink)
                {
                    LinkUtil.GoLink(run.Link);
                    handled = true;
                }
            }

            if (!handled)
            {
                base.OnFigureMouseClick(e);
            }
        }
예제 #12
0
        protected override void OnFigureMouseDown(MouseEventArgs e)
        {
            var handled = false;

            if (
                (e.Button == MouseButtons.Left || e.Button == MouseButtons.Middle) &&
                !KeyUtil.IsAltPressed() &&
                !KeyUtil.IsControlPressed() &&
                !KeyUtil.IsShiftPressed()
                )
            {
                var run = GetRun(e.Location);
                if (run != null && run.HasLink)
                {
                    LinkUtil.GoLink(run.Link);
                    handled = true;
                }
            }

            /// checkbox
            if (e.Button == MouseButtons.Left)
            {
                var node = _Figure as INode;
                if (node != null)
                {
                    var bulcmd = node.GetProcessCheckBoxBulletCommand(e.Location);
                    if (bulcmd != null)
                    {
                        /// bulcmdはFigureのStyledTextを変更するだけ
                        /// ModelのStyledTextを変えないといけない
                        bulcmd.Execute();

                        var model    = Host.Model as MemoText;
                        var oldStext = model.StyledText;
                        var newStext = node.StyledText.CloneDeeply() as StyledText.Core.StyledText;
                        var cmd      = new DelegatingCommand(
                            () => {
                            model.StyledText = newStext;
                        },
                            () => {
                            model.StyledText = oldStext;
                        }
                            );
                        Host.Site.CommandExecutor.Execute(cmd);
                        handled = true;
                    }
                }
            }


            if (!handled)
            {
                _isSelectedOnMouseDown = Host.IsSelected;
                _toggle = KeyUtil.IsControlPressed();

                /// EditorがFocusされていたらCommitしておく
                var focused = Host.Site.FocusManager.FocusedEditor;
                if (focused != null)
                {
                    focused.RequestFocusCommit(true);
                }

                Host.RequestSelect(SelectKind.True, !_toggle && !Host.IsSelected);
                if (e.Button == MouseButtons.Left && !KeyUtil.IsControlPressed())
                {
                    Host.RequestFocus(FocusKind.Begin, e.Location);
                    Host.Site.EditorCanvas.EventDispatcher.SetDnDTarget(Host.Focus.Figure);
                }
                base.OnFigureMouseDown(e);
            }
        }