public static TreeView afterSelect_ShowMethodSignatureInSourceCode(this TreeView treeView, O2MappedAstData astData, ascx_SourceCodeViewer codeViewer)
 {
     treeView.afterSelect(
         (treeNode) =>
     {
         var text = WinForms_ExtensionMethods_TreeView.get_Text(treeNode);
         var methodDeclaration = astData.methodDeclaration_withSignature(treeNode.get_Text());
         if (methodDeclaration != null)
         {
             treeNode.color(Color.DarkGreen);
             var file = astData.file(methodDeclaration);
             codeViewer.open(file);
             codeViewer.editor().clearBookmarksAndMarkers();
             codeViewer.editor().setSelectionText(methodDeclaration.StartLocation, methodDeclaration.EndLocation);
         }
         else
         {
             treeNode.color(Color.Red);
         }
     });
     return(treeView);
 }
Esempio n. 2
0
        public void invokeSelectedMethod()
        {
            var selectedNodeTag = WinForms_ExtensionMethods_TreeView.get_Tag(treeView.selected());

            if (selectedNodeTag is MethodInfo)
            {
                var methodToInvoke = (MethodInfo)selectedNodeTag;
                "invoking Method: {0}".info(methodToInvoke);
                "using root object: {0}".info(RootObject);

                //PublicDI.reflection.invoke(targetObject,methodToInvoke);
                var result = RootObject.invoke(methodToInvoke.Name);
                "invocation result: {0}".debug(result);
                if (result.notNull())
                {
                    result.showInfo();
                }
            }
            else
            {
                "Selected Node was not a Method, it was {0}".error(selectedNodeTag.typeName());
            }
        }
Esempio n. 3
0
        public void buildGui()
        {
            try
            {
                var topPanel = this.add_Panel();
                //serializedString = topPanel.insert_Right(200).add_GroupBox("Serialized Object").add_SourceCodeViewer();
                //var serializedStringPanel = serializedString.splitContainer().panel2Collapsed(true);
                propertyGrid = topPanel.add_GroupBox("").add_PropertyGrid().helpVisible(false);
                treeView     = propertyGrid.parent().insert_Left <Panel>().add_TreeView().sort();
                //treeView.splitterDistance(300);
                var toStringValue = propertyGrid.parent().insert_Below <Panel>(100).add_GroupBox("ToString Value (not editable):").add_TextArea();
                var optionsPanel  = treeView.insert_Below <Panel>(70);
                var objectName    = toStringValue.parent().insert_Above <Panel>(20).add_TextBox("name", "");
                //propertyGrid.onValueChange(updateSerializedString);

                //setSerializedStringSyncWithPropertyGrid();

                //serializedString.insert_Above(20).add_Link("Sync Serialized String With PropertyGrid", 0, 0, () => updateSerializedStringSyncWithPropertyGrid());

                LinkLabel invokeLink = null;
                invokeLink = optionsPanel.add_CheckBox("Show Methods", 0, 0,
                                                       (value) =>
                {
                    ShowMethods = value;
                    invokeLink.enabled(value);
                    refresh();
                })
                             .append_Link("invoke", invokeSelectedMethod)
                             .leftAdd(-16).topAdd(5).bringToFront()
                             .enabled(false);

                optionsPanel.add_CheckBox("Show Property and Field info", 22, 0,
                                          (value) =>
                {
                    ShowPropertyAndFieldInfo = value;
                    refresh();
                })
                .autoSize()
                .append_Link("refresh", () => refresh())
                .left(200);
                optionsPanel.add_CheckBox("Sort Values", 0, 135,
                                          (value) =>
                {
                    Sorted = value;
                    try
                    {
                        treeView.sort(Sorted); // throwing "Unable to cast object of type 'System.Boolean' to type 'System.Windows.Forms.TreeView'"
                    }
                    catch                      //(Exception ex)
                    {
                        //ex.log();
                    }
                }).@checked(true);

                simpleView_CheckBox = optionsPanel.add_CheckBox("Simple View", 0, 220,
                                                                (value) =>
                {
                    SimpleView = value;
                    //propertyGrid.splitContainer().panel1Collapsed(value);
                    refresh();
                })
                                      .bringToFront();

                /*showSerializedString_CheckBox = optionsPanel.add_CheckBox("Show serialized string", 44, 0,
                 *  (value) =>
                 *  {
                 *      ShowSerializedString = value;
                 *      serializedStringPanel.panel2Collapsed(!value);
                 *      refresh();
                 *  })
                 *           .autoSize();*/

                createObjectWhenNull_CheckBox = optionsPanel.add_CheckBox("Create Object When Null", 44, 150,
                                                                          (value) =>
                {
                    CreateObjectWhenNull = value;
                })
                                                .bringToFront()
                                                .autoSize();

                treeView.afterSelect <object>(
                    (selectedObject) =>
                {
                    var treeNode = treeView.selected();
                    objectName.set_Text(treeNode.get_Text());
                    var tag = WinForms_ExtensionMethods_TreeView.get_Tag(treeNode);
                    if (tag.notNull())    // && tag.str() != treeNode.get_Text())
                    {
                        propertyGrid.show(selectedObject);
                        var toString = selectedObject.str();
                        if (toString == "System.__ComObject")
                        {
                            toString += " : {0}".format(selectedObject.comObject_TypeName());
                        }
                        toStringValue.set_Text(toString);

                        propertyGrid.parent().set_Text(selectedObject.typeFullName());
                        if (treeNode.nodes().size() == 0)
                        {
                            addObjectPropertyAndFields(treeNode, selectedObject);
                        }
                    }
                    else if (treeNode.nodes().size() == 0)
                    {
                        propertyGrid.show(null as object);
                        propertyGrid.parent().set_Text("[null value]");
                        toStringValue.set_Text("[null value]");
                        objectName.set_Text("");
                        treeNode.color(Color.Red);
                    }
                });
                treeView.add_ContextMenu().add_MenuItem("Invoke Method", () => invokeSelectedMethod());
            }
            catch (Exception ex)
            {
                ex.log("in buildGui", true);
            }
            guiReady = true;
        }
Esempio n. 4
0
        public void addObjectPropertyAndFields_Thread(TreeNode targetNode, object targetObject)
        {
            if (targetObject is String)              // skip strings
            {
                return;
            }

            if (targetObject is IDictionary)
            {
                var dictionary = (IDictionary)targetObject;
                var index      = 0;
                foreach (var key in dictionary.Keys)
                {
                    if (key is String)
                    {
                        targetNode.add_Node(key.str(), dictionary[key]);
                    }
                    else
                    {
                        index++;
                        var value = dictionary[key];
                        targetNode.add_Node("key_{0}: {1}".format(index, key.str()), key);
                        targetNode.add_Node("value_{0}: {1}".format(index, value.str()), value);
                    }
                }
                targetNode.expand();
            }
            else
            if (targetObject is IEnumerable)
            {
                try
                {
                    foreach (var item in (targetObject as IEnumerable))
                    {
                        targetNode.add_Node(item);
                    }
                    targetNode.expand();
                }
                catch (Exception ex)
                {
                    ex.log("in addObjectPropertyAndFields IEnumerable loop");
                }
            }
            else
            {
                if (SimpleView)
                {
                    foreach (var property in targetObject.type().properties())
                    {
                        var propertyValue = PublicDI.reflection.getProperty(property, targetObject);

                        var newNode = targetNode.add_Node(property.Name, propertyValue, false);
                        switch (property.PropertyType.FullName)
                        {
                        case "System.String":
                        case "System.String[]":
                        case "System.Boolean":
                        case "System.DateTime":
                        case "System.Int32":
                        case "System.Int32[]":
                        case "System.Byte":
                        case "System.Int64":
                            newNode.color(Color.Gray);
                            break;

                        default:
                            if (propertyValue.isNull())
                            {
                                if (CreateObjectWhenNull)
                                {
                                    propertyValue = property.PropertyType.ctor();
                                    if (propertyValue.notNull())
                                    {
                                        "CREATE object for type: {0}".debug(propertyValue.type());
                                        PublicDI.reflection.setProperty(property, targetObject, propertyValue);
                                        WinForms_ExtensionMethods_TreeView.set_Tag(newNode, propertyValue);
                                    }
                                    else
                                    {
                                        "Could not create instance of type: {0}".error(propertyValue.type());
                                    }
                                }
                            }
                            break;
                        }
                    }
                }
                else
                {
                    //var objectNode = targetNode.add_Node(targetObject.str(), targetObject);
                    targetNode.add_Node("properties", null).add_Nodes(targetObject.type().properties(),
                                                                      (item) => item.Name,
                                                                      (item) => PublicDI.reflection.getProperty(item, targetObject),
                                                                      (item) => false);

                    targetNode.add_Node("fields", null).add_Nodes(targetObject.type().fieldInfos(),
                                                                  (item) => item.Name,
                                                                  (item) => targetObject.field(item.Name),   //PublicDI.reflection.getField(item,_object),
                                                                  (item) => false);
                    targetNode.set_Text("{0}             ({1} properties {2} fields)"
                                        .format(targetNode.get_Text(),
                                                targetNode.nodes()[1].nodes().size(),
                                                targetNode.nodes()[0].nodes().size()));
                }
            }
            if (ShowPropertyAndFieldInfo)
            {
                targetNode.add_Node("_PropertyInfo(s)", null).add_Nodes(targetObject.type().properties(),
                                                                        (item) => item.Name);
                targetNode.add_Node("_FieldInfo(s)", null).add_Nodes(targetObject.type().fieldInfos(),
                                                                     (item) => item.Name);
            }
            if (ShowMethods)
            {
                targetNode.add_Node("MethodInfo(s)", null).add_Nodes(targetObject.type().methods(),
                                                                     (item) => item.Name);
            }
        }
        //note:the results of this are not consistent
        public static TreeView showInfo_ComObject(this  object _rootObject)
        {
            var treeView     = O2Gui.open <Panel>("showInfo_ComObject", 400, 400).add_TreeView();
            var propertyGrid = treeView.insert_Below <Panel>().add_PropertyGrid();

            Action <TreeNode, object> add_Object =
                (treeNode, _object) => {
                treeNode.clear();
                //treeNode.add_Node(_object.str(), _object, true);
                WinForms_ExtensionMethods_TreeView.add_Node(treeNode, _object.str(), _object, true);
            };
            Action <TreeNode, IEnumerable> add_Objects =
                (treeNode, items) => {
                treeNode.clear();
                foreach (var item in items)
                {
                    //treeNode.add_Node(item.str(), item, true);
                    WinForms_ExtensionMethods_TreeView.add_Node(treeNode, item.str(), item, true);
                }
            };


            treeView.beforeExpand <object>(
                (treeNode, _object) => {
                if (_object is String)
                {
                    treeNode.add_Node(_object);
                }
                else
                {
                    if (_object is IEnumerable)
                    {
                        add_Objects(treeNode, _object as IEnumerable);
                    }
                    else
                    {
                        foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(_object))
                        {
                            try
                            {
                                var value = property.GetValue(_object);
                                treeNode.add_Node(property.Name.str(), value, true);
                            }
                            catch (Exception ex)
                            {
                                treeNode.add_Node(property.Name.str(), "O2 ERROR:".format(ex.Message), false);
                            }
                        }
                    }
                }
            });

            treeView.afterSelect <object>(
                (_object) => propertyGrid.show(_object));

            if (_rootObject is IEnumerable)
            {
                add_Objects(treeView.rootNode(), _rootObject as IEnumerable);
            }
            else
            {
                add_Object(treeView.rootNode(), _rootObject);
            }
            return(treeView);
        }