Exemplo n.º 1
0
 public static TreeNode add_Nodes <T>(this TreeNode treeNode, IEnumerable <T> collection, Func <T, string> getNodeName, Func <T, object> getTagValue, Func <T, bool> addDummyNode)
 {
     foreach (var item in collection)
     {
         Ascx_ExtensionMethods.add_Node(treeNode, getNodeName(item), getTagValue(item), addDummyNode(item));
     }
     return(treeNode);
 }
Exemplo n.º 2
0
        public static T splitterDistance <T>(this T control, int distance)
            where T : Control
        {
            var splitContainer = control.splitContainer();

            if (splitContainer.notNull())
            {
                Ascx_ExtensionMethods.splitterDistance(splitContainer, distance);
            }
            return(control);
        }
        // insert_...(width)
        public static Panel insert_Left(this Control control, int width)
        {
            var panel = control.insert_Left <Panel>(width);

            // to deal with bug in insert_Left<Panel>
            //replace with (when merging extension methods): panel.splitterDistance(width);
            {
                var splitContainer = control.parent <SplitContainer>();
                Ascx_ExtensionMethods.splitterDistance(splitContainer, width);
            }

            return(panel);
        }
Exemplo n.º 4
0
 //so that it doesn't conflict with the version from O2.DotNetWrappers.ExtensionMethods.Ascx_ExtensionMethods
 public static TreeView onDoubleClk <T>(this TreeView treeView, Action <T> callback)
 {
     treeView.invokeOnThread(
         () => {
         treeView.DoubleClick +=
             (sender, e) => {
             object tag = Ascx_ExtensionMethods.get_Tag(treeView.selected());
             if (tag is T)
             {
                 O2Thread.mtaThread(() => callback((T)tag));
             }
         };
     });
     return(treeView);
 }
        public void invokeSelectedMethod()
        {
            var selectedNodeTag = Ascx_ExtensionMethods.get_Tag(treeView.selected());

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

                //PublicDI.reflection.invoke(targetObject,methodToInvoke);
                var result = RootObject.invoke(methodToInvoke.Name);
                "invocation result: {0}".debug(result);
                if (result.notNull())
                {
                    Kernel.show.info(result);
                }
            }
            else
            {
                "Selected Node was not a Method, it was {0}".error(selectedNodeTag.typeName());
            }
        }
Exemplo n.º 6
0
 public static List <T> tags <T>(this List <TreeNode> treeNodes)
 {
     return((from treeNode in treeNodes
             where Ascx_ExtensionMethods.get_Tag(treeNode) is T
             select(T) Ascx_ExtensionMethods.get_Tag(treeNode)).toList());
 }
Exemplo n.º 7
0
        //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);
                Ascx_ExtensionMethods.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);
                    Ascx_ExtensionMethods.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);
        }
        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 = Ascx_ExtensionMethods.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.comTypeName());
                        }
                        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);
                        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;
        }