private static void HandleDropForSource(DragDropEffects result) { System.Diagnostics.Debug.WriteLine($"HandleDropForSource: {result}"); dropInfo?.UpdateTargetContainerAndIndex(); if (result.HasFlag(DragDropEffects.Move)) { ToolWindowHistory.SaveStateAndPause(); foreach (var sourceItem in dragInfo.SourceItems) { var sourceCol = sourceItem.Parent; var idx = sourceCol.Items.IndexOf(sourceItem); if (Equals(sourceCol, dropInfo?.TargetContainer) && idx < dropInfo.InsertIndex) { dropInfo.InsertIndex--; } sourceItem.Parent.Items.RemoveAt(idx); } } if (dropInfo?.TargetItem != null) { HandleDropForTarget(result); } if (result.HasFlag(DragDropEffects.Move)) { ToolWindowHistory.Resume(); } }
public static void HandleDropForTarget(DragDropEffects result, DragEventArgs e = null) { System.Diagnostics.Debug.WriteLine($"HandleDropForTarget: {dropInfo.TargetItem.Item}"); IEnumerable <CmdBase> data = DropInfo.ExtractDropData(dragInfo, e); if (dropInfo.CanAcceptData(data) && (result.HasFlag(DragDropEffects.Move) || result.HasFlag(DragDropEffects.Copy))) { var idx = dropInfo.InsertIndex; if (result.HasFlag(DragDropEffects.Copy)) { data = data.Select(cmd => cmd.Copy()); } var dataList = data.ToList(); var souldDeselctItem = dropInfo.InsertPosition.HasFlag(DropInfo.RelativInsertPosition.IntoTargetItem) && dropInfo.TargetItem.Item is CmdContainer con && !con.IsExpanded; if (dataList.Count > 0) { ToolWindowHistory.SaveState(); } foreach (var sourceItem in dataList) { if (souldDeselctItem) { sourceItem.IsSelected = false; } dropInfo.TargetContainer.Insert(idx++, sourceItem); } var focusItem = dragInfo?.DirectSourceItem ?? dataList.FirstOrDefault(); var selectItemCommand = dropInfo.TargetItem.ParentTreeView.SelectItemCommand; if (souldDeselctItem) { selectItemCommand.SafeExecute(dropInfo.TargetItem.Item); } else if (selectItemCommand.SafeExecute(focusItem)) { foreach (var sourceItem in dataList) { sourceItem.IsSelected = true; } } } else { if (e != null) { e.Effects = DragDropEffects.None; } } dropInfo?.DropTargetAdorner?.Detach(); dropInfo = null; }
private void PasteToolStripMenuItem_Click(object sender, EventArgs e) { try { if (Clipboard.ContainsFileDropList()) { DragDropEffects effect = DragDropEffects.Copy; if (Clipboard.ContainsData("Preferred DropEffect")) { effect = (DragDropEffects)((MemoryStream)Clipboard. GetData("Preferred DropEffect")).ReadByte(); } var paths = Clipboard.GetFileDropList(); foreach (var path in paths) { var dest = Path.Combine(ResourceExplorer.CurrentDirectory, Path.GetFileName(path)); int p = 0; string s = ""; while (File.Exists(dest + s) || Directory.Exists(dest + s)) { s = " - copy " + (p++); } if (Directory.Exists(path)) { if (effect.HasFlag(DragDropEffects.Move)) { Directory.Move(path, dest + s); } else { DirectoryCopy(path, dest + s, true); } } else if (File.Exists(path)) { if (effect.HasFlag(DragDropEffects.Move)) { File.Move(path, dest + s); } else { File.Copy(path, dest + s); } } } } } catch (Exception ex) { MessageBox.Show(this, ex.ToString(), "Error: Can not paste resource.", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private StandardCursorType GetCursorForDropEffect(DragDropEffects effects) { if (effects.HasFlag(DragDropEffects.Copy)) { return(StandardCursorType.DragCopy); } if (effects.HasFlag(DragDropEffects.Move)) { return(StandardCursorType.DragMove); } if (effects.HasFlag(DragDropEffects.Link)) { return(StandardCursorType.DragLink); } return(StandardCursorType.No); }
private DragDropEffects GetPreferredEffect(DragDropEffects effect, RawInputModifiers modifiers) { if (effect == DragDropEffects.Copy || effect == DragDropEffects.Move || effect == DragDropEffects.Link || effect == DragDropEffects.None) { return(effect); // No need to check for the modifiers. } if (effect.HasFlag(DragDropEffects.Link) && modifiers.HasFlag(RawInputModifiers.Alt)) { return(DragDropEffects.Link); } if (effect.HasFlag(DragDropEffects.Copy) && modifiers.HasFlag(RawInputModifiers.Control)) { return(DragDropEffects.Copy); } return(DragDropEffects.Move); }
/// <inheritdoc /> public void DragDropOperationFinished(DragDropEffects operationResult, IDragInfo dragInfo) { if (alreadyDropped || dragInfo == null) { return; } // the drag operation has finished on another app if (operationResult != DragDropEffects.None) { if (operationResult.HasFlag(DragDropEffects.Move)) { var sourceList = dragInfo.SourceCollection.TryGetList(); var items = dragInfo.SourceItems.OfType <object>().ToList(); if (sourceList != null) { foreach (var o in items) { sourceList.Remove(o); } } alreadyDropped = true; } } }
public void SetSupportedDragDropEffects(DragDropEffects effects, DragDropEffects defaultEffect = DragDropEffects.Copy) { ContextMenu.Items.Clear(); foreach (var e in Enum.GetValues(typeof(DragDropEffects))) { DragDropEffects curEffect = (DragDropEffects)e; if (curEffect != DragDropEffects.None && effects.HasFlag(curEffect)) { var header = new TextBlock() { Text = curEffect.ToString() }; if (curEffect.Equals(defaultEffect)) { header.FontWeight = FontWeights.Bold; ContextMenu.Items.Insert(0, new MenuItem() { Tag = e, Header = header }); } else { ContextMenu.Items.Add(new MenuItem() { Tag = e, Header = header }); } } } }
public static DropEffect ConvertDropEffect(DragDropEffects operation) { DropEffect result = DropEffect.None; if (operation.HasFlag(DragDropEffects.Copy)) { result |= DropEffect.Copy; } if (operation.HasFlag(DragDropEffects.Move)) { result |= DropEffect.Move; } if (operation.HasFlag(DragDropEffects.Link)) { result |= DropEffect.Link; } return(result); }
internal static NSDragOperation ConvertDragOperation(DragDropEffects d) { NSDragOperation result = NSDragOperation.None; if (d.HasFlag(DragDropEffects.Copy)) { result |= NSDragOperation.Copy; } if (d.HasFlag(DragDropEffects.Link)) { result |= NSDragOperation.Link; } if (d.HasFlag(DragDropEffects.Move)) { result |= NSDragOperation.Move; } return(result); }
/// <summary> /// Converts a drag drop effects to the CEF dragging operation mask. /// </summary> /// <param name="self">The drag drop effects.</param> /// <returns></returns> public static CefDragOperationsMask ToCefDragOperationsMask(this DragDropEffects self) { CefDragOperationsMask effects = CefDragOperationsMask.None; if (self.HasFlag(DragDropEffects.Copy)) { effects |= CefDragOperationsMask.Copy; } if (self.HasFlag(DragDropEffects.Move)) { effects |= CefDragOperationsMask.Move; } if (self.HasFlag(DragDropEffects.Link)) { effects |= CefDragOperationsMask.Link; } return(effects); }
/// <summary> /// Converts .NET drag drop effects to CEF Drag Operations /// </summary>s private static DragOperationsMask GetDragOperationsMask(DragDropEffects dragDropEffects) { var operations = DragOperationsMask.None; if (dragDropEffects.HasFlag(DragDropEffects.All)) { operations |= DragOperationsMask.Every; } if (dragDropEffects.HasFlag(DragDropEffects.Copy)) { operations |= DragOperationsMask.Copy; } if (dragDropEffects.HasFlag(DragDropEffects.Move)) { operations |= DragOperationsMask.Move; } if (dragDropEffects.HasFlag(DragDropEffects.Link)) { operations |= DragOperationsMask.Link; } return(operations); }
private void keyframeMouseMove(object sender, System.Windows.Input.MouseEventArgs e, Keyframe key) { if (e.LeftButton == MouseButtonState.Pressed) { var movedDistance = Point.Subtract(initialKeyframeMousePosition, e.GetPosition(key.keyframeControl)).Length; if (movedDistance > 15) { // What happened here is that the drag started on one slide, but we detected it on another. if (key != startDragKeyframe) { Console.Beep(400, 100); key = startDragKeyframe; } // package the data DataObject data = new DataObject(); data.SetData("Keyframe", key); // dim the source key selectKeyframe(key); key.Dim(); // set up the adorner var adLayer = AdornerLayer.GetAdornerLayer(keyScrollViewer); Rect renderRect = new Rect(key.keyframeControl.RenderSize); renderRect.Height = renderRect.Height / 2; keyAdorner = new KeyframeAdorner(keyScrollViewer, renderRect); adLayer.Add(keyAdorner); // do it! DragDropEffects result = DragDrop.DoDragDrop(key.keyframeControl, key, DragDropEffects.Copy | DragDropEffects.Move); if (result.HasFlag(DragDropEffects.Move)) { Console.Beep(2000, 50); } else { Console.Beep(600, 50); Console.Beep(600, 50); } // clean up adLayer.Remove(keyAdorner); currentSlide.keys.UnDimAll(); currentSlide.keys.ClearHighlightAll(); } } }
private void itemsListView_ItemDrag(object sender, ItemDragEventArgs e) { if (!Locked) { List <IRun> items = new List <IRun>(); foreach (ListViewItem listViewItem in itemsListView.SelectedItems) { IRun item = listViewItem.Tag as IRun; if (item != null) { items.Add(item); } } if (items.Count > 0) { DataObject data = new DataObject(); if (items.Count == 1) { data.SetData(HeuristicLab.Common.Constants.DragDropDataFormat, items[0]); } else { data.SetData(HeuristicLab.Common.Constants.DragDropDataFormat, items); } if (Content.IsReadOnly || ReadOnly) { DoDragDrop(data, DragDropEffects.Copy | DragDropEffects.Link); } else { DragDropEffects result = DoDragDrop(data, DragDropEffects.Copy | DragDropEffects.Link | DragDropEffects.Move); if (result.HasFlag(DragDropEffects.Move)) { foreach (IRun item in items) { Content.Remove(item); } } } } } }
/// <summary> /// Converts .NET drag drop effects to CEF Drag Operations /// </summary>s private static DragOperationsMask GetDragOperationsMask(DragDropEffects dragDropEffects) { var operations = DragOperationsMask.None; if (dragDropEffects.HasFlag(DragDropEffects.All)) { operations |= DragOperationsMask.Every; } if (dragDropEffects.HasFlag(DragDropEffects.Copy)) { operations |= DragOperationsMask.Copy; } if (dragDropEffects.HasFlag(DragDropEffects.Move)) { operations |= DragOperationsMask.Move; } if (dragDropEffects.HasFlag(DragDropEffects.Link)) { operations |= DragOperationsMask.Link; } return operations; }
public static void ConvertDragDropEffectToCopyMove(DragDropEffects effects, out bool copy, out bool move) { copy = effects.HasFlag(DragDropEffects.Copy); move = effects.HasFlag(DragDropEffects.Move); }