private IAssemblyConcept SelectAssemblyReference(ISyntaxNode concept, string propertyName, Visual control) { // get scope provider IScopeProvider scopeProvider = SyntaxTreeManager.GetScopeProvider(concept.GetType()); if (scopeProvider == null) { return(null); } // get references in the scope IEnumerable <ISyntaxNode> scope = scopeProvider.Scope(concept, propertyName); if (scope == null || scope.Count() == 0) { return(null); } // build tree view TreeNodeViewModel viewModel = SyntaxNodeExtensions.BuildAssemblySelectorTree(scope); // open dialog window PopupWindow dialog = new PopupWindow(control, viewModel); _ = dialog.ShowDialog(); if (dialog.Result == null) { return(null); } // return selected reference return(dialog.Result.NodePayload as IAssemblyConcept); }
private Type SelectTypeReference(ISyntaxNode context, Type scopeType, Visual control) { // get scope provider IScopeProvider scopeProvider = SyntaxTreeManager.GetScopeProvider(scopeType); if (scopeProvider == null) { return(scopeType); } // scope provider is not registered // get references in the scope IEnumerable <Type> scope = scopeProvider.Scope(context, scopeType); if (scope == null || scope.Count() == 0) { return(scopeType); } // scope provider found nothing // build Type selection tree TreeNodeViewModel viewModel = SyntaxNodeExtensions.BuildTypeSelectionTree(scope); // open dialog window PopupWindow dialog = new PopupWindow(control, viewModel); _ = dialog.ShowDialog(); if (dialog.Result == null) { return(null); } // user made no choice // return selected reference return(dialog.Result.NodePayload as Type); }
private object SelectEnumerationValue(Type enumType, Visual control) { // build tree view TreeNodeViewModel viewModel = SyntaxNodeExtensions.BuildEnumerationSelectorTree(enumType); // open dialog window PopupWindow dialog = new PopupWindow(control, viewModel); _ = dialog.ShowDialog(); if (dialog.Result == null) { return(null); } // return selected enumeration value return(dialog.Result.NodePayload); }
private ISyntaxNode SelectSyntaxNodeReference(Type childConcept, ISyntaxNode parentConcept, string propertyName, Visual control) { // get scope provider IScopeProvider scopeProvider = SyntaxTreeManager.GetScopeProvider(childConcept); if (scopeProvider == null) { return(null); // TODO: if selector is for language concepts which are not yet nodes of the syntax tree !!! // Create ConceptViewModel and ConceptModel // SyntaxTreeController.Current.CreateSyntaxNode(this, new childConcept()); } // get references in the scope IEnumerable <ISyntaxNode> scope = scopeProvider.Scope(parentConcept, propertyName); if (scope == null || scope.Count() == 0) { return(null); } // build tree view TreeNodeViewModel viewModel = SyntaxNodeExtensions.BuildReferenceSelectorTree(scope); // open dialog window PopupWindow dialog = new PopupWindow(control, viewModel); _ = dialog.ShowDialog(); if (dialog.Result == null) { return(null); } // return selected reference return(dialog.Result.NodePayload as ISyntaxNode); }