public AudioTrackSizeTab() { InitializeComponent(); this.audio1Type.Items.AddRange(ContainerManager.AudioTypes.ValuesArray); DragDropUtil.RegisterSingleFileDragDrop(this, selectAudioFile, this.filter); }
// --- handler --- private void HandleMemoListBoxDragOver(object sender, DragEventArgs e) { e.Effect = DragDropEffects.None; if (e.Data.GetDataPresent(typeof(MemoInfo[]))) { if (_targetKind == MemoListTargetKind.Folder) { if (DragDropUtil.IsCopyAllowed(e)) { var targetFolder = _workspaceView.WorkspaceTree.SelectedFolder; if (targetFolder != null) { e.Effect = DragDropEffects.Copy; } } } else if (_targetKind == MemoListTargetKind.Tag) { if (DragDropUtil.IsCopyAllowed(e)) { var targetTag = _workspaceView.WorkspaceTree.SelectedTag; if (targetTag != null) { e.Effect = DragDropEffects.Copy; } } } else if (_targetKind == MemoListTargetKind.TrashBox) { e.Effect = DragDropEffects.Move; } } }
public FileBar() { InitializeComponent(); DragDropUtil.RegisterSingleFileDragDrop(filename, SetFilename, delegate() { return(Filter); }); if (MainForm.Instance == null) { return; } // DPI rescale if (MainForm.Instance != null) { openButton.Height = filename.Height + MainForm.Instance.Settings.DPIRescale(3); } }
public FileBar() { InitializeComponent(); DragDropUtil.RegisterSingleFileDragDrop(filename, setFilename, delegate() { return(Filter); }); }
protected override void OnDragDrop(DragEventArgs e) { base.OnDragDrop(e); var effect = DragDropEffects.None; if (e.Data.GetDataPresent(typeof(TreeNode)) || e.Data.GetDataPresent(typeof(TreeNodeEx))) { var target = GetNodeAt(PointToClient(new Point(e.X, e.Y))); var source = (TreeNode)e.Data.GetData(typeof(TreeNode)); if (source == null) { source = (TreeNode)e.Data.GetData(typeof(TreeNodeEx)); } if ( DragDropUtil.IsMove(e) && target != null && target != source && target != source.Parent && !IsChildNode(source, target) ) { /// ドロップされたNodeのコピーを作成 var clone = (TreeNode)source.Clone(); target.Nodes.Add(clone); target.Expand(); SelectedNode = clone; var draggedTag = (MemoTag)clone.Tag; draggedTag.SuperTag = null; if (target != _tagRootNode) { var super = target.Tag as MemoTag; if (super != null) { draggedTag.SuperTag = super; } } _isInDragOver = false; _selectedObjBeforeDragOver = null; } } else if (e.Data.GetDataPresent(typeof(MemoInfo[]))) { if (DragDropUtil.IsMove(e) || DragDropUtil.IsCopy(e)) { _isInDragOver = false; SelectNode(_selectedObjBeforeDragOver); _selectedObjBeforeDragOver = null; var target = GetNodeAt(PointToClient(new Point(e.X, e.Y))); var addingTag = target.Tag as MemoTag; var memoInfos = (MemoInfo[])e.Data.GetData(typeof(MemoInfo[])); foreach (var memoInfo in memoInfos) { var memo = _facade.Container.Find <Memo>(memoInfo.MemoId); if (DragDropUtil.IsMove(e)) { memo.ClearTags(); } if (!memo.Tags.Contains(addingTag)) { memo.AddTag(addingTag); } } } } if (effect == DragDropEffects.None) { _isInDragOver = false; SelectNode(_selectedObjBeforeDragOver); _selectedObjBeforeDragOver = null; } }
protected override void OnDragOver(DragEventArgs e) { base.OnDragOver(e); e.Effect = DragDropEffects.None; /// まずdataとeffectで判断 if (e.Data.GetDataPresent(typeof(TreeNode)) || e.Data.GetDataPresent(typeof(TreeNodeEx))) { if (DragDropUtil.IsMoveAllowed(e)) { var target = GetNodeAt(PointToClient(new Point(e.X, e.Y))); var source = (TreeNode)e.Data.GetData(typeof(TreeNode)); if (source == null) { source = (TreeNode)e.Data.GetData(typeof(TreeNodeEx)); } if (!_isInDragOver) { _isInDragOver = true; _selectedObjBeforeDragOver = SelectedNode == null? null: SelectedNode.Tag; } /// 表示のための処理 if (target != null) { SelectedNode = target; if (target.PrevVisibleNode != null) { target.PrevVisibleNode.EnsureVisible(); } if (target.NextVisibleNode != null) { target.NextVisibleNode.EnsureVisible(); } } ///マウス下のNodeがドロップ先として適切か調べる if ( target != null && target != source && target != source.Parent && !IsChildNode(source, target) ) { e.Effect = DragDropEffects.Move; } } } else if (e.Data.GetDataPresent(typeof(MemoInfo[]))) { if (DragDropUtil.IsMoveAllowed(e) || DragDropUtil.IsCopyAllowed(e)) { var target = GetNodeAt(PointToClient(new Point(e.X, e.Y))); if (!_isInDragOver) { _isInDragOver = true; _selectedObjBeforeDragOver = SelectedNode == null? null: SelectedNode.Tag; } /// 表示のための処理 if (target != null) { SelectedNode = target; if (target.PrevVisibleNode != null) { target.PrevVisibleNode.EnsureVisible(); } if (target.NextVisibleNode != null) { target.NextVisibleNode.EnsureVisible(); } } ///マウス下のNodeがドロップ先として適切か調べる if ( target != null && target != _allTagsNode && target != _tagRootNode && target != _untaggedNode ) { if (DragDropUtil.IsControlPressed(e)) { e.Effect = DragDropEffects.Copy; } else { e.Effect = DragDropEffects.Move; } } } } if (e.Effect == DragDropEffects.None) { SelectNode(_selectedObjBeforeDragOver); _isInDragOver = false; } }
public void enableDragDrop() { // only enable drag&drop when the main form is visible DragDropUtil.RegisterSingleFileDragDrop(input, setFileName, delegate() { return(Filter); }); }
private void HandleMemoListBoxDragDrop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(typeof(MemoInfo[]))) { if (_targetKind == MemoListTargetKind.Folder) { if (DragDropUtil.IsCopy(e)) { var targetFolder = _workspaceView.WorkspaceTree.SelectedFolder; if (targetFolder != null) { var memoInfos = (MemoInfo[])e.Data.GetData(typeof(MemoInfo[])); var existsNotContained = false; foreach (var memoInfo in memoInfos) { var memo = _app.Container.Find <Memo>(memoInfo.MemoId); if (!targetFolder.ContainingMemos.Contains(memo)) { existsNotContained = true; break; } } if (existsNotContained) { foreach (var memoInfo in memoInfos) { var memo = _app.Container.Find <Memo>(memoInfo.MemoId); if (!targetFolder.ContainingMemos.Contains(memo)) { targetFolder.AddContainingMemo(memo); } } } } } } else if (_targetKind == MemoListTargetKind.Tag) { if (DragDropUtil.IsCopyAllowed(e)) { var targetTag = _workspaceView.WorkspaceTree.SelectedTag; if (targetTag != null) { var memoInfos = (MemoInfo[])e.Data.GetData(typeof(MemoInfo[])); var existsNotContained = false; foreach (var memoInfo in memoInfos) { var memo = _app.Container.Find <Memo>(memoInfo.MemoId); if (!targetTag.Memos.Contains(memo)) { existsNotContained = true; break; } } if (existsNotContained) { foreach (var memoInfo in memoInfos) { var memo = _app.Container.Find <Memo>(memoInfo.MemoId); if (!targetTag.Memos.Contains(memo)) { targetTag.AddMemo(memo); } } } } } } else if (_targetKind == MemoListTargetKind.TrashBox) { if (DragDropUtil.IsMove(e)) { var memoInfos = (MemoInfo[])e.Data.GetData(typeof(MemoInfo[])); if (MessageUtil.ConfirmMemoRemoval(memoInfos)) { foreach (var info in memoInfos) { _app.RemoveMemo(info); } } } } } }
protected IDragTarget CreateFocusFigureDragTarget() { var ret = MouseOperatableFactory.CreateDragTarget(); ret.DragOver += (sender, e) => { e.Effect = DragDropEffects.None; var data = e.Data; if (data.GetDataPresent(typeof(MemoInfo[]))) { if (DragDropUtil.IsLinkAllowed(e)) { e.Effect = DragDropEffects.Link; ShowFocusFigureDropTextFeedback(new Point(e.X, e.Y)); } } else if (data.GetDataPresent(StyledTextConsts.BlocksAndInlinesFormat.Name)) { if (DragDropUtil.IsControlPressed(e)) { if (DragDropUtil.IsCopyAllowed(e)) { e.Effect = DragDropEffects.Copy; ShowFocusFigureDropTextFeedback(new Point(e.X, e.Y)); } else { e.Effect = DragDropEffects.Move; ShowFocusFigureDropTextFeedback(new Point(e.X, e.Y)); } } else { if (DragDropUtil.IsMoveAllowed(e)) { e.Effect = DragDropEffects.Move; ShowFocusFigureDropTextFeedback(new Point(e.X, e.Y)); } else if (DragDropUtil.IsCopyAllowed(e)) { e.Effect = DragDropEffects.Copy; ShowFocusFigureDropTextFeedback(new Point(e.X, e.Y)); } } } if (data.GetDataPresent("UniformResourceLocator") && data.GetDataPresent(DataFormats.UnicodeText)) { if (DragDropUtil.IsLinkAllowed(e)) { e.Effect = DragDropEffects.Link; ShowFocusFigureDropTextFeedback(new Point(e.X, e.Y)); } } else if (data.GetDataPresent(DataFormats.UnicodeText)) { if (DragDropUtil.IsControlPressed(e)) { if (DragDropUtil.IsCopyAllowed(e)) { e.Effect = DragDropEffects.Copy; ShowFocusFigureDropTextFeedback(new Point(e.X, e.Y)); } else { e.Effect = DragDropEffects.Move; ShowFocusFigureDropTextFeedback(new Point(e.X, e.Y)); } } else { if (DragDropUtil.IsMoveAllowed(e)) { e.Effect = DragDropEffects.Move; ShowFocusFigureDropTextFeedback(new Point(e.X, e.Y)); } else if (DragDropUtil.IsCopyAllowed(e)) { e.Effect = DragDropEffects.Copy; ShowFocusFigureDropTextFeedback(new Point(e.X, e.Y)); } } } }; ret.DragLeave += (sender, e) => { /// feedbackを隠す Host.HideFeedback(new DropTextRequest(Rectangle.Empty)); }; ret.DragDrop += (sender, e) => { if (DragDropUtil.IsNone(e)) { return; } var data = e.Data; var loc = new Point(e.X, e.Y); var focus = Host.Focus as StyledTextFocus; if (data.GetDataPresent(typeof(MemoInfo[]))) { if (DragDropUtil.IsLink(e)) { if (focus != null && Host.Figure.Root != null) { var infos = (MemoInfo[])data.GetData(typeof(MemoInfo[])); focus.Selection.Range = Range.Empty; var charIndex = focus.Figure.GetCharIndexAt(loc); foreach (var info in infos) { var text = info.Title; var url = UriUtil.GetUri(info); focus.Referer.CaretIndex = charIndex; focus.InsertText(text, false); /// set link focus.Selection.Range = new Range(charIndex, text.Length); focus.SetLink(url, null); focus.Selection.Range = Range.Empty; } } Host.HideFeedback(new DropTextRequest(Rectangle.Empty)); Host.Site.EditorCanvas.Select(); } } else if (data.GetDataPresent(StyledTextConsts.BlocksAndInlinesFormat.Name)) { /// StyledText flows if (DragDropUtil.IsCopy(e) || DragDropUtil.IsMove(e)) { if (focus != null && Host.Figure.Root != null) { var charIndex = focus.Figure.GetCharIndexAt(loc); if (!_selectionRangeOnDragStart.Contains(charIndex)) { /// Moveの場合はこのタイミングでremoveしてしまう。 /// DragFinishでやろうとすると大変。 if (!_selectionRangeOnDragStart.IsEmpty && DragDropUtil.IsMove(e)) { focus.RemoveForward(); } focus.Selection.Range = Range.Empty; if (charIndex >= _selectionRangeOnDragStart.End) { charIndex -= _selectionRangeOnDragStart.Length; } focus.Referer.CaretIndex = charIndex; var flows = (IEnumerable <Flow>)data.GetData(StyledTextConsts.BlocksAndInlinesFormat.Name); focus.InsertBlocksAndInlines(flows); } } Host.HideFeedback(new DropTextRequest(Rectangle.Empty)); Host.Site.EditorCanvas.Select(); } } else if (data.GetDataPresent("UniformResourceLocator") && data.GetDataPresent(DataFormats.UnicodeText)) { if (DragDropUtil.IsLink(e)) { if (focus != null && Host.Figure.Root != null) { focus.Selection.Range = Range.Empty; var url = (string)data.GetData(DataFormats.UnicodeText); var len = url.Length; var charIndex = focus.Figure.GetCharIndexAt(loc); focus.Referer.CaretIndex = charIndex; focus.InsertText(url, false); /// set link focus.Selection.Range = new Range(charIndex, len); focus.SetLink(url, null); focus.Selection.Range = Range.Empty; } Host.HideFeedback(new DropTextRequest(Rectangle.Empty)); Host.Site.EditorCanvas.Select(); } } else if (data.GetDataPresent(DataFormats.UnicodeText)) { if (DragDropUtil.IsCopy(e) || DragDropUtil.IsMove(e)) { if (focus != null && Host.Figure.Root != null) { focus.Selection.Range = Range.Empty; var charIndex = focus.Figure.GetCharIndexAt(loc); focus.Referer.CaretIndex = charIndex; var text = (string)data.GetData(DataFormats.UnicodeText); focus.InsertText(text, false); } Host.HideFeedback(new DropTextRequest(Rectangle.Empty)); Host.Site.EditorCanvas.Select(); } } }; return(ret); }
protected IDragTarget CreateHostFigureDragTarget() { var ret = MouseOperatableFactory.CreateDragTarget(); ret.DragOver += (sender, e) => { e.Effect = DragDropEffects.None; var data = e.Data; if (data.GetDataPresent(typeof(MemoInfo[]))) { if (DragDropUtil.IsLinkAllowed(e)) { e.Effect = DragDropEffects.Link; ShowHostFigureDropTextFeedback(new Point(e.X, e.Y)); } } else if (data.GetDataPresent(StyledTextConsts.BlocksAndInlinesFormat.Name)) { if (DragDropUtil.IsControlPressed(e)) { if (DragDropUtil.IsCopyAllowed(e)) { e.Effect = DragDropEffects.Copy; ShowHostFigureDropTextFeedback(new Point(e.X, e.Y)); } else { e.Effect = DragDropEffects.Move; ShowHostFigureDropTextFeedback(new Point(e.X, e.Y)); } } else { if (DragDropUtil.IsMoveAllowed(e)) { e.Effect = DragDropEffects.Move; ShowHostFigureDropTextFeedback(new Point(e.X, e.Y)); } else if (DragDropUtil.IsCopyAllowed(e)) { e.Effect = DragDropEffects.Copy; ShowHostFigureDropTextFeedback(new Point(e.X, e.Y)); } } } if (data.GetDataPresent("UniformResourceLocator") && data.GetDataPresent(DataFormats.UnicodeText)) { if (DragDropUtil.IsLinkAllowed(e)) { e.Effect = DragDropEffects.Link; ShowHostFigureDropTextFeedback(new Point(e.X, e.Y)); } } else if (data.GetDataPresent(DataFormats.UnicodeText)) { if (DragDropUtil.IsControlPressed(e)) { if (DragDropUtil.IsCopyAllowed(e)) { e.Effect = DragDropEffects.Copy; ShowHostFigureDropTextFeedback(new Point(e.X, e.Y)); } else { e.Effect = DragDropEffects.Move; ShowHostFigureDropTextFeedback(new Point(e.X, e.Y)); } } else { if (DragDropUtil.IsMoveAllowed(e)) { e.Effect = DragDropEffects.Move; ShowHostFigureDropTextFeedback(new Point(e.X, e.Y)); } else if (DragDropUtil.IsCopyAllowed(e)) { e.Effect = DragDropEffects.Copy; ShowHostFigureDropTextFeedback(new Point(e.X, e.Y)); } } } }; ret.DragLeave += (sender, e) => { /// feedbackを隠す Host.HideFeedback(new DropTextRequest(Rectangle.Empty)); }; ret.DragDrop += (sender, e) => { if (DragDropUtil.IsNone(e)) { return; } var data = e.Data; var loc = new Point(e.X, e.Y); var focus = Host.Focus as StyledTextFocus; if (data.GetDataPresent(typeof(MemoInfo[]))) { /// MemoInfo[] if (DragDropUtil.IsLink(e)) { Host.RequestSelect(SelectKind.True, true); Host.RequestFocus(FocusKind.Begin, loc); if (focus != null) { var infos = (MemoInfo[])data.GetData(typeof(MemoInfo[])); foreach (var info in infos) { var text = info.Title; var url = UriUtil.GetUri(info); var charIndex = focus.Referer.CaretIndex; focus.InsertText(text, false); /// set link focus.Selection.Range = new Range(charIndex, text.Length); focus.SetLink(url, null); focus.Selection.Range = Range.Empty; } } Host.HideFeedback(new DropTextRequest(Rectangle.Empty)); Host.Site.EditorCanvas.Select(); } } else if (data.GetDataPresent(StyledTextConsts.BlocksAndInlinesFormat.Name)) { /// StyledText flows if (DragDropUtil.IsCopy(e) || DragDropUtil.IsMove(e)) { Host.RequestSelect(SelectKind.True, true); Host.RequestFocus(FocusKind.Begin, loc); if (focus != null) { var flows = (IEnumerable <Flow>)data.GetData(StyledTextConsts.BlocksAndInlinesFormat.Name); focus.InsertBlocksAndInlines(flows); } Host.HideFeedback(new DropTextRequest(Rectangle.Empty)); Host.Site.EditorCanvas.Select(); } } else if (data.GetDataPresent("UniformResourceLocator") && data.GetDataPresent(DataFormats.UnicodeText)) { /// URL if (DragDropUtil.IsLink(e)) { Host.RequestSelect(SelectKind.True, true); Host.RequestFocus(FocusKind.Begin, loc); if (focus != null) { var charIndex = focus.Referer.CaretIndex; var url = (string)data.GetData(DataFormats.UnicodeText); var len = url.Length; focus.InsertText(url, false); /// set link focus.Selection.Range = new Range(charIndex, len); focus.SetLink(url, null); focus.Selection.Range = Range.Empty; } Host.HideFeedback(new DropTextRequest(Rectangle.Empty)); Host.Site.EditorCanvas.Select(); } } else if (data.GetDataPresent(DataFormats.UnicodeText)) { /// Text if (DragDropUtil.IsCopy(e) | DragDropUtil.IsMove(e)) { Host.RequestSelect(SelectKind.True, true); Host.RequestFocus(FocusKind.Begin, loc); if (focus != null) { focus.InsertText((string)data.GetData(DataFormats.UnicodeText), false); } Host.HideFeedback(new DropTextRequest(Rectangle.Empty)); Host.Site.EditorCanvas.Select(); } } }; return(ret); }
// ------------------------------ // private // ------------------------------ private IDragTarget CreateDragTarget() { var ret = MouseOperatableFactory.CreateDragTarget(); var app = MemopadApplication.Instance; ret.DragOver += (sender, e) => { e.Effect = DragDropEffects.None; var data = e.Data; if (data.GetDataPresent(typeof(MemoInfo[]))) { if (DragDropUtil.IsLinkAllowed(e)) { e.Effect = DragDropEffects.Link; } } else if (data.GetDataPresent(DataFormats.FileDrop)) { if (DragDropUtil.IsControlPressed(e)) { if (DragDropUtil.IsCopyAllowed(e)) { e.Effect = DragDropEffects.Copy; } } else { if (DragDropUtil.IsLinkAllowed(e)) { e.Effect = DragDropEffects.Link; } } } else if (data.GetDataPresent(StyledTextConsts.BlocksAndInlinesFormat.Name)) { if (DragDropUtil.IsControlPressed(e)) { if (DragDropUtil.IsCopyAllowed(e)) { e.Effect = DragDropEffects.Copy; } else if (DragDropUtil.IsMoveAllowed(e)) { e.Effect = DragDropEffects.Move; } } else { if (DragDropUtil.IsMoveAllowed(e)) { e.Effect = DragDropEffects.Move; } else if (DragDropUtil.IsCopyAllowed(e)) { e.Effect = DragDropEffects.Copy; } } } else if (data.GetDataPresent(DataFormats.Html)) { if (DragDropUtil.IsControlPressed(e)) { if (DragDropUtil.IsCopyAllowed(e)) { e.Effect = DragDropEffects.Copy; } else if (DragDropUtil.IsMoveAllowed(e)) { e.Effect = DragDropEffects.Move; } } else { if (DragDropUtil.IsMoveAllowed(e)) { e.Effect = DragDropEffects.Move; } else if (DragDropUtil.IsCopyAllowed(e)) { e.Effect = DragDropEffects.Copy; } } } else if (data.GetDataPresent("UniformResourceLocator") && data.GetDataPresent(DataFormats.UnicodeText)) { if (DragDropUtil.IsLinkAllowed(e)) { e.Effect = DragDropEffects.Link; } } else if (data.GetDataPresent(DataFormats.UnicodeText)) { if (DragDropUtil.IsControlPressed(e)) { if (DragDropUtil.IsCopyAllowed(e)) { e.Effect = DragDropEffects.Copy; } else if (DragDropUtil.IsMoveAllowed(e)) { e.Effect = DragDropEffects.Move; } } else { if (DragDropUtil.IsMoveAllowed(e)) { e.Effect = DragDropEffects.Move; } else if (DragDropUtil.IsCopyAllowed(e)) { e.Effect = DragDropEffects.Copy; } } } }; ret.DragDrop += (sender, e) => { if (DragDropUtil.IsNone(e)) { return; } var oldCursor = Host.Site.EditorCanvas.Cursor; Host.Site.EditorCanvas.Cursor = Cursors.WaitCursor; try { var data = e.Data; var loc = Host.Site.GridService.GetAdjustedPoint(new Point(e.X, e.Y)); if (data.GetDataPresent(typeof(MemoInfo[]))) { /// MemoInfo[] if (DragDropUtil.IsLink(e)) { var infos = (MemoInfo[])data.GetData(typeof(MemoInfo[])); foreach (var info in infos) { var text = info.Title; var uri = UriUtil.GetUri(info); var created = MemoEditorHelper.AddTextAsLink(Host, loc, text, uri, null); } Host.Site.EditorCanvas.Select(); } } else if (data.GetDataPresent(DataFormats.FileDrop)) { /// FileDrop if (DragDropUtil.IsCopy(e) || DragDropUtil.IsLink(e)) { MemoEditorHelper.AddFileDrops( Host, loc, (string[])data.GetData(DataFormats.FileDrop), e.Effect == DragDropEffects.Copy, true, false ); Host.Site.EditorCanvas.Select(); } } else if (data.GetDataPresent(StyledTextConsts.BlocksAndInlinesFormat.Name)) { /// StyledText flows if (DragDropUtil.IsCopy(e) || DragDropUtil.IsMove(e)) { MemoEditorHelper.AddBlocksAndInlines( Host, loc, data.GetData(StyledTextConsts.BlocksAndInlinesFormat.Name) as IEnumerable <Flow>, true ); Host.Site.EditorCanvas.Select(); } } else if (data.GetDataPresent(DataFormats.Html)) { /// Html if (DragDropUtil.IsCopy(e) || DragDropUtil.IsMove(e)) { var html = Common.Forms.Clipboard.ClipboardUtil.GetCFHtmlFromDataObject(data); MemoEditorHelper.AddHtml( Host, loc, html, true ); Host.Site.EditorCanvas.Select(); } } else if (data.GetDataPresent("UniformResourceLocator") && data.GetDataPresent(DataFormats.UnicodeText)) { /// URL if (DragDropUtil.IsLink(e)) { var url = (string)data.GetData(DataFormats.UnicodeText); var created = MemoEditorHelper.AddTextAsLink(Host, loc, url, url, null); Host.Site.EditorCanvas.Select(); } } else if (data.GetDataPresent(DataFormats.UnicodeText)) { /// text if (DragDropUtil.IsCopy(e) || DragDropUtil.IsMove(e)) { MemoEditorHelper.AddText(Host, loc, (string)data.GetData(DataFormats.UnicodeText), false); Host.Site.EditorCanvas.Select(); } } } finally { Host.Site.EditorCanvas.Cursor = oldCursor; } }; return(ret); }