Example #1
0
        public BatchInfoViewModel(IEventAggregator aggregator,
                                  IDataService <LabDbEntities> labDbData,
                                  MaterialService materialService) : base()
        {
            _labDbData = labDbData;

            _materialService = materialService;
            _eventAggregator = aggregator;
            _editMode        = false;

            TrialAreaList = _labDbData.RunQuery(new TrialAreasQuery())
                            .ToList();

            CancelEditCommand = new DelegateCommand(
                () =>
            {
                if (_instance == null)
                {
                    BatchInstance = null;
                }
                else
                {
                    BatchInstance = _labDbData.RunQuery(new BatchQuery()
                    {
                        ID = BatchInstance.ID
                    });
                }
            },
                () => EditMode);

            DeleteBatchCommand = new DelegateCommand(
                () =>
            {
                _instance.Delete();

                BatchInstance = null;

                NavigationToken token = new NavigationToken(MaterialViewNames.BatchesView);

                _eventAggregator.GetEvent <NavigationRequested>()
                .Publish(token);
            },
                () => CanDelete);

            DeleteSampleCommand = new DelegateCommand <Sample>(
                smp =>
            {
                _materialService.DeleteSample(smp);
                RaisePropertyChanged("Samples");
            },
                smp => Thread.CurrentPrincipal.IsInRole(UserRoleNames.BatchEdit));

            OpenExternalReportCommand = new DelegateCommand(
                () =>
            {
                NavigationToken token = new NavigationToken(ReportViewNames.ExternalReportEditView,
                                                            _selectedExternalReport);
                _eventAggregator.GetEvent <NavigationRequested>().Publish(token);
            },
                () => _selectedExternalReport != null);

            OpenReportCommand = new DelegateCommand(
                () =>
            {
                NavigationToken token = new NavigationToken(ReportViewNames.ReportEditView,
                                                            _selectedReport);
                _eventAggregator.GetEvent <NavigationRequested>().Publish(token);
            },
                () => _selectedReport != null);

            RefreshCommand = new DelegateCommand(
                () =>
            {
                BatchInstance = _labDbData.RunQuery(new BatchQuery()
                {
                    ID = BatchInstance.ID
                });
            },
                () => !EditMode);

            SaveCommand = new DelegateCommand(
                () =>
            {
                CreateChildEntitiesIfMissing();
                ReloadChildEntitiesInstances();
                Material _materialTemplate = GenerateMaterialUpdateTemplate();
                _labDbData.Execute(new BatchUpdateCommand(BatchInstance, _materialTemplate));
                EditMode = false;
            },
                () => EditMode && !HasErrors);

            StartEditCommand = new DelegateCommand(
                () =>
            {
                EditMode = true;
            },
                () => !EditMode && Thread.CurrentPrincipal.IsInRole(UserRoleNames.BatchEdit));

            #region EventSubscriptions

            _eventAggregator.GetEvent <ColorChanged>()
            .Subscribe(ect =>
            {
                _colourList = null;
                RaisePropertyChanged("ColourList");
            });

            _eventAggregator.GetEvent <ExternalConstructionChanged>()
            .Subscribe(ect => ExternalConstructionChangedHandler());

            _eventAggregator.GetEvent <ExternalReportChanged>()
            .Subscribe(
                ect =>
            {
                RaisePropertyChanged("ExternalReportList ");
            });

            _eventAggregator.GetEvent <ProjectChanged>()
            .Subscribe(
                ect =>
            {
                ProjectList     = null;
                SelectedProject = null;
            });

            _eventAggregator.GetEvent <ReportCreated>().Subscribe(
                report =>
            {
                SelectedReport = null;
                RaisePropertyChanged("ReportList");
            });

            #endregion EventSubscriptions
        }
Example #2
0
        public void displayReportView(int reportoid = 0, int treeOid = -1)
        {
            if (slideDialog == null)
            {
                return;
            }
            TreeActionDialog.IsActionReportView = false;
            slideDialog.IsReportView            = true;
            PresentationEditorItem page = (PresentationEditorItem)getPresentationEditor().getActivePage();

            if (page == null)
            {
                return;
            }

            NavigationToken token = NavigationToken.GetCreateViewToken(Reporting.Base.ReportingFunctionalitiesCode.REPORT_EDIT);

            if (reportoid > 0)
            {
                token = NavigationToken.GetModifyViewToken(Reporting.Base.ReportingFunctionalitiesCode.REPORT_EDIT, reportoid);
            }

            controllable = ApplicationManager.ControllerFactory.GetController(token.Functionality, token.ViewType, token.EditionMode);
            controllable.NavigationToken = token;
            controllable.Initialize();

            ReportEditorController controller = (ReportEditorController)controllable;

            controller.getInputTableEditor().NewPageSelected -= controller.NewPageSelectedHandler;
            controller.getInputTableEditor().OnRemoveNewPage += OnRemoveNewReportPage;
            controller.listeTotalReport = BlockPanel.listeTotalReport;


            TreeLoopGroup LoopGroup = ((ReportSideBar)controller.SideBar).TreeLoopGroup;

            controller.SideBar.RemoveGroup(((ReportSideBar)controller.SideBar).StatusGroup);
            controller.SideBar.RemoveGroup(0);
            if (LoopGroup != null)
            {
                LoopGroup.TransformationTreeLoopTreeview.fillTree(this.Loops);
                controller.SideBar.AddGroup(LoopGroup, 0);
            }

            controller.CustomizeMenuForTree(slideDialog.dockingManager);
            slideDialog.displaySideBar(controller.SideBar);
            slideDialog.displayPropertyBar(controller.PropertyBar);
            slideDialog.displayView(controller.View);

            controller.treeOid = treeOid;
            if (reportoid > 0)
            {
                controller.Open(reportoid);
                if (slideDialog != null)
                {
                    slideDialog.SaveButton.IsEnabled = false;
                }
            }
            else
            {
                controller.Create();
                if (slideDialog != null)
                {
                    slideDialog.SaveButton.IsEnabled = true;
                }
            }
            controller.ChangeEventListener += onChange;
        }
Example #3
0
        /// <summary>
        /// Initialisation des sous menus
        /// </summary>
        protected override void initChildren()
        {
            this.Code   = FunctionalitiesCode.SOURCING;
            this.Header = FunctionalitiesLabel.SOURCING_LABEL;

            InputTableMenu     = BuildMenu(FunctionalitiesCode.SOURCING, FunctionalitiesLabel.INPUT_TABLE_LABEL, FunctionalitiesCode.INPUT_TABLE);
            NewInputTableMenu  = BuildMenu(FunctionalitiesCode.INPUT_TABLE, FunctionalitiesLabel.NEW_INPUT_TABLE_LABEL, NavigationToken.GetCreateViewToken(SourcingFunctionalitiesCode.INPUT_TABLE_EDIT), Kernel.Domain.RightType.CREATE);
            ListInputTableMenu = BuildMenu(FunctionalitiesCode.INPUT_TABLE, FunctionalitiesLabel.LIST_INPUT_TABLE_LABEL, NavigationToken.GetSearchViewToken(SourcingFunctionalitiesCode.INPUT_TABLE_LIST), Kernel.Domain.RightType.VIEW);

            AutomaticSourcingMenu     = BuildMenu(FunctionalitiesCode.INPUT_TABLE, FunctionalitiesLabel.NEW_AUTOMATIC_SOURCING_LABEL, NavigationToken.GetCreateViewToken(SourcingFunctionalitiesCode.AUTOMATIC_SOURCING_EDIT), Kernel.Domain.RightType.CREATE);
            ListAutomaticSourcingMenu = BuildMenu(FunctionalitiesCode.INPUT_TABLE, FunctionalitiesLabel.LIST_AUTOMATIC_SOURCING_LABEL, NavigationToken.GetSearchViewToken(SourcingFunctionalitiesCode.AUTOMATIC_SOURCING_LIST), Kernel.Domain.RightType.VIEW);

            InputTableMenu.Items.Add(NewInputTableMenu);
            InputTableMenu.Items.Add(ListInputTableMenu);
            InputTableMenu.Items.Add(new Separator());
            InputTableMenu.Items.Add(AutomaticSourcingMenu);
            InputTableMenu.Items.Add(ListAutomaticSourcingMenu);

            GridMenu = BuildMenu(FunctionalitiesCode.SOURCING, FunctionalitiesLabel.GRID_LABEL, FunctionalitiesCode.INPUT_TABLE_GRID);

            NewInputGridMenu  = BuildMenu(ApplicationMenu.SOURCING_MENU_CODE, FunctionalitiesLabel.NEW_INPUT_GRID_LABEL, NavigationToken.GetCreateViewToken(SourcingFunctionalitiesCode.INPUT_TABLE_GRID_EDIT), Kernel.Domain.RightType.CREATE);
            ListInputGridMenu = BuildMenu(ApplicationMenu.SOURCING_MENU_CODE, FunctionalitiesLabel.LIST_INPUT_GRID_LABEL, NavigationToken.GetSearchViewToken(SourcingFunctionalitiesCode.INPUT_TABLE_GRID_LIST), Kernel.Domain.RightType.VIEW);

            NewAutomaticGridMenu  = BuildMenu(ApplicationMenu.SOURCING_MENU_CODE, FunctionalitiesLabel.NEW_AUTOMATIC_GRID_LABEL, NavigationToken.GetCreateViewToken(SourcingFunctionalitiesCode.AUTOMATIC_INPUT_TABLE_GRID_EDIT), Kernel.Domain.RightType.CREATE);
            ListAutomaticGridMenu = BuildMenu(ApplicationMenu.SOURCING_MENU_CODE, FunctionalitiesLabel.LIST_AUTOMATIC_GRID_LABEL, NavigationToken.GetSearchViewToken(SourcingFunctionalitiesCode.AUTOMATIC_INPUT_TABLE_GRID_LIST), Kernel.Domain.RightType.VIEW);

            GridMenu.Items.Add(NewInputGridMenu);
            GridMenu.Items.Add(ListInputGridMenu);
            GridMenu.Items.Add(new Separator());
            GridMenu.Items.Add(NewAutomaticGridMenu);
            GridMenu.Items.Add(ListAutomaticGridMenu);

            LinkedAttributeGridMenu = BuildMenu(ApplicationMenu.SOURCING_MENU_CODE, FunctionalitiesLabel.LINKED_ATTRIBUTE_GRID_LABEL, NavigationToken.GetSearchViewToken(SourcingFunctionalitiesCode.LINKED_ATTRIBUTE_GRID_LIST), Kernel.Domain.RightType.VIEW);



            EnrichmentTableMenu = BuildMenu(FunctionalitiesCode.SOURCING, FunctionalitiesLabel.ENRICHMENT_TABLE_LABEL, FunctionalitiesCode.ENRICHMENT_TABLE);

            NewEnrichmentTableMenu  = BuildMenu(ApplicationMenu.SOURCING_MENU_CODE, FunctionalitiesLabel.NEW_ENRICHMENT_TABLE_LABEL, NavigationToken.GetCreateViewToken(SourcingFunctionalitiesCode.ENRICHMENT_TABLE_EDIT), Kernel.Domain.RightType.CREATE);
            ListEnrichmentTableMenu = BuildMenu(ApplicationMenu.SOURCING_MENU_CODE, FunctionalitiesLabel.LIST_ENRICHMENT_TABLE_LABEL, NavigationToken.GetSearchViewToken(SourcingFunctionalitiesCode.ENRICHMENT_TABLE_LIST), Kernel.Domain.RightType.VIEW);

            NewAutomaticEnrichmentTableMenu  = BuildMenu(ApplicationMenu.SOURCING_MENU_CODE, FunctionalitiesLabel.NEW_AUTOMATIC_ENRICHMENT_TABLE_LABEL, NavigationToken.GetCreateViewToken(SourcingFunctionalitiesCode.AUTOMATIC_ENRICHMENT_TABLE_EDIT), Kernel.Domain.RightType.CREATE);
            ListAutomaticEnrichmentTableMenu = BuildMenu(ApplicationMenu.SOURCING_MENU_CODE, FunctionalitiesLabel.LIST_AUTOMATIC_ENRICHMENT_TABLE_LABEL, NavigationToken.GetSearchViewToken(SourcingFunctionalitiesCode.AUTOMATIC_ENRICHMENT_TABLE_LIST), Kernel.Domain.RightType.VIEW);

            //EnrichmentTableMenu.Items.Add(NewEnrichmentTableMenu);
            //EnrichmentTableMenu.Items.Add(ListEnrichmentTableMenu);
            //EnrichmentTableMenu.Items.Add(new Separator());
            EnrichmentTableMenu.Items.Add(NewAutomaticEnrichmentTableMenu);
            EnrichmentTableMenu.Items.Add(ListAutomaticEnrichmentTableMenu);

            TargetMenu     = BuildMenu(FunctionalitiesCode.SOURCING, FunctionalitiesLabel.TARGET_LABEL, FunctionalitiesCode.TARGET);
            NewTargetMenu  = BuildMenu(FunctionalitiesCode.TARGET, FunctionalitiesLabel.NEW_TARGET_LABEL, NavigationToken.GetCreateViewToken(SourcingFunctionalitiesCode.TARGET_EDIT), Kernel.Domain.RightType.CREATE);
            ListTargetMenu = BuildMenu(FunctionalitiesCode.TARGET, FunctionalitiesLabel.LIST_TARGET_LABEL, NavigationToken.GetSearchViewToken(SourcingFunctionalitiesCode.TARGET_LIST), Kernel.Domain.RightType.VIEW);

            AutomaticTargetMenu     = BuildMenu(FunctionalitiesCode.TARGET, FunctionalitiesLabel.NEW_AUTOMATIC_TARGET_LABEL, NavigationToken.GetCreateViewToken(SourcingFunctionalitiesCode.AUTOMATIC_TARGET_EDIT), Kernel.Domain.RightType.CREATE);
            ListAutomaticTargetMenu = BuildMenu(FunctionalitiesCode.TARGET, FunctionalitiesLabel.LIST_AUTOMATIC_TARGET_LABEL, NavigationToken.GetSearchViewToken(SourcingFunctionalitiesCode.AUTOMATIC_TARGET_LIST), Kernel.Domain.RightType.VIEW);

            TargetMenu.Items.Add(NewTargetMenu);
            TargetMenu.Items.Add(ListTargetMenu);
            TargetMenu.Items.Add(new Separator());
            TargetMenu.Items.Add(AutomaticTargetMenu);
            TargetMenu.Items.Add(ListAutomaticTargetMenu);

            DesignMenu     = BuildMenu(FunctionalitiesCode.SOURCING, FunctionalitiesLabel.DESIGN_LABEL, FunctionalitiesCode.DESIGN);
            NewDesignMenu  = BuildMenu(FunctionalitiesCode.DESIGN, FunctionalitiesLabel.NEW_DESIGN_LABEL, NavigationToken.GetCreateViewToken(SourcingFunctionalitiesCode.DESIGN_EDIT), Kernel.Domain.RightType.CREATE);
            ListDesignMenu = BuildMenu(FunctionalitiesCode.DESIGN, FunctionalitiesLabel.LIST_DESIGN_LABEL, NavigationToken.GetSearchViewToken(SourcingFunctionalitiesCode.DESIGN_LIST), Kernel.Domain.RightType.VIEW);

            DesignMenu.Items.Add(NewDesignMenu);
            DesignMenu.Items.Add(ListDesignMenu);


            AccessoriesMenu = BuildMenu(FunctionalitiesCode.SOURCING, FunctionalitiesLabel.ACCESSORIES_LABEL, FunctionalitiesCode.ACCESSORIES);
            UploadMultipleFileSourcingMenu = BuildMenu(FunctionalitiesCode.ACCESSORIES, FunctionalitiesLabel.UPLOAD_MULTIPLE_FILES, NavigationToken.GetSearchViewToken(SourcingFunctionalitiesCode.MULTIPLE_FILES_UPLOAD));

            AccessoriesMenu.Items.Add(UploadMultipleFileSourcingMenu);
        }
Example #4
0
        /// <summary>
        /// Les DashboardCategories du plugin
        /// </summary>
        /// <returns></returns>
        protected override List <NavCategory> GetNavDashboardCategories()
        {
            List <NavCategory> categories = new List <NavCategory>(0);
            //categories.Add(BuildCategory("Daily Controls", BfcFunctionalitiesCode.REVIEW));

            NavCategory newAdvisementCategory = BuildCategory("New Advisement", BfcFunctionalitiesCode.ADVISEMENT);

            newAdvisementCategory.Block = BuildBlock("New Advisement");
            newAdvisementCategory.Block.Children.Add(BuildBlock("New Prefunding Advisement", NavigationToken.GetCreateViewToken(BfcFunctionalitiesCode.PREFUNDING_ADVISEMENT)));
            newAdvisementCategory.Block.Children.Add(BuildBlock("New Member Advisement", NavigationToken.GetCreateViewToken(BfcFunctionalitiesCode.MEMBER_ADVISEMENT)));
            newAdvisementCategory.Block.Children.Add(BuildBlock("New Replenishment Instruction", NavigationToken.GetCreateViewToken(BfcFunctionalitiesCode.REPLENISHMENT_INSTRUCTION_ADVISEMENT)));
            newAdvisementCategory.Block.Children.Add(BuildBlock("New Settlement Advisement", NavigationToken.GetCreateViewToken(BfcFunctionalitiesCode.SETTLEMENT_ADVISEMENT)));
            categories.Add(newAdvisementCategory);

            NavCategory pfAccountReviewCategory = BuildCategory("PF Account Review", BfcFunctionalitiesCode.REVIEW);

            pfAccountReviewCategory.Block = BuildBlock("PF Account Review", NavigationToken.GetSearchViewToken(BfcFunctionalitiesCode.REVIEW_PF_ACCOUNT));
            categories.Add(pfAccountReviewCategory);

            NavCategory settlementEvolutionCategory = BuildCategory("Settlement Evolution", BfcFunctionalitiesCode.REVIEW);

            settlementEvolutionCategory.Block = BuildBlock("Settlement Evolution", NavigationToken.GetSearchViewToken(BfcFunctionalitiesCode.REVIEW_SETTLEMENT_EVOLUTION));
            categories.Add(settlementEvolutionCategory);

            NavCategory ageingBalanceCategory = BuildCategory("Ageing Balance", BfcFunctionalitiesCode.REVIEW);

            ageingBalanceCategory.Block = BuildBlock("Ageing Balance", NavigationToken.GetSearchViewToken(BfcFunctionalitiesCode.REVIEW_AGEING_BALANCE));
            categories.Add(ageingBalanceCategory);

            //categories.Add(BuildCategory("Bank Account", BfcFunctionalitiesCode.REVIEW));

            NavCategory listAdvisementCategory = BuildCategory("List Advisements", BfcFunctionalitiesCode.ADVISEMENT);

            listAdvisementCategory.Block = BuildBlock("List Advisement");
            listAdvisementCategory.Block.Children.Add(BuildBlock("List Prefunding Advisements", NavigationToken.GetSearchViewToken(BfcFunctionalitiesCode.PREFUNDING_ADVISEMENT_LIST)));
            listAdvisementCategory.Block.Children.Add(BuildBlock("List Member Advisements", NavigationToken.GetSearchViewToken(BfcFunctionalitiesCode.MEMBER_ADVISEMENT_LIST)));
            listAdvisementCategory.Block.Children.Add(BuildBlock("List Replenishment Instructions", NavigationToken.GetSearchViewToken(BfcFunctionalitiesCode.REPLENISHMENT_INSTRUCTION_ADVISEMENT_LIST)));
            listAdvisementCategory.Block.Children.Add(BuildBlock("List Settlement Advisements", NavigationToken.GetSearchViewToken(BfcFunctionalitiesCode.SETTLEMENT_ADVISEMENT_LIST)));
            categories.Add(listAdvisementCategory);

            return(categories);
        }
Example #5
0
        public BatchStatusListViewModel(IEventAggregator eventAggregator,
                                        IDataService <LabDbEntities> labDbData,
                                        IReportingService reportingService) : base()
        {
            _labDbData        = labDbData;
            _eventAggregator  = eventAggregator;
            _reportingService = reportingService;

            CancelCommand = new DelegateCommand <Window>(
                parentDialog =>
            {
                parentDialog.DialogResult = false;
            });

            ConfirmCommand = new DelegateCommand <Window>(
                parentDialog =>
            {
                parentDialog.DialogResult = true;
            });

            _eventAggregator.GetEvent <BatchChanged>().Subscribe(
                token =>
            {
                RunBatchQueryCommand.Execute();
            });

            _eventAggregator.GetEvent <SampleLogCreated>()
            .Subscribe(
                sample =>
            {
                RunBatchQueryCommand.Execute();
            });

            _eventAggregator.GetEvent <BatchStatusListRefreshRequested>()
            .Subscribe(
                () =>
            {
                RunBatchQueryCommand.Execute();
            });

            OpenBatchCommand = new DelegateCommand <DataGrid>(
                grid =>
            {
                Batch btc             = grid.SelectedItem as Batch;
                NavigationToken token = new NavigationToken(MaterialViewNames.BatchInfoView,
                                                            btc);

                _eventAggregator.GetEvent <NavigationRequested>()
                .Publish(token);
            });

            OpenOrderFileCommand = new DelegateCommand <Batch>(
                batch =>
            {
                try
                {
                    System.Diagnostics.Process.Start(batch.OrderFilePath);
                }
                catch
                {
                }
            });

            PrintSelectedCommand = new DelegateCommand <IList>(
                batchList =>
            {
                Batch[] processList = new Batch[batchList.Count];
                batchList.CopyTo(processList, 0);
                _reportingService.PrintBatchReport(processList);
            });

            RunBatchQueryCommand = new DelegateCommand(
                () =>
            {
                IQuery <Batch, LabDbEntities> batchQuery = new BatchesQuery()
                {
                    AspectCode         = AspectCode,
                    BatchNumber        = BatchNumber,
                    ColorName          = ColorName,
                    ConstructionName   = ConstructionName,
                    MaterialLineCode   = MaterialLineCode,
                    MaterialTypeCode   = MaterialTypeCode,
                    Notes              = Notes,
                    OEMName            = OEMName,
                    ProjectDescription = ProjectDescription,
                    ProjectNumber      = ProjectNumber,
                    RecipeCode         = RecipeCode
                };

                BatchList = _labDbData.RunQuery(batchQuery).ToList();
                RaisePropertyChanged("BatchList");
            });

            RunBatchQueryCommand.Execute();
        }
Example #6
0
 /// <summary>
 /// Initialisation des sous menus
 /// </summary>
 protected override void initChildren()
 {
     this.Code   = FunctionalitiesCode.RECONCILIATION;
     this.Header = FunctionalitiesLabel.RECONCILIATION_LABEL;
     ReconciliationFiltersMenu     = BuildMenu(FunctionalitiesCode.RECONCILIATION, FunctionalitiesLabel.NEW_RECONCILIATION_FILTER_LABEL, NavigationToken.GetCreateViewToken(ReconciliationFunctionalitiesCode.RECONCILIATION_FILTER_EDIT), Kernel.Domain.RightType.CREATE);
     ReconciliationFiltersListMenu = BuildMenu(FunctionalitiesCode.RECONCILIATION, FunctionalitiesLabel.LIST_RECONCILIATION_FILTERS_LABEL, NavigationToken.GetSearchViewToken(ReconciliationFunctionalitiesCode.RECONCILIATION_FILTER_LIST), Kernel.Domain.RightType.VIEW);
     ReconciliationContextMenu     = BuildMenu(FunctionalitiesCode.RECONCILIATION, FunctionalitiesLabel.RECONCILIATION_CONFIGURATION_LABEL, NavigationToken.GetCreateViewToken(ReconciliationFunctionalitiesCode.RECONCILIATION_CONFIGURATION));
 }
Example #7
0
        public SpecificationVersionEditViewModel(IDataService <LabDbEntities> labDbData,
                                                 IEventAggregator eventAggregator,
                                                 ISpecificationService specificationService)
        {
            _specificationService = specificationService;
            _editMode             = false;
            _eventAggregator      = eventAggregator;
            _labDbData            = labDbData;


            DeleteRequirementCommand = new DelegateCommand <Requirement>(
                req =>
            {
                req.Delete();

                _specificationVersionInstance.Load();

                GenerateRequirementList();

                RaisePropertyChanged("RequirementList");
            });

            SaveCommand = new DelegateCommand(
                () =>
            {
                _specificationVersionInstance.Update();

                if (_specificationVersionInstance == null)
                {
                    return;
                }

                if (_specificationVersionInstance.IsMain)
                {
                    _specificationService.UpdateRequirements(_requirementList.Select(req => req.RequirementInstance));
                }
                else
                {
                    _specificationService.UpdateRequirements(_requirementList.Where(req => req.IsOverride)
                                                             .Select(req => req.RequirementInstance));
                }

                EditMode = false;
            },
                () => _editMode &&
                !HasErrors);

            StartEditCommand = new DelegateCommand(
                () =>
            {
                EditMode = true;
            },
                () => CanEdit && !_editMode);

            StartTestListEditCommand = new DelegateCommand(
                () =>
            {
                NavigationToken token = new NavigationToken(SpecificationViewNames.AddMethod,
                                                            null,
                                                            RegionNames.SpecificationVersionTestListEditRegion);

                _eventAggregator.GetEvent <NavigationRequested>()
                .Publish(token);
            },
                () => Thread.CurrentPrincipal.IsInRole(UserRoleNames.SpecificationEdit));

            _eventAggregator.GetEvent <SpecificationMethodListChanged>()
            .Subscribe(
                spc =>
            {
                if (spc.ID == _specificationVersionInstance.SpecificationID)
                {
                    GenerateRequirementList();
                    RaisePropertyChanged("RequirementList");
                }
            });
        }