示例#1
0
        private void SelectTypeDialog()
        {
            var dialog = new SelectTypeDialog(0, false, true)
            {
                ShowInTaskbar = false
            };

            dialog.DialogEvent += SelectTypeDialog_DialogEvent;
            dialog.Activated   += dialog_Load;
            Hide();
            ShowSubForm(dialog);
            Enabled = false;
        }
示例#2
0
        public void SelectDialog()
        {
            var dialog = new SelectTypeDialog(text.Text.Trim());

            dialog.DialogEvent += SelectTypeDialog_DialogEvent;

            Form owner = FindForm();

            if (owner is FreeDialog)
            {
                var fOwner = owner as FreeDialog;
                fOwner.ShowSubForm(dialog);
            }
            else
            {
                dialog.Show();                 // будем считать, что вызова из основной формы не производится
            }
            if (owner != null)
            {
                owner.Enabled = false;
            }
        }
示例#3
0
        public void OnItemSelected(object selectedValue)
        {
            // TODO: Move dialogs to view
            if (selectedValue is MethodSpecifier methodSpecifier)
            {
                AddNode <CallMethodNode>(methodSpecifier, methodSpecifier.GenericArguments.Select(genArg => new GenericType(genArg.Name)).Cast <BaseType>().ToList());
            }
            else if (selectedValue is VariableSpecifier variableSpecifier)
            {
                // Open variable get / set for the property
                // Determine whether the getters / setters are public via GetAccessors
                // and the return type of the accessor methods

                if (EditorCommands.OpenVariableGetSet.CanExecute(variableSpecifier))
                {
                    EditorCommands.OpenVariableGetSet.Execute(variableSpecifier);
                }
            }
            else if (selectedValue is MakeDelegateTypeInfo makeDelegateTypeInfo)
            {
                var methods = App.ReflectionProvider.GetMethods(
                    new Reflection.ReflectionProviderMethodQuery()
                    .WithType(makeDelegateTypeInfo.Type)
                    .WithVisibleFrom(makeDelegateTypeInfo.FromType));

                SelectMethodDialog selectMethodDialog = new SelectMethodDialog()
                {
                    Methods = methods,
                };

                if (selectMethodDialog.ShowDialog() == true)
                {
                    // MakeDelegateNode(Method method, MethodSpecifier methodSpecifier)

                    AddNode <MakeDelegateNode>(selectMethodDialog.SelectedMethod);
                }
            }
            else if (selectedValue is TypeSpecifier t)
            {
                if (t == TypeSpecifier.FromType <ForLoopNode>())
                {
                    AddNode <ForLoopNode>();
                }
                else if (t == TypeSpecifier.FromType <IfElseNode>())
                {
                    AddNode <IfElseNode>();
                }
                else if (t == TypeSpecifier.FromType <ConstructorNode>())
                {
                    SelectTypeDialog selectTypeDialog = new SelectTypeDialog();
                    if (selectTypeDialog.ShowDialog() == true)
                    {
                        TypeSpecifier selectedType = selectTypeDialog.SelectedType;

                        if (selectedType.Equals(null))
                        {
                            throw new Exception($"Type {selectTypeDialog.SelectedType} was not found using reflection.");
                        }

                        // Get all public constructors for the type
                        IEnumerable <ConstructorSpecifier> constructors =
                            App.ReflectionProvider.GetConstructors(selectedType);

                        if (constructors?.Any() == true)
                        {
                            // Just choose the first constructor we find
                            ConstructorSpecifier constructorSpecifier = constructors.ElementAt(0);

                            // ConstructorNode(Method method, ConstructorSpecifier specifier)

                            AddNode <ConstructorNode>(constructorSpecifier);
                        }
                    }
                }
                else if (t == TypeSpecifier.FromType <TypeOfNode>())
                {
                    // TypeOfNode(Method method)
                    AddNode <TypeOfNode>();
                }
                else if (t == TypeSpecifier.FromType <ExplicitCastNode>())
                {
                    // ExplicitCastNode(Method method)
                    AddNode <ExplicitCastNode>();
                }
                else if (t == TypeSpecifier.FromType <ReturnNode>())
                {
                    AddNode <ReturnNode>();
                }
                else if (t == TypeSpecifier.FromType <MakeArrayNode>())
                {
                    // MakeArrayNode(Method method)
                    AddNode <MakeArrayNode>();
                }
                else if (t == TypeSpecifier.FromType <ThrowNode>())
                {
                    // ThrowNode(Method method)
                    AddNode <ThrowNode>();
                }
                else if (t == TypeSpecifier.FromType <TernaryNode>())
                {
                    // TernaryNode(NodeGraph graph)
                    AddNode <TernaryNode>();
                }
                else if (t == TypeSpecifier.FromType <LiteralNode>())
                {
                    SelectTypeDialog selectTypeDialog = new SelectTypeDialog();
                    if (selectTypeDialog.ShowDialog() == true)
                    {
                        TypeSpecifier selectedType = selectTypeDialog.SelectedType;

                        if (selectedType.Equals(null))
                        {
                            throw new Exception($"Type {selectTypeDialog.SelectedType} was not found using reflection.");
                        }

                        // LiteralNode(Method method, TypeSpecifier literalType)
                        AddNode <LiteralNode>(selectedType);
                    }
                }
                else if (t == TypeSpecifier.FromType <TypeNode>())
                {
                    SelectTypeDialog selectTypeDialog = new SelectTypeDialog();
                    if (selectTypeDialog.ShowDialog() == true)
                    {
                        TypeSpecifier selectedType = selectTypeDialog.SelectedType;

                        if (selectedType.Equals(null))
                        {
                            throw new Exception($"Type {selectTypeDialog.SelectedType} was not found using reflection.");
                        }

                        // LiteralNode(Method method, TypeSpecifier literalType)
                        AddNode <TypeNode>(selectedType);
                    }
                }
                else if (t == TypeSpecifier.FromType <MakeArrayTypeNode>())
                {
                    AddNode <MakeArrayTypeNode>();
                }
                else if (t == TypeSpecifier.FromType <AwaitNode>())
                {
                    AddNode <AwaitNode>();
                }
                else if (t == TypeSpecifier.FromType <DefaultNode>())
                {
                    AddNode <DefaultNode>();
                }
                else
                {
                    // Build a type node
                    AddNode <TypeNode>(t);
                }
            }
        }
示例#4
0
 private static bool PromptForType(out TypeSpecifier type)
 {
     return(SelectTypeDialog.Prompt(out type));
 }