public void RemoveEventTypesTags_DestinationButton_ActionLinksRemoved() { bool removed = false; var sourceTag = (dashboardVM.ViewModels [0].Model as AnalysisEventButton).AnalysisEventType. Tags.FirstOrDefault(); var destTag = (dashboardVM.ViewModels [1].Model as AnalysisEventButton).AnalysisEventType. Tags.FirstOrDefault(); var link = CreateActionLink(dashboardVM.ViewModels [0].Model, dashboardVM.ViewModels [1].Model, sourceTag, destTag); ActionLinkVM actionLinkVM = new ActionLinkVM(); actionLinkVM.Model = link; actionLinkVM.SourceButton = dashboardVM.ViewModels [0]; actionLinkVM.DestinationButton = dashboardVM.ViewModels [1]; dashboardVM.ViewModels [0].ActionLinks.ViewModels.Add(actionLinkVM); dashboardVM.ViewModels [0].ActionLinks.GetNotifyCollection().CollectionChanged += (sender, e) => { if (e.Action == NotifyCollectionChangedAction.Remove) { if ((e.OldItems [0] as ActionLinkVM).Model == link) { removed = true; } } }; var vmWithLink = dashboardVM.ViewModels [0]; var vmTagsRemoved = dashboardVM.ViewModels [1]; (vmTagsRemoved.Model as AnalysisEventButton).AnalysisEventType.Tags.RemoveAt(0); Assert.IsTrue(removed); Assert.IsFalse(vmWithLink.ActionLinks.ViewModels.Any()); CollectionAssert.Contains(dashboardVM.ViewModels, vmWithLink); CollectionAssert.Contains(dashboardVM.ViewModels, vmTagsRemoved); }
public void RemoveDashboardButton_DestinationButton_ActionLinkRemoved() { bool removed = false; var link = CreateActionLink(dashboardVM.ViewModels [0].Model, dashboardVM.ViewModels [1].Model); ActionLinkVM actionLinkVM = new ActionLinkVM(); actionLinkVM.Model = link; actionLinkVM.SourceButton = dashboardVM.ViewModels [0]; actionLinkVM.DestinationButton = dashboardVM.ViewModels [1]; dashboardVM.ViewModels [0].ActionLinks.ViewModels.Add(actionLinkVM); dashboardVM.ViewModels [0].ActionLinks.GetNotifyCollection().CollectionChanged += (sender, e) => { if (e.Action == NotifyCollectionChangedAction.Remove) { if ((e.OldItems [0] as ActionLinkVM).Model == link) { removed = true; } } }; var vmWithLink = dashboardVM.ViewModels [0]; var vmRemoved = dashboardVM.ViewModels [1]; dashboardVM.DeleteButton.Execute(vmRemoved); Assert.IsTrue(removed); Assert.IsFalse(vmWithLink.ActionLinks.ViewModels.Any()); CollectionAssert.DoesNotContain(dashboardVM.ViewModels, vmRemoved); }
void HandleActionLinkCreatedEvent(ActionLinkVM actionLink) { // if (template.HasCircularDependencies ()) { // Config.GUIToolkit.ErrorMessage (Catalog.GetString ( // "This linking option is not valid: infinite loop.")); // RemoveLink (actionLink, true); // } HandleActionLinksSelectedEvent(new List <ActionLinkVM> { actionLink }); }
protected override void StopMove(bool moved) { Selection sel = Selections.FirstOrDefault(); if (movingLink != null) { if (destAnchor != null) { ActionLinkVM link = movingLink.Link; link.DestinationButton = destAnchor.Button.ButtonVM; link.DestinationTags.ViewModels.AddRange(destAnchor.Tags); link.SourceButton.ActionLinks.ViewModels.Add(link); movingLink.Destination = destAnchor; destAnchor.Highlighted = false; if (ActionLinkCreatedEvent != null) { ActionLinkCreatedEvent(link); } linksDict.Add(link, movingLink); } else { RemoveObject(movingLink); widget.ReDraw(); } ClearSelection(); movingLink = null; destAnchor = null; return; } if (sel != null && moved) { if (sel.Drawable is DashboardButtonView) { /* Round the position of the button to match a corner in the grid */ int i = VASDrawing.Constants.CATEGORY_TPL_GRID; DashboardButton tb = (sel.Drawable as DashboardButtonView).Button; tb.Position.X = VASDrawing.Utils.Round(tb.Position.X, i); tb.Position.Y = VASDrawing.Utils.Round(tb.Position.Y, i); tb.Width = (int)VASDrawing.Utils.Round(tb.Width, i); tb.Height = (int)VASDrawing.Utils.Round(tb.Height, i); (sel.Drawable as DashboardButtonView).ResetDrawArea(); widget.ReDraw(); } } base.StopMove(moved); }
public void Duplicate_EvenTypeButton_DestinationButtonsSameReference() { var link = CreateActionLink(dashboardVM.ViewModels [0].Model, dashboardVM.ViewModels [1].Model); ActionLinkVM actionLinkVM = new ActionLinkVM(); actionLinkVM.Model = link; actionLinkVM.SourceButton = dashboardVM.ViewModels [0]; actionLinkVM.DestinationButton = dashboardVM.ViewModels [1]; dashboardVM.ViewModels [0].ActionLinks.ViewModels.Add(actionLinkVM); dashboardVM.DuplicateButton.Execute(dashboardVM.ViewModels [0]); var duplicatedButton = dashboardVM.ViewModels.Last(); Assert.AreSame(dashboardVM.ViewModels[1].Model, duplicatedButton.Model.ActionLinks[0].DestinationButton); Assert.AreSame(duplicatedButton.Model, duplicatedButton.Model.ActionLinks[0].SourceButton); }
protected async Task HandleRemoveLink(DeleteEvent <ActionLinkVM> evt) { ActionLinkVM link = evt.Object; if (link == null) { return; } string msg = string.Format("{0} {1} ?", Catalog.GetString("Do you want to delete: "), link.Name); if (await App.Current.Dialogs.QuestionMessage(msg, null, this)) { link.SourceButton.ActionLinks.ViewModels.Remove(link); } }
protected override void StartMove(Selection sel) { if (sel != null && sel.Drawable is LinkAnchorView) { LinkAnchorView anchor = sel.Drawable as LinkAnchorView; ActionLinkVM link = new ActionLinkVM { Model = new ActionLink { SourceTags = new RangeObservableCollection <Tag> (anchor.Tags.Select(t => t.Model)) }, SourceButton = anchor.Button.ButtonVM }; movingLink = new ActionLinkView(anchor, null, link); AddObject(movingLink); ClearSelection(); UpdateSelection(new Selection(movingLink, SelectionPosition.LineStop, 0), false); } base.StartMove(sel); }
public ActionLinkView(LinkAnchorView source, LinkAnchorView destination, ActionLinkVM link) { Link = link; Source = source; Destination = destination; if (destination == null) { stop = source.Out; } else { stop = destination.In; } line = new Line(); line.Start = source.Out; line.Stop = stop; }