Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 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
     });
 }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
            }
        }
Esempio n. 7
0
 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);
 }
Esempio n. 8
0
 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;
 }