Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }