示例#1
0
 private void OnMouseMovePin(object sender, Point mouseLocation)
 {
     if (!IsDraggingPin)
     {
         Vector delta = mouseLocation - m_dragStartPoint;
         if (DragDropHelpers.IsMovementBiggerThreshold(delta))
         {
             StartDraggingPin();
         }
     }
     else
     {
         bool bPinHit = ((NodeGraphView)Content).HitTestConnection(mouseLocation, out CPinViewModel hitPin, out Point canvasHit);
         PreviewConnection.EndPoint = canvasHit;
         if (bPinHit)
         {
             PreviewConnection.IsValidDrop  = hitPin.CanConnect(DraggedPin, out string errorMessage);
             PreviewConnection.ErrorMessage = errorMessage;
             Mouse.OverrideCursor           = PreviewConnection.IsValidDrop ? Cursors.Hand : Cursors.No;
             PreviewConnection.DropTarget   = hitPin;
         }
         else
         {
             PreviewConnection.DropTarget   = null;
             PreviewConnection.IsValidDrop  = true;
             PreviewConnection.ErrorMessage = "";
             Mouse.OverrideCursor           = null;
         }
     }
 }
示例#2
0
 void IDropTarget.DragOver(IDropInfo dropInfo)
 {
     DragDropHelpers.DragOver(dropInfo, (item, sourceType, targetType) =>
     {
         return(sourceType == typeof(TECIOModule));
     });
 }
        public void DragDropHelpers_PreventDrop_DropResourceOntoItself_ReturnsFalse()
        {
            //------------Setup for test--------------------------
            AppUsageStats.LocalHost = "http://localhost";
            var resourceId = Guid.NewGuid();
            var data       = new ExplorerItemViewModel(new Mock <IServer>().Object, new Mock <IExplorerTreeItem>().Object,
                                                       a => { }, new Mock <IShellViewModel>().Object, new Mock <IPopupController>().Object)
            {
                ResourceType = "WorkflowService",
                ResourceId   = resourceId,
                CanExecute   = true,
                CanView      = true,
                IsService    = true,
                IsSource     = false
            };

            var dataContext   = new Mock <IWorkflowDesignerViewModel>();
            var resourceModel = new Mock <IContextualResourceModel>();

            resourceModel.Setup(model => model.ID).Returns(resourceId);
            var differentEnvironment = new Mock <IServer>();

            differentEnvironment.Setup(model => model.EnvironmentID).Returns(Guid.Empty);
            dataContext.Setup(model => model.Server).Returns(differentEnvironment.Object);
            dataContext.Setup(model => model.ResourceModel).Returns(resourceModel.Object);
            differentEnvironment.Setup(a => a.IsLocalHost).Returns(false);
            var dragDropHelpers = new DragDropHelpers(GetMockWorkflowDesignerView(dataContext.Object));

            CustomContainer.Register(new Mock <IPopupController>().Object);
            //------------Execute Test---------------------------
            var canDoDrop = dragDropHelpers.PreventDrop(GetMockDataObjectWithFormatData(new[] { "ExplorerItemViewModel" }, data));

            //------------Assert Results-------------------------
            Assert.IsTrue(canDoDrop);
        }
示例#4
0
        public void DragOver(IDropInfo dropInfo)
        {
            if (SelectedController == null)
            {
                return;
            }
            List <IConnectable> connectables = new List <IConnectable>();

            if (dropInfo.Data is FilteredConnectablesGroup group)
            {
                if (group.Scope == SelectedController)
                {
                    return;
                }
                connectables = ConnectionHelper.GetConnectables(group.Scope, filterPredicate);
            }
            else if (dropInfo.Data is IEnumerable dropList && dropList.GetItemType() == typeof(FilteredConnectablesGroup))
            {
                foreach (FilteredConnectablesGroup item in dropList)
                {
                    connectables.AddRange(ConnectionHelper.GetConnectables(item.Scope, filterPredicate));
                }
            }
            if (ConnectionHelper.CanConnectToController(connectables, SelectedController))
            {
                DragDropHelpers.SetDragAdorners(dropInfo);
            }
        }
示例#5
0
 public void DragOver(IDropInfo dropInfo)
 {
     if (dropInfo.Data is TECProtocol && DragDropHelpers.TargetCollectionIsType(dropInfo, typeof(TECIO)))
     {
         DragDropHelpers.SetDragAdorners(dropInfo);
     }
 }
示例#6
0
 public void DragOver(IDropInfo dropInfo)
 {
     DragDropHelpers.DragOver(dropInfo,
                              (item, sourceType, targetType) =>
     {
         return(sourceType == targetType);
     });
 }
示例#7
0
        public void Drop(IDropInfo dropInfo)
        {
            object drop <T>(T item)
            {
                return(item);
            }

            DragDropHelpers.Drop(dropInfo, drop);
        }
            /// <inheritdoc />
            public override bool AcceptDrop(NSOutlineView outlineView, NSDraggingInfo info, NSObject item, nint index)
            {
                DebugDragDropPrint("***** OutlineView.AcceptDrop, index: " + index);
                var  dropLocationTreeNode = item as NSTreeNode;
                bool acceptedDrop         = dropLocationTreeNode != null;
                var  viewModel            = outlineView.GetInheritedValue <MenuLayoutViewModel>(IFakeDependencyObjectHelpers.DataContextPropertyName);
                IEnumerable <FileNodeViewModel> draggedItems = null;

                if (acceptedDrop)
                {
                    var newParent  = dropLocationTreeNode.GetRepresentedObject() as FolderViewModel;
                    var pasteboard = info.DraggingPasteboard;
                    acceptedDrop = newParent != null;
                    if (acceptedDrop && pasteboard.CanReadItemWithDataConformingToTypes(MenuLayoutPasteboardDataTypeArray))
                    {
                        draggedItems = DragDropHelpers.GetDataForType <IEnumerable <FileNodeViewModel> >(pasteboard, MenuLayoutPasteboardDataTypeArray);
                        if (acceptedDrop)
                        {
                            acceptedDrop = newParent.ShouldAcceptDraggedItems(draggedItems.Select(draggedItem => draggedItem.Model));
                        }
                        if (acceptedDrop)
                        {
                            var firstDraggedItem = draggedItems.First();
                            var parent           = firstDraggedItem.Parent;
                            var parentViewModel  = viewModel.FindViewModelForModel(parent);
                            if (parentViewModel == newParent)
                            {
                                var currentIndex = parent.IndexOfChild(firstDraggedItem.Model);
                                if (currentIndex < index)
                                {
                                    --index;
                                }
                            }
                            acceptedDrop = newParent.MoveItems(viewModel, newParent, (int)index, draggedItems);
                        }
                    }
                    else if (acceptedDrop && pasteboard.CanReadItemWithDataConformingToTypes(ProgramDescriptionPasteboardDataTypeArray))
                    {
                        var droppedItems = DragDropHelpers.GetDataForType <IEnumerable <ProgramDescriptionViewModel> >(pasteboard, ProgramDescriptionPasteboardDataTypeArray).Select(draggedItem => draggedItem.Model);
                        newParent.AddItems(viewModel, (int)index, droppedItems);
                    }
                    else
                    {
                        acceptedDrop = false;
                    }
                    DebugDragDropPrint("*** OutlineView drop into: " + newParent);
                }
                if (acceptedDrop)
                {
                    TreeData.RearrangeObjects();
                    if ((draggedItems != null) && draggedItems.Any())
                    {
                        viewModel.CurrentSelection = draggedItems.FirstOrDefault(i => i.Model != null);
                    }
                }
                return(acceptedDrop);
            }
        public void DragDropHelpers_PreventDrop_NoFormats_ReturnsFalse()
        {
            //------------Setup for test--------------------------
            var dragDropHelpers = new DragDropHelpers(GetMockWorkflowDesignerView());
            //------------Execute Test---------------------------
            var canDoDrop = dragDropHelpers.PreventDrop(GetMockDataObjectNoFormats());

            //------------Assert Results-------------------------
            Assert.IsFalse(canDoDrop);
        }
        public void DragDropHelpers_PreventDrop_FormatsReturnsNotResourceTreeViewModelOrWorkflowItemTypeNameFormat_ReturnsFalse()
        {
            //------------Setup for test--------------------------
            var dragDropHelpers = new DragDropHelpers(GetMockWorkflowDesignerView());
            //------------Execute Test---------------------------
            var canDoDrop = dragDropHelpers.PreventDrop(GetMockDataObjectWithFormat(new[] { "SomeText" }));

            //------------Assert Results-------------------------
            Assert.IsFalse(canDoDrop);
        }
        public void DragDropHelpers_PreventDrop_GetDataReturnsNull_ReturnsFalse()
        {
            //------------Setup for test--------------------------
            var dragDropHelpers = new DragDropHelpers(GetMockWorkflowDesignerView());
            //------------Execute Test---------------------------
            var canDoDrop = dragDropHelpers.PreventDrop(GetMockDataObjectWithFormatNoData(new[] { "ExplorerItemViewModel", "SomeText" }));

            //------------Assert Results-------------------------
            Assert.IsFalse(canDoDrop);
        }
示例#12
0
 public void Drop(IDropInfo dropInfo)
 {
     if (dropInfo.Data is TECSystem)
     {
         DragDropHelpers.SystemToTypicalDrop(dropInfo, Bid);
     }
     else
     {
         DragDropHelpers.StandardDrop(dropInfo, Bid);
     }
 }
示例#13
0
 void IDropTarget.Drop(IDropInfo dropInfo)
 {
     if (dropInfo.Data is TECTypical typ)
     {
         BoxItems.Add(new TECSystem(typ as TECSystem));
     }
     else
     {
         DragDropHelpers.StandardDrop(dropInfo, manager);
     }
 }
        private string GetFilter()
        {
            List <string> filters    = new List <string>();
            var           extensions = DragDropHelpers.GetSafeExtensions(this.Extension);

            extensions.ForEach(ext =>
            {
                filters.Add(string.Format(CultureInfo.CurrentCulture, Resources.CreateElementFromPickedFileCommand_FilterFormat, ext));
            });
            filters.Add(Resources.CreateElementFromPickedFileCommand_AllFilesFilter);

            return(string.Join(@"|", filters));
        }
        public void DragDropHelpers_PreventDrop_GetDataReturnsExplorerItemModelSource_ReturnsFalse()
        {
            //------------Setup for test--------------------------
            var dragDropHelpers = new DragDropHelpers(GetMockWorkflowDesignerView());

            var data = new ExplorerItemModel {
                Permissions = Permissions.Execute, ResourceType = Common.Interfaces.Data.ResourceType.DbSource
            };
            //------------Execute Test---------------------------
            bool canDoDrop = dragDropHelpers.PreventDrop(GetMockDataObjectWithFormatData(new[] { "ExplorerItemModel" }, data));

            //------------Assert Results-------------------------
            Assert.IsTrue(canDoDrop);
        }
        public void DragDropHelpers_PreventDrop_GetDataReturnsExplorerItemModelSource_ReturnsFalse()
        {
            //------------Setup for test--------------------------
            var dragDropHelpers = new DragDropHelpers(GetMockWorkflowDesignerView());

            var data = new ExplorerItemViewModel(new Mock <IServer>().Object, new Mock <IExplorerTreeItem>().Object, a => { }, new Mock <IShellViewModel>().Object, new Mock <IPopupController>().Object);

            data.ResourceType = "DbSource";
            //------------Execute Test---------------------------
            var canDoDrop = dragDropHelpers.PreventDrop(GetMockDataObjectWithFormatData(new[] { "ExplorerItemViewModel" }, data));

            //------------Assert Results-------------------------
            Assert.IsTrue(canDoDrop);
        }
示例#17
0
        public void DragOver(IDropInfo dropInfo)
        {
            DragDropHelpers.DragOver(dropInfo, dropCondition);

            bool dropCondition(object item, Type sourceType, Type targetType)
            {
                bool correctSource = sourceType == typeof(TECEquipment) || sourceType == typeof(TECProposalItem);
                bool correctTarget = dropInfo.TargetCollection is IList <TECEquipment> ||
                                     targetType == typeof(TECProposalItem) ||
                                     System.ProposalItems.Any(x => x.ContainingScope == dropInfo.TargetCollection);

                return(correctSource && correctTarget);
            }
        }
            /// <inheritdoc />
            public override bool OutlineViewwriteItemstoPasteboard(NSOutlineView outlineView, NSArray items, NSPasteboard pboard)
            {
                DebugDragDropPrint("***** OutlineView.OutlineViewwriteItemstoPasteboard");
#if DEBUG_DRAGDROP
                var nodes = NSArray.FromArray <NSTreeNode>(items);
#endif // DEBUG_DRAGDROP
                var draggedItems = NSArray.FromArray <NSTreeNode>(items).Select(node => node.RepresentedObject as FileNodeViewModel);
                var startDrag    = draggedItems.Any();
                if (startDrag)
                {
                    DragDropHelpers.PreparePasteboard(pboard, MenuLayoutViewModel.DragDataFormat, new NSDataWrapper(draggedItems));
                }
                return(startDrag);
            }
        private void OnMouseMove(object sender, MouseEventArgs e)
        {
            if (m_draggedData == null || m_draggedItem == null || e.LeftButton != MouseButtonState.Pressed)
            {
                return;
            }

            Vector delta = e.GetPosition(null) - m_dragStartPos;

            if (DragDropHelpers.IsMovementBiggerThreshold(delta))
            {
                //DragDrop.DoDragDrop(m_draggedItem, m_draggedData, DragDropEffects.Link | DragDropEffects.Scroll);
            }
        }
        public void DragDropHelpers_PreventDrop_FormatOfWorkflowItemTypeNameFormat_ReturnsFalse()
        {
            //------------Setup for test--------------------------
            object dataContext     = new object();
            var    dragDropHelpers = new DragDropHelpers(GetMockWorkflowDesignerView(dataContext));

            var data = new ExplorerItemModel {
                Permissions = Permissions.Execute, ResourceType = Common.Interfaces.Data.ResourceType.DbService
            };
            //------------Execute Test---------------------------
            bool canDoDrop = dragDropHelpers.PreventDrop(GetMockDataObjectWithFormatData(new[] { "WorkflowItemTypeNameFormat" }, data));

            //------------Assert Results-------------------------
            Assert.IsFalse(canDoDrop);
        }
示例#21
0
        public void DragDropHelpers_PreventDrop_GetDataReturnsExplorerItemModelSource_ReturnsFalse()
        {
            //------------Setup for test--------------------------
            var dragDropHelpers = new DragDropHelpers(GetMockWorkflowDesignerView());

            var data = new ExplorerItemModel(new Mock <IConnectControlSingleton>().Object, new Mock <IStudioResourceRepository>().Object)
            {
                Permissions = Permissions.Execute, ResourceType = ResourceType.DbSource
            };
            //------------Execute Test---------------------------
            bool canDoDrop = dragDropHelpers.PreventDrop(GetMockDataObjectWithFormatData(new[] { "ExplorerItemModel" }, data));

            //------------Assert Results-------------------------
            Assert.IsTrue(canDoDrop);
        }
        public void DragDropHelpers_PreventDrop_UserIsNotAuthorized_True()
        {
            //------------Setup for test--------------------------
            var data = new ExplorerItemViewModel(new Mock <IServer>().Object, new Mock <IExplorerTreeItem>().Object, a => { }, new Mock <IShellViewModel>().Object, new Mock <IPopupController>().Object);

            data.ResourceType = "WorkflowService";
            var dataContext     = new object();
            var dragDropHelpers = new DragDropHelpers(GetMockWorkflowDesignerView(dataContext));

            //------------Execute Test---------------------------
            var canDoDrop = dragDropHelpers.PreventDrop(GetMockDataObjectWithFormatData(new[] { "ExplorerItemViewModel" }, data));

            //------------Assert Results-------------------------
            Assert.IsTrue(canDoDrop);
        }
示例#23
0
        public QuotesVM(TECBid bid, ChangeWatcher watcher)
        {
            watcher.Changed  += bidChanged;
            NeedQuoteHardware = new ObservableCollection <TECHardware>(bid
                                                                       .GetAll <TECSubScope>()
                                                                       .SelectMany(ss => ss.Devices
                                                                                   .Where(x => x is TECHardware ware && ware.RequireQuote && ware.QuotedPrice == -1))
                                                                       .Distinct()
                                                                       .OfType <TECHardware>());
            QuotedHardware = new ObservableCollection <TECHardware>(bid.Catalogs.GetAll <TECHardware>().Where(x => x.QuotedPrice != -1).Distinct());
            QuotedHardware.CollectionChanged += quotedHardware_CollectionChanged;
            var dropHandler = new EmptyDropTarget();

            dropHandler.DragOverAction = info =>
            {
                DragDropHelpers.DragOver(info, (item, sourceType, targetType) =>
                {
                    var hardware = item as TECHardware;
                    return(hardware != null && hardware.QuotedPrice == -1);
                });
            };
            dropHandler.DropAction = info =>
            {
                DragDropHelpers.Drop(info, item =>
                {
                    var hardware         = item as TECHardware;
                    hardware.QuotedPrice = hardware.Cost;
                    return(hardware);
                });
            };
            QuoteDropHandler = dropHandler;
            CollectionsVM    = new ScopeCollectionsTabVM(bid);
            CollectionsVM.OmitCollections(new List <AllSearchableObjects>()
            {
                AllSearchableObjects.System,
                AllSearchableObjects.Equipment,
                AllSearchableObjects.SubScope,
                AllSearchableObjects.Controllers,
                AllSearchableObjects.Panels,
                AllSearchableObjects.MiscCosts,
                AllSearchableObjects.MiscWiring,
                AllSearchableObjects.Tags,
                AllSearchableObjects.AssociatedCosts,
                AllSearchableObjects.Wires,
                AllSearchableObjects.Conduits,
                AllSearchableObjects.Protocols
            });
        }
        public void DragDropHelpers_PreventDrop_UserIsNotAuthorized_True()
        {
            //------------Setup for test--------------------------
            var data = new ExplorerItemModel {
                Permissions = Permissions.View, ResourceType = Common.Interfaces.Data.ResourceType.WorkflowService
            };

            var dataContext     = new object();
            var dragDropHelpers = new DragDropHelpers(GetMockWorkflowDesignerView(dataContext));

            //------------Execute Test---------------------------
            var canDoDrop = dragDropHelpers.PreventDrop(GetMockDataObjectWithFormatData(new[] { "ExplorerItemModel" }, data));

            //------------Assert Results-------------------------
            Assert.IsTrue(canDoDrop);
        }
 public void DragOver(IDropInfo dropInfo)
 {
     DragDropHelpers.StandardDragOver(dropInfo,
                                      type =>
     {
         if (type == typeof(TECMisc) && dropInfo.Data is TECCost)
         {
             return(true);
         }
         else
         {
             return(false);
         }
     }
                                      );
 }
        public void DragDropHelpers_PreventDrop_GetDataReturnsNonExplorerItemModel_ReturnsFalse()
        {
            //------------Setup for test--------------------------
            var data                 = new Object();
            var dataContext          = new Mock <IWorkflowDesignerViewModel>();
            var differentEnvironment = new Mock <IServer>();

            differentEnvironment.Setup(model => model.EnvironmentID).Returns(Guid.Empty);
            dataContext.Setup(model => model.Server).Returns(differentEnvironment.Object);
            var dragDropHelpers = new DragDropHelpers(GetMockWorkflowDesignerView(dataContext.Object));
            //------------Execute Test---------------------------
            var canDoDrop = dragDropHelpers.PreventDrop(GetMockDataObjectWithFormatData(new[] { "ExplorerItemViewModel" }, data));

            //------------Assert Results-------------------------
            Assert.IsTrue(canDoDrop);
        }
        public void DragDropHelpers_PreventDrop_GetDataReturnsExplorerItemModelNotWorkflowServiceDataContextNotViewModel_ReturnsTrue()
        {
            //------------Setup for test--------------------------
            object dataContext     = new object();
            var    dragDropHelpers = new DragDropHelpers(GetMockWorkflowDesignerView(dataContext));

            var data = new ExplorerItemModel(new Mock <IConnectControlSingleton>().Object, new Mock <IStudioResourceRepository>().Object)
            {
                Permissions = Permissions.Execute, ResourceType = Common.Interfaces.Data.ResourceType.DbService
            };
            //------------Execute Test---------------------------
            bool canDoDrop = dragDropHelpers.PreventDrop(GetMockDataObjectWithFormatData(new[] { "ExplorerItemModel" }, data));

            //------------Assert Results-------------------------
            Assert.IsTrue(canDoDrop);
        }
示例#28
0
        public void DragDropHelpers_PreventDrop_UserIsNotAuthorized_True()
        {
            //------------Setup for test--------------------------
            var data = new ExplorerItemModel(new Mock <IConnectControlSingleton>().Object, new Mock <IStudioResourceRepository>().Object)
            {
                Permissions = Permissions.View, ResourceType = ResourceType.WorkflowService
            };

            var dataContext     = new object();
            var dragDropHelpers = new DragDropHelpers(GetMockWorkflowDesignerView(dataContext));

            //------------Execute Test---------------------------
            var canDoDrop = dragDropHelpers.PreventDrop(GetMockDataObjectWithFormatData(new[] { "ExplorerItemModel" }, data));

            //------------Assert Results-------------------------
            Assert.IsTrue(canDoDrop);
        }
            /// <inheritdoc/>
            public override void DraggingSessionWillBegin(NSTableView tableView, NSDraggingSession draggingSession, CGPoint willBeginAtScreenPoint, NSIndexSet rowIndexes)
            {
                DebugDragDrop("**** ROMLIST DRAG WILL BEGIN");
                ////var viewModel = tableView.GetInheritedValue(IFakeDependencyObjectHelpers.DataContextPropertyName) as RomListViewModel;
                var draggedItems = new List <ProgramDescriptionViewModel>();
                var items        = RomListData.ArrangedObjects();

                foreach (var index in rowIndexes)
                {
                    draggedItems.Add(items[(int)index] as ProgramDescriptionViewModel);
                }
                if (draggedItems.Any())
                {
                    var pasteboard = draggingSession.DraggingPasteboard;
                    DragDropHelpers.PreparePasteboard(pasteboard, ProgramDescriptionViewModel.DragDataFormat, new NSDataWrapper(draggedItems));
                }
            }
        private void OnPreviewMouseMove(object sender, MouseEventArgs e)
        {
            if (e.LeftButton != MouseButtonState.Pressed || m_draggedData == null || m_draggedElement == null)
            {
                return;
            }

            // Get the current mouse position
            Point  mousePos = e.GetPosition(null);
            Vector diff     = m_sceneComponentDragStartPoint - mousePos;

            if (DragDropHelpers.IsMovementBiggerThreshold(diff))
            {
                // Initialize the drag & drop operation
                DragDrop.DoDragDrop(m_draggedElement, m_draggedData, DragDropEffects.Move | DragDropEffects.Link | DragDropEffects.Copy);
            }
        }