private void SwagItemsControl_Export(object sender, RoutedEventArgs e) { SwagOptionControl soc = (SwagOptionControl)e.OriginalSource; SwagOption opt = (SwagOption)soc.OptionCollection; SwagItemsControlHelper.ExportDataToFile <SwagOption>(opt); }
private Boolean CheckIfValidDrop(TreeViewItemDropEventArgs tviea) { SwagOption targetOpt = (SwagOption)tviea.TargetItem.DataContext; SwagOption droppedOpt = (SwagOption)tviea.DroppedItem.DataContext; Boolean valid = true; MoveType moveType = GetMoveType(tviea); SwagOption tempOpt = targetOpt.Parent; while (valid && tempOpt != null) { if (droppedOpt == tempOpt) //Don't drop within own descendants { valid = false; break; } tempOpt = tempOpt.Parent; } if (!valid) { tviea.DragEventArgs.Effects = DragDropEffects.None; tviea.DragEventArgs.Handled = true; } return(valid); }
private void SwagItemsControl_Copy(object sender, RoutedEventArgs e) { SwagOptionControl soc = (SwagOptionControl)e.OriginalSource; SwagOption opt = (SwagOption)soc.OptionCollection; SwagItemsControlHelper.SetClipBoardData <SwagOption>(opt); }
private void SwagItemsControl_Add(object sender, RoutedEventArgs e) { FrameworkElement fe = (FrameworkElement)e.OriginalSource; ICollection <SwagOption> col = (ICollection <SwagOption>)fe.DataContext; SwagOption opt = null; String tag = (fe.Tag ?? "").ToString(); switch (tag) { case "GROUP": opt = new SwagOptionGroup(); break; case "STRING": opt = new StringOption(); break; case "DATE": opt = new DateOption(); break; case "BOOL": opt = new BooleanOption(); break; } col.Add(opt); CollectionViewSource.GetDefaultView(col).Refresh(); }
private void SwagItemsControl_Import(object sender, RoutedEventArgs e) { SwagOption opt = SwagItemsControlHelper.GetDataFromFile <SwagOption>(); if (opt != null) { SwagOptionControl soc = (SwagOptionControl)e.OriginalSource; soc.OptionCollection = (SwagOptionGroup)opt; } }
private void SwagItemsControl_Paste(object sender, RoutedEventArgs e) { SwagOption opt = SwagItemsControlHelper.GetClipBoardData <SwagOption>(); if (opt != null) { SwagOptionControl soc = (SwagOptionControl)e.OriginalSource; soc.OptionCollection = (SwagOptionGroup)opt; } }
private void Description_Click(object sender, RoutedEventArgs e) { FrameworkElement fe = (FrameworkElement)e.OriginalSource; SwagOption opt = (SwagOption)fe.DataContext; String description = UIHelper.StringInputDialog("Description", opt.Description); if (!String.IsNullOrEmpty(description)) { opt.Description = description; } }
private void SwagItemsControl_Remove(object sender, RoutedEventArgs e) { FrameworkElement fe = (FrameworkElement)e.OriginalSource; SwagOption opt = (SwagOption)fe.DataContext; opt.Parent.Children.Remove(opt); CollectionViewSource.GetDefaultView(opt.Parent.Children).Refresh(); if (opt.Parent == OptionCollection) { CollectionViewSource.GetDefaultView(OptionCollection).Refresh(); } }
private void SwagItemsControl_TreeViewItemDrop(object sender, RoutedEventArgs e) { TreeViewItemDropEventArgs tviea = (TreeViewItemDropEventArgs)e; tviea.TargetItem.BorderThickness = new Thickness(0, 0, 0, 0); if (!CheckIfValidDrop(tviea)) //Drops are still possible because TreeViewItemDropPreview can be skipped { return; } MoveType moveType = GetMoveType(tviea); SwagOption targetOpt = (SwagOption)tviea.TargetItem.DataContext; SwagOption droppedOpt = (SwagOption)tviea.DroppedItem.DataContext; SwagOptionGroup originalDroppedParent = (SwagOptionGroup)droppedOpt.Parent; Boolean sameParent = originalDroppedParent == targetOpt.Parent; Int32 originalDroppedSequence = droppedOpt.Sequence, currentDroppedSequence = droppedOpt.Sequence, targetSequence = targetOpt.Sequence, delta = targetSequence - originalDroppedSequence; switch (moveType) { case MoveType.Above: case MoveType.Below: if (!sameParent) { originalDroppedParent.Children.Remove(droppedOpt); droppedOpt.Sequence = -1; //reset sequence targetOpt.Parent.Children.Add(droppedOpt); currentDroppedSequence = droppedOpt.Sequence; delta = targetSequence - currentDroppedSequence; } switch (moveType) { case MoveType.Above: if (delta != 0) { foreach (SwagOption sibling in targetOpt.Parent.Children) { if (sibling.Sequence >= Math.Min(currentDroppedSequence, targetSequence) && sibling.Sequence < Math.Max(currentDroppedSequence, targetSequence)) { sibling.Sequence = (sibling.Sequence + (delta > 0 ? -1 : 1)); } } droppedOpt.Sequence = targetSequence + (delta > 0 ? -1 : 0); if (targetOpt.Parent == null) { CollectionViewSource.GetDefaultView(OptionCollection).Refresh(); } else { CollectionViewSource.GetDefaultView(targetOpt.Parent.Children).Refresh(); } } break; case MoveType.Below: if (delta != 0) { foreach (SwagOption sibling in targetOpt.Parent.Children) { if (sibling.Sequence > Math.Min(currentDroppedSequence, targetSequence) && sibling.Sequence <= Math.Max(currentDroppedSequence, targetSequence)) { sibling.Sequence = (sibling.Sequence + (delta > 0 ? -1 : 1)); } } droppedOpt.Sequence = targetSequence + (delta > 0 ? 0 : 1); if (targetOpt.Parent == null) { CollectionViewSource.GetDefaultView(OptionCollection).Refresh(); } else { CollectionViewSource.GetDefaultView(targetOpt.Parent.Children).Refresh(); } } break; } break; case MoveType.Into: if (tviea.TargetItem.DataContext is SwagOptionGroup grp) { originalDroppedParent.Children.Remove(droppedOpt); droppedOpt.Sequence = -1; //reset sequence grp.Children.Add(droppedOpt); } break; } }