public DslDesigner(IServiceProvider serviceProvider) { this.serviceProvider = serviceProvider; this.docView = GetDocView(this.serviceProvider); while (this.docView == null) { Thread.Sleep(10); } }
/// <summary> /// Creates or updates the Confeaturator tree. /// </summary> private void RefreshConfeaturatorTree() { try { SingleDiagramDocView diagramDocView = DesignerHelper.GetDiagramDocView(serviceProvider); FeatureModelDSLDiagram diagram = diagramDocView.CurrentDiagram as FeatureModelDSLDiagram; if (diagram != null) { FeatureModel featureModel = diagram.Subject as FeatureModel; if (featureModel != null) { Feature rootFeature = FeatureModel.GetCrossDiagramRootFeature(featureModel); trvFeatures.Nodes.Clear(); if (rootFeature != null) { addedFeatures = new List <string>(); FeatureModelTreeNode rootNode = CreateFeatureModelTreeNode(rootFeature); trvFeatures.Nodes.Add(rootNode); rootNode.Expand(); rootNode.Kind = FeatureModelNodeKind.Root; rootNode.Status = FeatureModelNodeStatus.CheckedAndDisabled; trvFeatures.SelectedNode = rootNode; } else { Util.ShowError("Feature model was loaded but root feature is null."); } } else { Util.ShowError("Could not load feature model into Confeaturator. Please ensure you have a valid feature model file opened."); } } else { Util.ShowError("Please have the feature model diagram you want to refresh into Confeaturator open and active in Visual Studio."); } } catch (Exception ex) { Util.ShowError("Error loading feature model into Confeaturator: " + ex.Message); } }
private static void SetCurrentDiagram(SingleDiagramDocView docview, PatternModelSchemaDiagram diagram, PatternSchema pattern) { docview.Diagram = diagram; pattern.WithTransaction(prod => prod.CurrentDiagramId = diagram.Id.ToString()); }