Пример #1
0
 protected override void OnContainedActivitiesChanged(ActivityCollectionChangeEventArgs listChangeArgs)
 {
     if (base.ActiveDesigner == this)
     {
         if (((listChangeArgs.Action == ActivityCollectionChangeAction.Add) && (listChangeArgs.AddedItems.Count > 0)) && !Helpers.IsAlternateFlowActivity(listChangeArgs.AddedItems[0]))
         {
             System.Workflow.ComponentModel.Design.ItemInfo item = new System.Workflow.ComponentModel.Design.ItemInfo(listChangeArgs.AddedItems[0].GetHashCode());
             item.UserData[DesignerUserDataKeys.Activity] = listChangeArgs.AddedItems[0];
             if (listChangeArgs.Index < this.previewStrip.Items.Count)
             {
                 this.previewStrip.Items.Insert(listChangeArgs.Index, item);
             }
             else
             {
                 this.previewStrip.Items.Add(item);
             }
         }
         else if ((listChangeArgs.Action == ActivityCollectionChangeAction.Remove) && (listChangeArgs.RemovedItems.Count > 0))
         {
             int index = this.previewStrip.Items.IndexOf(new System.Workflow.ComponentModel.Design.ItemInfo(listChangeArgs.RemovedItems[0].GetHashCode()));
             if (index >= 0)
             {
                 this.previewStrip.Items.RemoveAt(index);
             }
         }
     }
     base.OnContainedActivitiesChanged(listChangeArgs);
 }
 protected override void OnContainedActivitiesChanging(ActivityCollectionChangeEventArgs listChangeArgs)
 {
     base.OnContainedActivitiesChanging(listChangeArgs);
     if (listChangeArgs.Action == ActivityCollectionChangeAction.Remove)
     {
         FreeformActivityDesigner connectorContainer = ConnectionManager.GetConnectorContainer(this);
         List <Connector>         list = new List <Connector>();
         for (ActivityDesigner designer2 = this; designer2 != null; designer2 = designer2.ParentDesigner)
         {
             FreeformActivityDesigner designer3 = designer2 as FreeformActivityDesigner;
             if ((designer3 != null) && (designer3.Connectors.Count > 0))
             {
                 foreach (Activity activity in listChangeArgs.RemovedItems)
                 {
                     ActivityDesigner designer = ActivityDesigner.GetDesigner(activity);
                     if (!connectorContainer.MovingActivities.Contains(designer))
                     {
                         foreach (Connector connector in designer3.Connectors)
                         {
                             if ((designer == connector.Source.AssociatedDesigner) || (designer == connector.Target.AssociatedDesigner))
                             {
                                 list.Add(connector);
                             }
                         }
                     }
                 }
             }
         }
         foreach (Connector connector2 in list)
         {
             connector2.ParentDesigner.RemoveConnector(connector2);
             ((IDisposable)connector2).Dispose();
         }
     }
 }
 protected override void OnContainedActivitiesChanging(ActivityCollectionChangeEventArgs listChangeArgs)
 {
     base.OnContainedActivitiesChanging(listChangeArgs);
     if ((listChangeArgs.Action == ActivityCollectionChangeAction.Remove) && (listChangeArgs.RemovedItems[0] != null))
     {
         ActivityDesigner activeDesigner = this.ActiveDesigner;
         if ((activeDesigner != null) && (listChangeArgs.RemovedItems[0] == activeDesigner.Activity))
         {
             this.ActiveView = this.ValidatedViews[0];
         }
         SecondaryViewProvider.OnViewRemoved(this, listChangeArgs.RemovedItems[0].GetType());
     }
 }
Пример #4
0
        private void OnComponentChanged(object sender, ComponentChangedEventArgs e)
        {
            ActivityCollectionChangeEventArgs changeEventArgs = e.OldValue as ActivityCollectionChangeEventArgs;

            if (changeEventArgs != null)
            {
                this.IsDirty = true;
            }
            else if (e.Member != null && e.Component is Activity)
            {
                WorkflowOutlineNode node = this.activityToNodeMapping[e.Component] as WorkflowOutlineNode;
                if (node != null && string.Equals(e.Member.Name, "Enabled", StringComparison.Ordinal))
                {
                    RefreshNode(node, true);
                }
            }
        }
        protected override void OnContainedActivitiesChanging(ActivityCollectionChangeEventArgs listChangeArgs)
        {
            base.OnContainedActivitiesChanging(listChangeArgs);

            if (listChangeArgs.Action == ActivityCollectionChangeAction.Remove && listChangeArgs.RemovedItems[0] != null)
            {
                ActivityDesigner activeDesigner = ActiveDesigner;
                if (activeDesigner != null && listChangeArgs.RemovedItems[0] == activeDesigner.Activity)
                    ActiveView = ValidatedViews[0];
                SecondaryViewProvider.OnViewRemoved(this, listChangeArgs.RemovedItems[0].GetType());
            }
        }
 private void OnActivityListChanged(object sender, ActivityCollectionChangeEventArgs e)
 {
     OnContainedActivitiesChanged(e);
 }
        /// <summary>
        /// Notifies that number of activities contained within the designers have changed
        /// </summary>
        /// <param name="listChangeArgs">ItemListChangeEventArgs containing information about what has changed</param>
        protected virtual void OnContainedActivitiesChanged(ActivityCollectionChangeEventArgs listChangeArgs)
        {
            if (listChangeArgs == null)
                throw new ArgumentNullException("listChangeArgs");

            // Update the status of all the designers
            foreach (ActivityDesigner activityDesigner in ContainedDesigners)
            {
                foreach (DesignerVerb designerVerb in ((IDesigner)activityDesigner).Verbs)
                {
                    int status = designerVerb.OleStatus;
                    status = 0;
                }
            }

            RefreshDesignerVerbs();

            //clear the list of activity designers (force to create the new list the next time it is requested)
            this.containedActivityDesigners = null;

            PerformLayout();
        }
 /// <summary>
 /// Notifies that number of activities contained within the designers are changing
 /// </summary>
 /// <param name="listChangeArgs">ActivityCollectionChangeEventArgs containing information about what is about to change</param>
 protected virtual void OnContainedActivitiesChanging(ActivityCollectionChangeEventArgs listChangeArgs)
 {
     if (listChangeArgs == null)
         throw new ArgumentNullException("listChangeArgs");
 }
        protected override void OnContainedActivitiesChanged(ActivityCollectionChangeEventArgs listChangeArgs)
        {
            if (ActiveDesigner == this)
            {
                if (listChangeArgs.Action == ActivityCollectionChangeAction.Add && listChangeArgs.AddedItems.Count > 0 && !Helpers.IsAlternateFlowActivity(listChangeArgs.AddedItems[0]))
                {
                    ItemInfo itemToAdd = new ItemInfo(listChangeArgs.AddedItems[0].GetHashCode());
                    itemToAdd.UserData[DesignerUserDataKeys.Activity] = listChangeArgs.AddedItems[0];
                    if (listChangeArgs.Index < this.previewStrip.Items.Count)
                        this.previewStrip.Items.Insert(listChangeArgs.Index, itemToAdd);
                    else
                        this.previewStrip.Items.Add(itemToAdd);
                }
                else if (listChangeArgs.Action == ActivityCollectionChangeAction.Remove && listChangeArgs.RemovedItems.Count > 0)
                {
                    int index = this.previewStrip.Items.IndexOf(new ItemInfo(listChangeArgs.RemovedItems[0].GetHashCode()));
                    if (index >= 0)
                        this.previewStrip.Items.RemoveAt(index);
                }
            }

            base.OnContainedActivitiesChanged(listChangeArgs);
        }
        //


        protected override void OnContainedActivitiesChanging(ActivityCollectionChangeEventArgs listChangeArgs)
        {
            base.OnContainedActivitiesChanging(listChangeArgs);

            if (listChangeArgs.Action == ActivityCollectionChangeAction.Remove)
            {
                FreeformActivityDesigner connectorContainer = ConnectionManager.GetConnectorContainer(this);
                List<Connector> connectorsToDelete = new List<Connector>();

                //check if the removed designer is being moved within the same container
                //in this case dont remove the connector...
                ActivityDesigner activityDesigner = this;
                while (activityDesigner != null)
                {
                    FreeformActivityDesigner freeFormDesigner = activityDesigner as FreeformActivityDesigner;
                    if (freeFormDesigner != null && freeFormDesigner.Connectors.Count > 0)
                    {
                        foreach (Activity activityToRemove in listChangeArgs.RemovedItems)
                        {
                            ActivityDesigner designerToRemove = ActivityDesigner.GetDesigner(activityToRemove);

                            //if the designer is being moved within the same container, ignore it
                            //otherwise remove all related connectors
                            if (!connectorContainer.MovingActivities.Contains(designerToRemove))
                            {
                                foreach (Connector connector in freeFormDesigner.Connectors)
                                {
                                    if (designerToRemove == connector.Source.AssociatedDesigner || designerToRemove == connector.Target.AssociatedDesigner)
                                        connectorsToDelete.Add(connector);
                                }
                            }
                        }
                    }

                    activityDesigner = activityDesigner.ParentDesigner;
                }

                foreach (Connector connectorToDelete in connectorsToDelete)
                {
                    connectorToDelete.ParentDesigner.RemoveConnector(connectorToDelete);
                    ((IDisposable)connectorToDelete).Dispose();
                }
            }
        }