Example #1
0
        internal void GenerateEndpointsView(bool setTitle = true)
        {
            if (setTitle)
            {
                this.SelectView("Endpoints");
            }
            ObservableCollection <LogicalViewModelNode> observables = new ObservableCollection <LogicalViewModelNode>();

            if (SourceViewModel.TopLevelNodes.Count == 0)
            {
                return;
            }
            LogicalViewModelNode endpointsItem = new LogicalViewModelNode(this, this.SourceViewModel.TopLevelNodes.First().ChildNodes.Named("Endpoints"),
                                                                          this.SourceViewModel.TopLevelNodes.First().ChildNodes.Named("Endpoints").ChildNodes);

            observables.Add(new LogicalViewModelNode(this, this.SourceViewModel.TopLevelNodes.First <IProductElementViewModel>(), null));
            observables[0].LogicalViewNodes.Add(endpointsItem);

            // Add Endpoints Node with just the Add->Nodes option
            observables[0].LogicalViewNodes[0].FilterMenuItems("Show Diagram", "Add");

            // Add Endpoint -> Add -> Component menu item
            foreach (var endpoint in endpointsItem.LogicalViewNodes)
            {
                endpoint.FilterMenuItems("Show Diagram", "Customize Authentication", "Add to Use Case", "Start Use Case");
                endpoint.MenuOptions.Add(endpoint.InnerViewModel.ChildNodes.Named("Components").MenuOptions.First(o => o.Caption == "Deploy Component..."));
            }

            this.LogicalViewNodes = observables;
        }
Example #2
0
        internal void GenerateComponentsView(bool setTitle = true)
        {
            if (setTitle)
            {
                this.SelectView("Components");
            }
            ObservableCollection <LogicalViewModelNode> observables = new ObservableCollection <LogicalViewModelNode>();

            var services = this.SourceViewModel.TopLevelNodes.First().ChildNodes.First(n => n.Data.DefinitionName == "Services");

            // Add Services Node with just the Add->Service option
            var servicesNode = new LogicalViewModelNode(this, services, services.ChildNodes);

            servicesNode.FilterMenuItems("Add");
            observables.Add(servicesNode);

            foreach (var service in observables[0].LogicalViewNodes)
            {
                // Add menu option "Add -> Component" from first child
                //service.MenuOptions = new ObservableCollection<IMenuOptionViewModel>();
                service.FilterMenuItems("Delete");
                service.MenuOptions.Add(new MenuOptionViewModel("Add",
                                                                new List <MenuOptionViewModel> {
                    service.InnerViewModel.ChildNodes.Named("Components").MenuOptions.First(o => o.Caption == "Add").MenuOptions.First() as MenuOptionViewModel
                }));
                foreach (var component in service.InnerViewModel.ChildNodes.Named("Components").ChildNodes)
                {
                    service.LogicalViewNodes.Add(new LogicalViewModelNode(this, component, null));
                }
            }

            this.LogicalViewNodes = observables;
        }
Example #3
0
        public LogicalViewModel(ISolutionBuilderViewModel sourceViewModel, InnerPanelViewModel innerView)
        {
            this.Title = innerView.Title;
            this.WireSolutionBuilderViewModel(sourceViewModel, true);
            this.LogicalViewNodes = new ObservableCollection <LogicalViewModelNode>();
            IProductElementViewModel root        = null;
            IEnumerable <string>     menuFilters = null;
            InnerPanelItem           rootItem    = null;
            ObservableCollection <IProductElementViewModel> children = new ObservableCollection <IProductElementViewModel>();

            foreach (InnerPanelItem item in innerView.Items)
            {
                if (item is InnerPanelTitle)
                {
                    if (root != null)
                    {
                        var rootNode = new LogicalViewModelNode(this, root, children)
                        {
                            CustomIconPath = rootItem.IconPath
                        };
                        if (menuFilters != null)
                        {
                            rootNode.FilterMenuItems(menuFilters.ToArray());
                        }
                        this.LogicalViewNodes.Add(rootNode);
                    }
                    rootItem    = item;
                    root        = this.GetProductNode(item);
                    menuFilters = (item as InnerPanelTitle).MenuFilters;
                    children    = new ObservableCollection <IProductElementViewModel>();
                }
                else
                {
                    children.Add(this.GetProductNode(item));
                }
            }
            if (root != null)
            {
                var rootNode = new LogicalViewModelNode(this, root, children)
                {
                    CustomIconPath = rootItem.IconPath
                };
                if (menuFilters != null)
                {
                    rootNode.FilterMenuItems(menuFilters.ToArray());
                }
                this.LogicalViewNodes.Add(rootNode);
            }
        }
Example #4
0
 private LogicalViewModelNode FindLogicalNode(ObservableCollection <LogicalViewModelNode> observableCollection,
                                              Func <LogicalViewModelNode, bool> Condition)
 {
     foreach (LogicalViewModelNode node in observableCollection)
     {
         if (Condition(node))
         {
             return(node);
         }
         LogicalViewModelNode node2 = this.FindLogicalNode(node.LogicalViewNodes, Condition);
         if (node2 != null)
         {
             return(node2);
         }
     }
     return(null);
 }
Example #5
0
 public LogicalViewModel(ISolutionBuilderViewModel sourceViewModel, InnerPanelViewModel innerView)
 {
     this.Title = innerView.Title;
     this.WireSolutionBuilderViewModel(sourceViewModel, true);
     this.LogicalViewNodes = new ObservableCollection<LogicalViewModelNode>();
     IProductElementViewModel root = null;
     IEnumerable<string> menuFilters = null;
     InnerPanelItem rootItem = null;
     ObservableCollection<IProductElementViewModel> children = new ObservableCollection<IProductElementViewModel>();
     foreach (InnerPanelItem item in innerView.Items)
     {
         if (item is InnerPanelTitle)
         {
             if (root != null)
             {
                 var rootNode = new LogicalViewModelNode(this, root, children) { CustomIconPath = rootItem.IconPath };
                 if (menuFilters != null)
                 {
                     rootNode.FilterMenuItems(menuFilters.ToArray());
                 }
                 this.LogicalViewNodes.Add(rootNode);
             }
             rootItem = item;
             root = this.GetProductNode(item);
             menuFilters = (item as InnerPanelTitle).MenuFilters;
             children = new ObservableCollection<IProductElementViewModel>();
         }
         else
         {
             children.Add(this.GetProductNode(item));
         }
     }
     if (root != null)
     {
         var rootNode = new LogicalViewModelNode(this, root, children) { CustomIconPath = rootItem.IconPath };
         if (menuFilters != null)
         {
             rootNode.FilterMenuItems(menuFilters.ToArray());
         }
         this.LogicalViewNodes.Add(rootNode);
     }
 }
        private void GenerateLibrariesView(bool setTitle = true)
        {
            if (setTitle)
            {
                this.SelectView("Libraries");
            }
            ObservableCollection <LogicalViewModelNode> observables = new ObservableCollection <LogicalViewModelNode>();

            var libraries = this.SourceViewModel.TopLevelNodes.First().ChildNodes.First(n => n.Data.DefinitionName == "Libraries");

            // Add Libraries Node with just the Add->Library option
            var librariesNode = new LogicalViewModelNode(this, libraries, libraries.ChildNodes);

            librariesNode.FilterMenuItems("Add");
            observables.Add(librariesNode);

            var services = this.SourceViewModel.TopLevelNodes.First().ChildNodes.First(n => n.Data.DefinitionName == "Services");

            // Add Services Node with just the Add->Service option
            var servicesNode = new LogicalViewModelNode(this, services, services.ChildNodes);

            servicesNode.FilterMenuItems("Add");
            observables.Add(servicesNode);

            foreach (var service in servicesNode.LogicalViewNodes)
            {
                // Adding menu options for "Add->Commands" and "Add->Events"
                //service.MenuOptions = new ObservableCollection<IMenuOptionViewModel>();
                service.FilterMenuItems("Delete");
                service.MenuOptions.Add(service.InnerViewModel.ChildNodes.Named("Libraries").MenuOptions.First(o => o.Caption == "Add"));

                foreach (var library in service.InnerViewModel.ChildNodes
                         .First(n => n.Data.DefinitionName == "ServiceLibraries").ChildNodes)
                {
                    service.LogicalViewNodes.Add(new LogicalViewModelNode(this, library, null));
                }
            }

            this.LogicalViewNodes = observables;
        }
        internal void GenerateUseCasesView(bool setTitle = true)
        {
            if (setTitle)
            {
                this.SelectView("Use Cases");
            }
            ObservableCollection <LogicalViewModelNode> observables = new ObservableCollection <LogicalViewModelNode>();
            LogicalViewModelNode usecasesItem = new LogicalViewModelNode(this, this.SourceViewModel.TopLevelNodes.First().ChildNodes.Named("Use Cases"),
                                                                         this.SourceViewModel.TopLevelNodes.First().ChildNodes.Named("Use Cases").ChildNodes);

            observables.Add(new LogicalViewModelNode(this, this.SourceViewModel.TopLevelNodes.First <IProductElementViewModel>(), null));
            observables[0].LogicalViewNodes.Add(usecasesItem);

            // Add UseCases Node with just the Create New Use Case option
            observables[0].LogicalViewNodes[0].FilterMenuItems("Add");

            // Add Use Case -> Edit and Delete options
            foreach (var endpoint in usecasesItem.LogicalViewNodes)
            {
                endpoint.FilterMenuItems("Add Started By Endpoint", "Delete");
            }

            this.LogicalViewNodes = observables;
        }
Example #8
0
        internal void GenerateMessagesView(bool setTitle = true)
        {
            if (setTitle)
            {
                this.SelectView("Messages");
            }
            ObservableCollection<LogicalViewModelNode> observables = new ObservableCollection<LogicalViewModelNode>();

            var services = this.SourceViewModel.TopLevelNodes.First().ChildNodes.First(n => n.Data.DefinitionName == "Services");

            // Add Services Node with just the Add->Service option
            var servicesNode = new LogicalViewModelNode(this, services, services.ChildNodes);
            servicesNode.FilterMenuItems("Add");

            observables.Add(servicesNode);

            foreach (var service in observables[0].LogicalViewNodes)
            {
                // Adding menu options for "Add->Commands" and "Add->Events"
                //service.MenuOptions = new ObservableCollection<IMenuOptionViewModel>();
                service.FilterMenuItems("Delete");

                service.MenuOptions.Add(new MenuOptionViewModel("Add",
                    new List<MenuOptionViewModel>{
                        service.InnerViewModel.ChildNodes.Named("Contract").ChildNodes.Named("Commands").MenuOptions.First(o => o.Caption == "Add").MenuOptions.First() as MenuOptionViewModel,
                        service.InnerViewModel.ChildNodes.Named("Contract").ChildNodes.Named("Events").MenuOptions.First(o => o.Caption == "Add").MenuOptions.First() as MenuOptionViewModel
                    }));

                foreach (var component in service.InnerViewModel.ChildNodes
                    .First(n => n.Data.DefinitionName == "Contract").ChildNodes
                    .First(n => n.Data.DefinitionName == "Commands").ChildNodes
                    .Union(service.InnerViewModel.ChildNodes
                    .First(n => n.Data.DefinitionName == "Contract").ChildNodes
                    .First(n => n.Data.DefinitionName == "Events").ChildNodes))
                {
                    service.LogicalViewNodes.Add(new LogicalViewModelNode(this, component, null));
                }
            }

            this.LogicalViewNodes = observables;
        }
Example #9
0
        internal void GenerateEndpointsView(bool setTitle = true)
        {
            if (setTitle)
            {
                this.SelectView("Endpoints");
            }
            ObservableCollection<LogicalViewModelNode> observables = new ObservableCollection<LogicalViewModelNode>();
            if (SourceViewModel.TopLevelNodes.Count == 0)
            {
                return;
            }
            LogicalViewModelNode endpointsItem = new LogicalViewModelNode(this, this.SourceViewModel.TopLevelNodes.First().ChildNodes.Named("Endpoints"),
                this.SourceViewModel.TopLevelNodes.First().ChildNodes.Named("Endpoints").ChildNodes);
            observables.Add(new LogicalViewModelNode(this, this.SourceViewModel.TopLevelNodes.First<IProductElementViewModel>(), null));
            observables[0].LogicalViewNodes.Add(endpointsItem);

            // Add Endpoints Node with just the Add->Nodes option
            observables[0].LogicalViewNodes[0].FilterMenuItems("Show Diagram", "Add");

            // Add Endpoint -> Add -> Component menu item
            foreach (var endpoint in endpointsItem.LogicalViewNodes)
            {
                endpoint.FilterMenuItems("Show Diagram", "Customize Authentication", "Add to Use Case", "Start Use Case");
                endpoint.MenuOptions.Add(endpoint.InnerViewModel.ChildNodes.Named("Components").MenuOptions.First(o => o.Caption == "Deploy Component..."));
            }

            this.LogicalViewNodes = observables;
        }
Example #10
0
        private void GenerateLibrariesView(bool setTitle = true)
        {
            if (setTitle)
            {
                this.SelectView("Libraries");
            }
            ObservableCollection<LogicalViewModelNode> observables = new ObservableCollection<LogicalViewModelNode>();

            var libraries = this.SourceViewModel.TopLevelNodes.First().ChildNodes.First(n => n.Data.DefinitionName == "Libraries");

            // Add Libraries Node with just the Add->Library option
            var librariesNode = new LogicalViewModelNode(this, libraries, libraries.ChildNodes);
            librariesNode.FilterMenuItems("Add");
            observables.Add(librariesNode);

            var services = this.SourceViewModel.TopLevelNodes.First().ChildNodes.First(n => n.Data.DefinitionName == "Services");

            // Add Services Node with just the Add->Service option
            var servicesNode = new LogicalViewModelNode(this, services, services.ChildNodes);
            servicesNode.FilterMenuItems("Add");
            observables.Add(servicesNode);

            foreach (var service in servicesNode.LogicalViewNodes)
            {
                // Adding menu options for "Add->Commands" and "Add->Events"
                //service.MenuOptions = new ObservableCollection<IMenuOptionViewModel>();
                service.FilterMenuItems("Delete");
                service.MenuOptions.Add(service.InnerViewModel.ChildNodes.Named("Libraries").MenuOptions.First(o => o.Caption == "Add"));

                foreach (var library in service.InnerViewModel.ChildNodes
                    .First(n => n.Data.DefinitionName == "ServiceLibraries").ChildNodes)
                {
                    service.LogicalViewNodes.Add(new LogicalViewModelNode(this, library, null));
                }
            }

            this.LogicalViewNodes = observables;
        }
Example #11
0
        internal void GenerateUseCasesView(bool setTitle = true)
        {
            if (setTitle)
            {
                this.SelectView("Use Cases");
            }
            ObservableCollection<LogicalViewModelNode> observables = new ObservableCollection<LogicalViewModelNode>();
            LogicalViewModelNode usecasesItem = new LogicalViewModelNode(this, this.SourceViewModel.TopLevelNodes.First().ChildNodes.Named("Use Cases"),
                this.SourceViewModel.TopLevelNodes.First().ChildNodes.Named("Use Cases").ChildNodes);
            observables.Add(new LogicalViewModelNode(this, this.SourceViewModel.TopLevelNodes.First<IProductElementViewModel>(), null));
            observables[0].LogicalViewNodes.Add(usecasesItem);

            // Add UseCases Node with just the Create New Use Case option
            observables[0].LogicalViewNodes[0].FilterMenuItems("Add");

            // Add Use Case -> Edit and Delete options
            foreach (var endpoint in usecasesItem.LogicalViewNodes)
            {
                endpoint.FilterMenuItems("Add Started By Endpoint", "Delete");
            }

            this.LogicalViewNodes = observables;
        }