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; }
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; }
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 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); }
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; }
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; }
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; }
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; }