コード例 #1
0
        public static CompileProject GetCompileProject(WorkflowEditorViewModel focusedWorkflowItem)
        {
            Contract.Requires(focusedWorkflowItem != null);
            Contract.Requires(focusedWorkflowItem.WorkflowDesigner != null);

            return GetCompileProject(focusedWorkflowItem.WorkflowDesigner);
        }
コード例 #2
0
 public ProjectExplorerViewModel(WorkflowEditorViewModel paramEditor)
 {
     if (paramEditor != null)
     {
         this.WorkflowEditor = paramEditor;
         this.WorkflowEditor.PropertyChanged += this.WorkflowDesignerChanged;
         this.Designer.Context.Items.Subscribe<Selection>(ActivityFocusedChanged);
     }
     else
         throw new Exception("Argument WorkflowEditor is null.");
     this.RefreshProjectExplorer();
 }
コード例 #3
0
ファイル: DesignerAddIn.cs プロジェクト: barbarossia/CWF
        public DesignerAddIn()
        {
            CreateIntellisense(cancellationToken);

            AppDomain.CurrentDomain.AssemblyResolve += ResolveAssembly;
            new DesignerMetadata().Register();
            WorkflowEditorVM = new WorkflowEditorViewModel(cancellationToken);
            WorkflowEditorVM.PropertyChanged += this.WorkflowEditorVM_PropertyChanged;
            WorkflowEditorVM.PrintStateChanged += new EventHandler(this.OnPrintStateChanged);
            WorkflowEditorVM.DesignerChanged += new EventHandler(this.WorkflowDesignerChanged);
            WorkflowEditorVM.GetTaskLastVersionChanged += new GetTaskLastVersionEventHandler(this.OnGetTaskLastVersion);
            Task.Factory.StartNew(() => { PrincipalService.Init(); }, cancellationToken.Token);
            Current = this;
        }
コード例 #4
0
 private ModelItem GetSelectdModelItem(WorkflowEditorViewModel workItem)
 {
     return workItem.IfNotNull(dataContext => dataContext.WorkflowDesigner)
         .IfNotNull(workflowDesigner => workflowDesigner.Context)
         .Items.GetValue<Selection>().PrimarySelection;
 }
コード例 #5
0
 private void ConfigureWorkItem(WorkflowEditorViewModel workflowItem)
 {
     workflowItem.WorkflowDesignerChanged += OnWorkflowDesignerChanged;
     workflowItem.DesignerChanged += OnDesignerChanged;
 }
コード例 #6
0
        /// <summary>
        /// Every time we get a new WorkflowDesigner, make sure it has a "Make Steps" context menu
        /// and recompute steps
        /// </summary>
        /// <param name="workflowDesigner"></param>
        private void ConfigureWorkflowDesigner(WorkflowEditorViewModel workflowItem, bool isTask)
        {
            ContextMenu menu = null;
            if (workflowItem.WorkflowDesigner != null)
                menu = workflowItem.WorkflowDesigner.ContextMenu;
            // There may be a better way of attaching MenuItems to each templated
            // child of a template, but for now we are checking menu item headers
            // to attach a "Make Step" menu item once and only once to a given
            // WorkflowDesigner
            if (menu != null)
            {
                if (!menu.Items.OfType<MenuItem>().Any(menuItem =>
                    object.ReferenceEquals(menuItem.Header, MakeStepOnHead)))
                {
                    menu.Items.Insert(0, new MenuItem
                    {
                        Header = MakeStepOnHead,
                        Command = MakeStepCommand
                    });
                }

                if (!menu.Items.OfType<MenuItem>().Any(menuItem =>
                    object.ReferenceEquals(menuItem.Header, UpdateAllOthersOnHead)))
                {
                    menu.Items.Insert(1, new MenuItem
                    {
                        Header = UpdateAllOthersOnHead,
                        Command = UpdateCommand
                    });
                }

                if (!isTask)
                {
                    menu.Items.Insert(2, new Separator());

                    if (!menu.Items.OfType<MenuItem>().Any(menuItem =>
                        object.ReferenceEquals(menuItem.Header, AssignOnHead)))
                    {
                        menu.Items.Insert(3, new MenuItem
                        {
                            Header = AssignOnHead,
                            Command = AssignCommand
                        });
                    }

                    if (!menu.Items.OfType<MenuItem>().Any(menuItem =>
                        object.ReferenceEquals(menuItem.Header, MergeOnHead)))
                    {
                        menu.Items.Insert(4, new MenuItem
                        {
                            Header = MergeOnHead,
                            Command = MergeCommand,
                        });
                    }

                    if (!menu.Items.OfType<MenuItem>().Any(menuItem =>
                        object.ReferenceEquals(menuItem.Header, MergeAllOnHead)))
                    {
                        menu.Items.Insert(5, new MenuItem
                        {
                            Header = MergeAllOnHead,
                            Command = MergeAllCommand,
                        });
                    }

                    if (!menu.Items.OfType<MenuItem>().Any(menuItem =>
                        object.ReferenceEquals(menuItem.Header, UnassignOnHead)))
                    {
                        menu.Items.Insert(6, new MenuItem
                        {
                            Header = UnassignOnHead,
                            Command = UnassignCommand
                        });
                    }

                    if (!menu.Items.OfType<MenuItem>().Any(menuItem =>
                        object.ReferenceEquals(menuItem.Header, UnassignAllOnHead)))
                    {
                        menu.Items.Insert(7, new MenuItem
                        {
                            Header = UnassignAllOnHead,
                            Command = UnassignAllCommand
                        });
                    }

                    menu.Items.Insert(8, new Separator());

                    RegisterActivityFocusedChanged();
                }
            }
        }
コード例 #7
0
        private static bool Load(FrameworkElement element)
        {
            workflowItem = LoadWorkflowItem(element);
            designerView = LoadDeignerView(element);

            AdornerDecorator decorator = LoadAdornerDecorator(element);
            workflowView  = LoadWorkflowView(decorator);
            RegisterWorkflowViewEvents(workflowView);

            scrollViewer = LoadScrollViewer(decorator);
            RegisterScrollViewChanged(scrollViewer);

            workflowViewMask = CreateWorkflowViewMask(workflowView);
            closeButton = CreateCloseButton(workflowView);
            rootActivityDesigner = LoadRootActivityDesigner(workflowView);

            if (rootActivityDesigner == null)
            {
                AddInMessageBoxService.PrintNoneActivityMessage();
                ExitPrint();
                return false;
            }

            return true;
        }
コード例 #8
0
        public static void GetAllLastVersion(IEnumerable<ModelItem> tasks, WorkflowEditorViewModel workflowItem)
        {
            Contract.Requires(workflowItem != null);
            Contract.Requires(workflowItem.WorkflowDesigner != null);

            UpdateTaskItem(tasks, workflowItem);
        }
コード例 #9
0
        private static void UpdateTaskItem(IEnumerable<ModelItem> source, WorkflowEditorViewModel workflowItem)
        {
            var taskModelItem = GetLastVersionActivity(source, workflowItem);
            MergeAllTaskArgmentToParent(
                taskModelItem,
                workflowItem.WorkflowDesigner.GetRoot());

            CompositeService.UpdateModelItem(taskModelItem.ToDictionary(
                t => t.Key,
                t => t.Key.GetTaskActivity().CreateTaskActivity(t.Value) as Activity));
        }
コード例 #10
0
 private static void UpdateTaskItem(ModelItem source, WorkflowEditorViewModel workflowItem)
 {
     ModelItem taskModelItem = GetLastVersionActivity(source, workflowItem);
     MergeTaskArgmentToParent(taskModelItem, workflowItem.WorkflowDesigner.GetRoot(), source);
     CompositeService.UpdateModelItem(source, source.GetTaskActivity().CreateTaskActivity(taskModelItem));
 }
コード例 #11
0
        private static IDictionary<ModelItem, ModelItem> GetLastVersionActivity(IEnumerable<ModelItem> tasks, WorkflowEditorViewModel workflowItem)
        {
            var result = TaskService.GetLastVersionTaskActivityDC(tasks.Select(t => t.GetTaskActivity().TaskId).ToArray());

            workflowItem.DownloadTaskDependency(result);

            return (from t in tasks
                    from r in result
                    let ta = t.GetTaskActivity()
                    where ta.TaskId == r.Guid
                    select new
                    {
                        Key = t,
                        Value = CompositeService.CreateActivity(r.Activity.Xaml),
                    }).ToDictionary(d => d.Key, d => d.Value);
        }
コード例 #12
0
        private static ModelItem GetLastVersionActivity(ModelItem source, WorkflowEditorViewModel workflowItem)
        {
            TaskActivity task = source.GetTaskActivity();
            var result = TaskService.GetLastVersionTaskActivityDC(task.TaskId);

            workflowItem.DownloadTaskDependency(result);

            return CompositeService.CreateActivity(result.Activity.Xaml);
        }
コード例 #13
0
        public static void GetLastVersion(ModelItem source, WorkflowEditorViewModel workflowItem)
        {
            Contract.Requires(source != null);
            Contract.Requires(workflowItem != null);

            UpdateTaskItem(source, workflowItem);
        }
コード例 #14
0
 // should never be called by anyone except WorkflowItem
 public ErrorService(WorkflowEditorViewModel owner)
 {
     this.owner = owner;
     xamlErrors.CollectionChanged += xamlErrors_CollectionChanged;
     validationErrors.CollectionChanged += validationErrors_CollectionChanged;
 }