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); }
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); }
//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()); } }
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()); }
//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; }