protected override void OnFigureDragFinish(System.Windows.Forms.MouseEventArgs e) { var prev = _target; _target = Host.Root.FindEditor( e.Location, editor => !_request.Combineds.Contains(editor) && editor.Model is MemoText ); if (_target != prev && prev != null) { prev.HideFeedback(_request); } if (_target != null) { if (_target.CanUnderstand(_request)) { /// Moveのフィードバック消去・キャンセル base.OnFigureDragCancel(); _target.HideFeedback(_request); _target.PerformRequest(_request); _target = null; return; } _target.HideFeedback(_request); _target = null; } base.OnFigureDragFinish(e); }
protected override void OnFigureDragMove(System.Windows.Forms.MouseEventArgs e) { base.OnFigureDragMove(e); var prev = _target; _target = Host.Root.FindEditor( e.Location, editor => !_request.Combineds.Contains(editor) && editor.Model is MemoText ); if (_target != prev && prev != null) { prev.HideFeedback(_request); } if (_target != null) { if (_target.CanUnderstand(_request)) { _target.ShowFeedback(_request); } else { _target = null; } } }
// ------------------------------ // private // ------------------------------ private bool UpdateItem( ToolStripMenuItem item, IEditor target, Func <IRequest> requestProvider, bool forceAdding ) { /// CanUnderstandなら表示,さらにCanExecuteならEnabled var req = requestProvider(); if (forceAdding || target.CanUnderstand(req)) { var cmd = target.GetCommand(req); item.Enabled = cmd != null && cmd.CanExecute; _ContextMenu.Items.Add(item); return(true); } return(false); }
// ======================================== // static method // ======================================== public static void Paste(IEditor editor, bool inBlock) { if (editor.CanUnderstand(new PasteRequest())) { var caret = editor.Site.Caret; var loc = CaretUtil.GetExpectedMemoTextPosition(caret.Position); var cmd = editor.RequestPaste(loc, inBlock? EditorConsts.InBlockPasteDescription: null) as PasteCommand; cmd.MergeJudge = next => next is FocusCommand; if (cmd != null && cmd.PastedEditors != null) { editor.Site.SelectionManager.DeselectAll(); foreach (var pasted in cmd.PastedEditors) { pasted.RequestSelect(SelectKind.True, false); } } } }