void ValueNodeTextBox_DrawText(object sender, DrawEventArgs e) { Color grayText = PluginBase.MainForm.GetThemeColor("DataTreeControl.GrayText", SystemColors.GrayText); Color errorText = PluginBase.MainForm.GetThemeColor("DataTreeControl.ErrorText", Color.Red); Color hiliteText = PluginBase.MainForm.GetThemeColor("DataTreeControl.HighlightText", SystemColors.HighlightText); e.TextColor = PluginBase.MainForm.GetThemeColor("DataTreeControl.ForeColor", SystemColors.WindowText); if (e.Node.IsSelected && this.ContainsFocus) { e.TextColor = hiliteText; } try { VariableNode variableNode = e.Node.Tag as VariableNode; if (variableNode != null) { FlashInterface flashInterface = PluginMain.debugManager.FlashInterface; if (variableNode.Variable != null && variableNode.Variable.hasValueChanged(flashInterface.Session)) { e.TextColor = errorText; } } else if (e.Node.Tag is ErrorNode) { e.TextColor = e.Node.IsSelected ? hiliteText : grayText; } } catch (NullReferenceException) {} }
void TreeExpanding(Object sender, TreeViewAdvEventArgs e) { if (e.Node.Index >= 0) { DataNode node = e.Node.Tag as DataNode; if (node.Nodes.Count == 0) { FlashInterface flashInterface = PluginMain.debugManager.FlashInterface; SortedList <DataNode, DataNode> nodes = new SortedList <DataNode, DataNode>(); SortedList <DataNode, DataNode> inherited = new SortedList <DataNode, DataNode>(); foreach (Variable member in node.Variable.getValue().getMembers(flashInterface.Session)) { if ((member.Scope == VariableAttribute.PRIVATE_SCOPE && member.Level > 0) || member.Scope == VariableAttribute.INTERNAL_SCOPE || member.isAttributeSet(VariableAttribute.IS_STATIC)) { // Flex Builder doesn't display these so we won't either. continue; } DataNode memberNode = new DataNode(member); if (member.Level > 0) { inherited.Add(memberNode, memberNode); } else { nodes.Add(memberNode, memberNode); } } if (inherited.Count > 0) { DataNode inheritedNode = new DataNode("[inherited]"); foreach (DataNode item in inherited.Keys) { inheritedNode.Nodes.Add(item); } node.Nodes.Add(inheritedNode); } foreach (DataNode item in nodes.Keys) { node.Nodes.Add(item); } } } }
void TreeExpanding(Object sender, TreeViewAdvEventArgs e) { if (e.Node.Index >= 0) { DataNode node = e.Node.Tag as DataNode; if (node.Nodes.Count == 0) { FlashInterface flashInterface = PluginMain.debugManager.FlashInterface; SortedList <DataNode, DataNode> nodes = new SortedList <DataNode, DataNode>(); SortedList <DataNode, DataNode> inherited = new SortedList <DataNode, DataNode>(); SortedList <DataNode, DataNode> statics = new SortedList <DataNode, DataNode>(); foreach (Variable member in node.Variable.getValue().getMembers(flashInterface.Session)) { DataNode memberNode = new DataNode(member); if (member.isAttributeSet(VariableAttribute.IS_STATIC)) { statics.Add(memberNode, memberNode); } else if (member.Level > 0) { inherited.Add(memberNode, memberNode); } else { nodes.Add(memberNode, memberNode); } } if (inherited.Count > 0) { DataNode inheritedNode = new DataNode("[inherited]"); foreach (DataNode item in inherited.Keys) { inheritedNode.Nodes.Add(item); } node.Nodes.Add(inheritedNode); } if (statics.Count > 0) { DataNode staticNode = new DataNode("[static]"); foreach (DataNode item in statics.Keys) { staticNode.Nodes.Add(item); } node.Nodes.Add(staticNode); } foreach (DataNode item in nodes.Keys) { node.Nodes.Add(item); } } } }
void ValueNodeTextBox_DrawText(object sender, DrawEventArgs e) { try { DataNode node = e.Node.Tag as DataNode; FlashInterface flashInterface = PluginMain.debugManager.FlashInterface; if (node.Variable != null && node.Variable.hasValueChanged(flashInterface.Session)) { e.TextColor = Color.Red; } } catch (NullReferenceException) { } }
void ValueNodeTextBox_DrawText(object sender, DrawEventArgs e) { try { VariableNode variableNode = e.Node.Tag as VariableNode; if (variableNode != null) { FlashInterface flashInterface = PluginMain.debugManager.FlashInterface; if (variableNode.Variable != null && variableNode.Variable.hasValueChanged(flashInterface.Session)) { e.TextColor = Color.Red; } } else if (e.Node.Tag is ErrorNode) { e.TextColor = e.Node.IsSelected ? Color.White : Color.Gray; } } catch (NullReferenceException) {} }
public void ListChildItems(ValueNode node) { if (node != null && node.Nodes.Count == 0 && node.PlayerValue != null) { FlashInterface flashInterface = PluginMain.debugManager.FlashInterface; List <VariableNode> nodes = new List <VariableNode>(); List <VariableNode> inherited = new List <VariableNode>(); List <VariableNode> statics = new List <VariableNode>(); int tmpLimit = node.ChildrenShowLimit; foreach (Variable member in node.PlayerValue.getMembers(flashInterface.Session)) { VariableNode memberNode = new VariableNode(member) { HideClassId = PluginMain.settingObject.HideClassIds, HideFullClasspath = PluginMain.settingObject.HideFullClasspaths }; if (member.isAttributeSet(VariableAttribute_.IS_STATIC)) { statics.Add(memberNode); } else if (member.getLevel() > 0) { inherited.Add(memberNode); } else { nodes.Add(memberNode); } } // inherited vars if (inherited.Count > 0) { if (PluginMain.settingObject.CombineInherited) { // list inherited alongside main class members foreach (DataNode item in inherited) { node.Nodes.Add(item); } } else { // list inherited in a [inherited] group ValueNode inheritedNode = new ValueNode("[inherited]"); inherited.Sort(); foreach (DataNode item in inherited) { inheritedNode.Nodes.Add(item); } node.Nodes.Add(inheritedNode); } } // static vars if (!PluginMain.settingObject.HideStaticMembers && statics.Count > 0) { DataNode staticNode = new ValueNode("[static]"); statics.Sort(); foreach (DataNode item in statics) { staticNode.Nodes.Add(item); } node.Nodes.Add(staticNode); } // test children foreach (String ch in node.PlayerValue.getClassHierarchy(false)) { if (ch.Equals("flash.display::DisplayObjectContainer")) { double numChildren = ((java.lang.Double)node.PlayerValue.getMemberNamed(flashInterface.Session, "numChildren").getValue().getValueAsObject()).doubleValue(); DataNode childrenNode = new ValueNode("[children]"); for (int i = 0; i < numChildren; i++) { try { IASTBuilder b = new ASTBuilder(false); string cmd = node.GetVariablePath() + ".getChildAt(" + i + ")"; ValueExp exp = b.parse(new java.io.StringReader(cmd)); var ctx = new ExpressionContext(flashInterface.Session, flashInterface.GetFrames()[PluginMain.debugManager.CurrentFrame]); var obj = exp.evaluate(ctx); if (obj is flash.tools.debugger.concrete.DValue) { obj = new flash.tools.debugger.concrete.DVariable("getChildAt(" + i + ")", (flash.tools.debugger.concrete.DValue)obj, ((flash.tools.debugger.concrete.DValue)obj).getIsolateId()); } DataNode childNode = new VariableNode((Variable)obj) { HideClassId = PluginMain.settingObject.HideClassIds, HideFullClasspath = PluginMain.settingObject.HideFullClasspaths }; childNode.Text = "child_" + i; childrenNode.Nodes.Add(childNode); } catch (Exception) { } } node.Nodes.Add(childrenNode); } else if (ch.Equals("flash.events::EventDispatcher")) { Variable list = node.PlayerValue.getMemberNamed(flashInterface.Session, "listeners"); var omg = list.getName(); /* * double numChildren = ((java.lang.Double)node.Variable.getValue().getMemberNamed(flashInterface.Session, "numChildren").getValue().getValueAsObject()).doubleValue(); * DataNode childrenNode = new DataNode("[children]"); * for (int i = 0; i < numChildren; i++) * { * try * { * * IASTBuilder b = new ASTBuilder(false); * string cmd = GetVariablePath(node) + ".getChildAt(" + i + ")"; * ValueExp exp = b.parse(new java.io.StringReader(cmd)); * var ctx = new ExpressionContext(flashInterface.Session, flashInterface.Session.getFrames()[PluginMain.debugManager.CurrentFrame]); * var obj = exp.evaluate(ctx); * if (obj is flash.tools.debugger.concrete.DValue) obj = new flash.tools.debugger.concrete.DVariable("child_" + i, (flash.tools.debugger.concrete.DValue)obj); * DataNode childNode = new DataNode((Variable)obj); * childrenNode.Nodes.Add(childNode); * } * catch (Exception) { } * } * node.Nodes.Add(childrenNode); */ } } //test children nodes.Sort(); // add child items _tree.BeginUpdate(); foreach (DataNode item in nodes) { if (0 == tmpLimit--) { break; } node.Nodes.Add(item); } if (tmpLimit == -1) { DataNode moreNode = new ContinuedDataNode(); node.Nodes.Add(moreNode); } _tree.EndUpdate(); } }
void TreeExpanding(Object sender, TreeViewAdvEventArgs e) { if (e.Node.Index >= 0) { DataNode node = e.Node.Tag as DataNode; if (node.Nodes.Count == 0 && node.Variable != null) { FlashInterface flashInterface = PluginMain.debugManager.FlashInterface; List <DataNode> nodes = new List <DataNode>(); List <DataNode> inherited = new List <DataNode>(); List <DataNode> statics = new List <DataNode>(); int tmpLimit = node.ChildrenShowLimit; foreach (Variable member in node.Variable.getValue().getMembers(flashInterface.Session)) { DataNode memberNode = new DataNode(member); if (member.isAttributeSet(VariableAttribute_.IS_STATIC)) { statics.Add(memberNode); } else if (member.getLevel() > 0) { inherited.Add(memberNode); } else { nodes.Add(memberNode); } } if (inherited.Count > 0) { DataNode inheritedNode = new DataNode("[inherited]"); inherited.Sort(); foreach (DataNode item in inherited) { inheritedNode.Nodes.Add(item); } node.Nodes.Add(inheritedNode); } if (statics.Count > 0) { DataNode staticNode = new DataNode("[static]"); statics.Sort(); foreach (DataNode item in statics) { staticNode.Nodes.Add(item); } node.Nodes.Add(staticNode); } //test children foreach (String ch in node.Variable.getValue().getClassHierarchy(false)) { if (ch.Equals("flash.display::DisplayObjectContainer")) { double numChildren = ((java.lang.Double)node.Variable.getValue().getMemberNamed(flashInterface.Session, "numChildren").getValue().getValueAsObject()).doubleValue(); DataNode childrenNode = new DataNode("[children]"); for (int i = 0; i < numChildren; i++) { try { IASTBuilder b = new ASTBuilder(false); string cmd = GetVariablePath(node) + ".getChildAt(" + i + ")"; ValueExp exp = b.parse(new java.io.StringReader(cmd)); var ctx = new ExpressionContext(flashInterface.Session, flashInterface.Session.getFrames()[PluginMain.debugManager.CurrentFrame]); var obj = exp.evaluate(ctx); if (obj is flash.tools.debugger.concrete.DValue) { obj = new flash.tools.debugger.concrete.DVariable("getChildAt(" + i + ")", (flash.tools.debugger.concrete.DValue)obj); } DataNode childNode = new DataNode((Variable)obj); childNode.Text = "child_" + i; childrenNode.Nodes.Add(childNode); } catch (Exception) { } } node.Nodes.Add(childrenNode); } else if (ch.Equals("flash.events::EventDispatcher")) { Variable list = node.Variable.getValue().getMemberNamed(flashInterface.Session, "listeners"); var omg = list.getName(); /* * double numChildren = ((java.lang.Double)node.Variable.getValue().getMemberNamed(flashInterface.Session, "numChildren").getValue().getValueAsObject()).doubleValue(); * DataNode childrenNode = new DataNode("[children]"); * for (int i = 0; i < numChildren; i++) * { * try * { * * IASTBuilder b = new ASTBuilder(false); * string cmd = GetVariablePath(node) + ".getChildAt(" + i + ")"; * ValueExp exp = b.parse(new java.io.StringReader(cmd)); * var ctx = new ExpressionContext(flashInterface.Session, flashInterface.Session.getFrames()[PluginMain.debugManager.CurrentFrame]); * var obj = exp.evaluate(ctx); * if (obj is flash.tools.debugger.concrete.DValue) obj = new flash.tools.debugger.concrete.DVariable("child_" + i, (flash.tools.debugger.concrete.DValue)obj); * DataNode childNode = new DataNode((Variable)obj); * childrenNode.Nodes.Add(childNode); * } * catch (Exception) { } * } * node.Nodes.Add(childrenNode); * */ } } //test children nodes.Sort(); _tree.BeginUpdate(); foreach (DataNode item in nodes) { if (0 == tmpLimit--) { break; } node.Nodes.Add(item); } if (tmpLimit == -1) { DataNode moreNode = new DataNode("..."); node.Nodes.Add(moreNode); } _tree.EndUpdate(); } } }