public virtual void UpdateVisibility() { for (int i = 0; i < invisibleNodes.Count;) { if (invisibleNodes[i].Visible) { invisibleNodes[i].AddTo(this); invisibleNodes.RemoveAt(i); continue; } ++i; } foreach (TreeNode node in Nodes) { if (node is ExtTreeNode) { ExtTreeNode extTreeNode = (ExtTreeNode)node; if (!extTreeNode.Visible) { invisibleNodes.Add(extTreeNode); } } } foreach (TreeNode node in invisibleNodes) { Nodes.Remove(node); } foreach (TreeNode node in Nodes) { if (node is ExtTreeNode) { ((ExtTreeNode)node).UpdateVisibility(); } } }
protected override void OnDragOver(DragEventArgs e) { base.OnDragOver(e); Point clientcoordinate = PointToClient(new Point(e.X, e.Y)); ExtTreeNode node = GetNodeAt(clientcoordinate) as ExtTreeNode; if (node != null) { DragDropEffects effect = DragDropEffects.None; if ((e.KeyState & 8) > 0) // CTRL key pressed. { effect = DragDropEffects.Copy; } else { effect = DragDropEffects.Move; } e.Effect = node.GetDragDropEffect(e.Data, effect); if (e.Effect != DragDropEffects.None) { SelectedNode = node; } } }
public void SetUpFixture() { doc = new XmlDocument(); doc.LoadXml("<root><firstChild><secondChild/></firstChild><textChild>some text</textChild></root>"); using (XmlTreeViewControl treeView = new XmlTreeViewControl()) { treeView.Document = doc; treeView.SelectedNode = treeView.Nodes[0]; rootNodeElement = treeView.SelectedElement; isRootElementSelected = treeView.IsElementSelected; rootNode = (ExtTreeNode)treeView.SelectedNode; rootNodeHadChildrenBeforeExpansion = rootNode.Nodes.Count > 0; rootNode.Expanding(); firstChildNode = (ExtTreeNode)rootNode.Nodes[0]; firstChildNodeHadChildrenBeforeExpansion = firstChildNode.Nodes.Count > 0; firstChildNode.Expanding(); secondChildNode = (ExtTreeNode)firstChildNode.Nodes[0]; textChildNode = (ExtTreeNode)rootNode.Nodes[1]; textChildNode.Expanding(); textNode = (ExtTreeNode)textChildNode.Nodes[0]; isTextContentSelectedBeforeTextNodeSelected = treeView.IsTextNodeSelected; textContentBefore = treeView.SelectedTextNode; treeView.SelectedNode = textNode; isTextContentSelectedAfterTextNodeSelected = treeView.IsTextNodeSelected; textContentAfter = treeView.SelectedTextNode; textNodeElement = treeView.SelectedElement; } }
protected override void OnDragDrop(DragEventArgs e) { base.OnDragDrop(e); Point clientcoordinate = PointToClient(new Point(e.X, e.Y)); ExtTreeNode node = GetNodeAt(clientcoordinate) as ExtTreeNode; if (node != null) { // when dragging very fast from one node to another, it's possible that // OnDragDrop raises without OnDragOver for the node. // So we have to call HandleDragOver to ensure that we don't call DoDragDrop for // invalid operations. try { HandleDragOver(e, node); if (e.Effect != DragDropEffects.None) { node.DoDragDrop(e.Data, e.Effect); SortParentNodes(node); } } catch (Exception ex) { // WinForms silently discards exceptions in the drag'n'drop events; so we need to catch+report any errors SD.MessageService.ShowException(ex); } } }
protected override void OnDrawNode(DrawTreeNodeEventArgs e) { if (!inRefresh) { ExtTreeNode node = e.Node as ExtTreeNode; if (node != null && !node.DrawDefault) { node.Draw(e); e.DrawDefault = false; } else { if ((e.State & (TreeNodeStates.Selected | TreeNodeStates.Focused)) == TreeNodeStates.Selected) { // node is selected, but not focussed: // HACK: work around TreeView bug in OwnerDrawText mode: // overpaint blue selection with the correct gray selection e.Graphics.FillRectangle(SystemBrushes.Control, e.Bounds); e.Graphics.DrawString(e.Node.Text, this.Font, SystemBrushes.ControlText, e.Bounds.Location); e.DrawDefault = false; } else { e.DrawDefault = true; } } } else { e.DrawDefault = false; } base.OnDrawNode(e); }
public void SetUp() { solution = new Solution(); // Create a project to display in the test tree view. project = new MockCSharpProject(solution, "TestProject"); ReferenceProjectItem nunitFrameworkReferenceItem = new ReferenceProjectItem(project); nunitFrameworkReferenceItem.Include = "NUnit.Framework"; ProjectService.AddProjectItem(project, nunitFrameworkReferenceItem); // Add a test class with a TestFixture attributes. projectContent = new MockProjectContent(); projectContent.Language = LanguageProperties.None; testClass1 = new MockClass(projectContent, "Project.Tests.MyTestFixture"); testClass1.Attributes.Add(new MockAttribute("TestFixture")); projectContent.Classes.Add(testClass1); testClass2 = new MockClass(projectContent, "Project.MyTestFixture"); testClass2.Attributes.Add(new MockAttribute("TestFixture")); projectContent.Classes.Add(testClass2); testFrameworks = new MockTestFrameworksWithNUnitFrameworkSupport(); dummyTreeView = new DummyParserServiceTestTreeView(testFrameworks); dummyTreeView.ProjectContentForProject = projectContent; // Load the projects into the test tree view. treeView = dummyTreeView as TestTreeView; solution.Folders.Add(project); treeView.AddSolution(solution); nodes = treeView.Nodes; rootNode = (ExtTreeNode)treeView.Nodes[0]; treeView.SelectedNode = rootNode; testProject = treeView.SelectedTestProject; }
/// <summary> /// Creates a new TestNamespaceTreeNode /// </summary> /// <remarks> /// Note that the Namespace child nodes are added in /// the constructor not whilst the node is expanding /// via the Initialize method. This is so the icon for the /// node can be updated even if the parent node is not /// expanded. The alternative is to have each namespace node, /// even if it does not have any class child nodes, to /// store all the classes that are below it in the tree and /// update the icon based on their results. The assumption /// is that there are fewer namespace nodes than classes so /// adding the namespace nodes here does not matter. /// </remarks> /// <param name="namespacePrefix">The first part of the /// namespace (including any dot characters) before this /// particular namespace.</param> /// <param name="name">The name of the namespace without any /// dot characters (e.g. the name at this particular /// location in the tree).</param> public TestNamespaceTreeNode(TestProject testProject, string namespacePrefix, string name) : base(testProject, name) { ns = name; this.namespacePrefix = namespacePrefix; fullNamespace = GetFullNamespace(namespacePrefix, ns); GetTestClasses(); testProject.TestClasses.TestClassAdded += TestClassAdded; testProject.TestClasses.TestClassRemoved += TestClassRemoved; // Add namespace nodes - do not add them on node expansion. foreach (string namespaceName in TestProject.GetChildNamespaces(fullNamespace)) { TestNamespaceTreeNode node = new TestNamespaceTreeNode(TestProject, fullNamespace, namespaceName); node.AddTo(this); namespaceChildNodes.Add(node); node.ImageIndexChanged += TestNamespaceNodeImageIndexChanged; } // Add a dummy node if there are no namespaces since // there might be class nodes which will be added // lazily when the node is expanded. if (namespaceChildNodes.Count == 0) { dummyNode = new ExtTreeNode(); Nodes.Add(dummyNode); } UpdateImageListIndex(); }
public void NonCodeCoverageNodeNotInitialised() { DerivedCodeCoverageTreeView treeView = new DerivedCodeCoverageTreeView(); ExtTreeNode node = new ExtTreeNode(); treeView.CallOnAfterSelect(node); Assert.IsFalse(node.IsInitialized); }
/// <summary> /// Adds all the elements. /// </summary> public static void AddNodes(ExtTreeNode parentNode, XmlNodeList nodes) { foreach (XmlNode childNode in nodes) { XmlElement childElement = childNode as XmlElement; if (childElement != null) { AddNode(parentNode, childElement); } } }
public WixTreeNode(XmlElement element) { this.element = element; sortOrder = 10; if (element.HasChildNodes) { dummyChildNode = new ExtTreeNode(); dummyChildNode.AddTo(this); } }
protected override void OnMouseDoubleClick(MouseEventArgs e) { base.OnMouseDoubleClick(e); ExtTreeNode node = GetNodeAt(e.Location) as ExtTreeNode; if (node != null) { node.ActivateItem(); } }
protected override void OnAfterCheck(TreeViewEventArgs e) { base.OnAfterCheck(e); ExtTreeNode node = e.Node as ExtTreeNode; if (node != null) { node.CheckedChanged(); } }
protected override void OnBeforeSelect(TreeViewCancelEventArgs e) { // setting the context menu must be done by BeforeSelect because // AfterSelect is not called for the selection changes when a node is being deleted. base.OnBeforeSelect(e); ExtTreeNode node = e.Node as ExtTreeNode; if (node != null) { node.ContextMenuStrip = MenuService.CreateContextMenu(e.Node, node.ContextmenuAddinTreePath); } }
protected override void OnDragDrop(DragEventArgs e) { base.OnDragDrop(e); Point clientcoordinate = PointToClient(new Point(e.X, e.Y)); ExtTreeNode node = GetNodeAt(clientcoordinate) as ExtTreeNode; if (node != null) { node.DoDragDrop(e.Data, e.Effect); SortParentNodes(node); } }
protected override void OnKeyPress(KeyPressEventArgs e) { base.OnKeyPress(e); if (e.KeyChar == '\r') { ExtTreeNode node = SelectedNode as ExtTreeNode; if (node != null) { node.ActivateItem(); } e.Handled = true; } }
protected override void OnAfterLabelEdit(NodeLabelEditEventArgs e) { base.OnAfterLabelEdit(e); LabelEdit = false; e.CancelEdit = true; ExtTreeNode node = e.Node as ExtTreeNode; if (node != null && e.Label != null) { node.AfterLabelEdit(e.Label); } SortParentNodes(e.Node); }
void HandleDragOver(DragEventArgs e, ExtTreeNode node) { DragDropEffects effect = DragDropEffects.None; if ((e.KeyState & 8) > 0) // CTRL key pressed. { effect = DragDropEffects.Copy; } else { effect = DragDropEffects.Move; } e.Effect = node.GetDragDropEffect(e.Data, effect); }
void DeleteNode(ExtTreeNode node) { if (node == null) { return; } if (node.EnableDelete) { node.EnsureVisible(); SelectedNode = node; node.Delete(); } }
protected override void OnItemDrag(ItemDragEventArgs e) { base.OnItemDrag(e); ExtTreeNode node = e.Item as ExtTreeNode; if (node != null) { DataObject dataObject = node.DragDropDataObject; if (dataObject != null) { DoDragDrop(dataObject, DragDropEffects.All); SortParentNodes(node); } } }
public void StartLabelEdit(ExtTreeNode node) { if (node == null) { return; } if (node.CanLabelEdit) { node.EnsureVisible(); SelectedNode = node; LabelEdit = true; node.BeforeLabelEdit(); node.BeginEdit(); } }
protected override void OnDragOver(DragEventArgs e) { base.OnDragOver(e); Point clientcoordinate = PointToClient(new Point(e.X, e.Y)); ExtTreeNode node = GetNodeAt(clientcoordinate) as ExtTreeNode; if (node != null) { HandleDragOver(e, node); if (e.Effect != DragDropEffects.None) { SelectedNode = node; } } }
public int Compare(TreeNode x, TreeNode y) { Debug.Assert(x != null); Debug.Assert(y != null); ExtTreeNode node1 = x as ExtTreeNode; ExtTreeNode node2 = y as ExtTreeNode; if (node1 == null || node2 == null) { return x.Text.CompareTo(y.Text); } if (node1.SortOrder != node2.SortOrder) { return Math.Sign(node1.SortOrder - node2.SortOrder); } return node1.CompareString.CompareTo(node2.CompareString); }
public void SetUpFixture() { List<CodeCoverageModule> modules = new List<CodeCoverageModule>(); CodeCoverageModule fooModule = new CodeCoverageModule("Tests"); XElement setterMethod = CreateSetterElement("Tests.FooTest", "Count"); fooSetterMethod = new CodeCoverageMethod("Tests.FooTest", setterMethod); fooSetterMethod.SequencePoints.Add(new CodeCoverageSequencePoint("c:\\Projects\\Foo\\FooTest.cs", 1, 2, 2, 3, 4, 2)); fooSetterMethod.SequencePoints.Add(new CodeCoverageSequencePoint("c:\\Projects\\Foo\\FooTest.cs", 0, 3, 4, 4, 4, 1)); XElement getterMethod = CreateGetterElement("Tests.FooTest", "Count"); fooGetterMethod = new CodeCoverageMethod("Tests.FooTest", getterMethod); fooGetterMethod.SequencePoints.Add(new CodeCoverageSequencePoint("c:\\Projects\\Foo\\FooTest.cs", 1, 1, 0, 2, 1, 1)); fooModule.Methods.Add(fooGetterMethod); fooModule.Methods.Add(fooSetterMethod); modules.Add(fooModule); using (CodeCoverageTreeView treeView = new CodeCoverageTreeView()) { treeView.AddModules(modules); fooModuleNode = (CodeCoverageModuleTreeNode)treeView.Nodes[0]; } fooModuleNode.Expanding(); fooTestsNamespaceTreeNode = (CodeCoverageNamespaceTreeNode)fooModuleNode.Nodes[0]; fooTestsNamespaceTreeNode.Expanding(); fooTestTreeNode = (CodeCoverageClassTreeNode)fooTestsNamespaceTreeNode.Nodes[0]; fooTestTreeNode.Expanding(); if (fooTestTreeNode.Nodes.Count > 0) { countPropertyTreeNode = fooTestTreeNode.Nodes[0] as CodeCoveragePropertyTreeNode; } countPropertyTreeNode.Expanding(); if (countPropertyTreeNode != null && countPropertyTreeNode.Nodes.Count > 1) { fooGetterTreeNode = (CodeCoverageMethodTreeNode)countPropertyTreeNode.Nodes[0]; fooSetterTreeNode = (CodeCoverageMethodTreeNode)countPropertyTreeNode.Nodes[1]; } }
protected override void OnDragDrop(DragEventArgs e) { base.OnDragDrop(e); Point clientcoordinate = PointToClient(new Point(e.X, e.Y)); ExtTreeNode node = GetNodeAt(clientcoordinate) as ExtTreeNode; if (node != null) { // when dragging very fast from one node to another, it's possible that // OnDragDrop raises without OnDragOver for the node. // So we have to call HandleDragOver to ensure that we don't call DoDragDrop for // invalid operations. HandleDragOver(e, node); if (e.Effect != DragDropEffects.None) { node.DoDragDrop(e.Data, e.Effect); SortParentNodes(node); } } }
protected override void OnAfterLabelEdit(NodeLabelEditEventArgs e) { base.OnAfterLabelEdit(e); LabelEdit = false; e.CancelEdit = true; ExtTreeNode node = e.Node as ExtTreeNode; if (node != null) { //node.Text = labelEditOldLabel; //labelEditOldLabel = null; if (e.Label != null) { node.AfterLabelEdit(e.Label); } } SortParentNodes(e.Node); SelectedNode = e.Node; }
public void StartLabelEdit(ExtTreeNode node) { if (node == null) { return; } if (node.CanLabelEdit) { node.EnsureVisible(); SelectedNode = node; LabelEdit = true; node.BeforeLabelEdit(); node.BeginEdit(); // remove node's label so that it doesn't get rendered behind the label editing textbox // (if the user deletes some characters so that the text box shrinks) labelEditOldLabel = node.Text; node.Text = ""; } }
//string labelEditOldLabel; public void StartLabelEdit(ExtTreeNode node) { if (node == null) { return; } if (node.CanLabelEdit) { node.EnsureVisible(); SelectedNode = node; LabelEdit = true; node.BeforeLabelEdit(); node.BeginEdit(); // Workaround disabled due to http://community.sharpdevelop.net/forums/t/14354.aspx // "Rename fails if filename in Project Explorer is too long for the treeview viewport" //// remove node's label so that it doesn't get rendered behind the label editing textbox //// (if the user deletes some characters so that the text box shrinks) //labelEditOldLabel = node.Text; //node.Text = ""; } }
public void SetUp() { // Create solution. solution = new Solution(); // Create a project to display in the test tree view. project = new MockCSharpProject(); project.Name = "TestProject"; ReferenceProjectItem nunitFrameworkReferenceItem = new ReferenceProjectItem(project); nunitFrameworkReferenceItem.Include = "NUnit.Framework"; ProjectService.AddProjectItem(project, nunitFrameworkReferenceItem); // Add a test class with a TestFixture attributes. projectContent = new MockProjectContent(); projectContent.Language = LanguageProperties.None; testClass = new MockClass("MyTestFixture"); testClass.Attributes.Add(new MockAttribute("TestFixture")); testClass.ProjectContent = projectContent; projectContent.Classes.Add(testClass); // Init mock project content to be returned. dummyTreeView = new DummyParserServiceTestTreeView(); dummyTreeView.ProjectContentForProject = projectContent; // Load the projects into the test tree view. treeView = dummyTreeView as TestTreeView; solution.Folders.Add(project); treeView.AddSolution(solution); nodes = treeView.Nodes; rootNode = (ExtTreeNode)treeView.Nodes[0]; // Expand the root node so any child nodes are // lazily created. rootNode.Expanding(); rootChildNodes = rootNode.Nodes; testFixtureNode = (ExtTreeNode)rootNode.Nodes[0]; }
void HandleDragOver(DragEventArgs e, ExtTreeNode node) { DragDropEffects effect = DragDropEffects.None; if ((e.KeyState & 8) > 0) { // CTRL key pressed. effect = DragDropEffects.Copy; } else { effect = DragDropEffects.Move; } e.Effect = node.GetDragDropEffect(e.Data, effect); }
MenuItem MakeItem(ExtTreeNode classBrowserTreeNode, ICompilationUnit cu, DomRegion region) { MenuItem item = MakeItemWithGoToDefinition(classBrowserTreeNode.Text, ClassBrowserIconService.GetImageByIndex(classBrowserTreeNode.ImageIndex), cu, region); foreach (object obj in MenuService.CreateMenuItems(null, classBrowserTreeNode, classBrowserTreeNode.ContextmenuAddinTreePath)) item.Items.Add(obj); return item; }
IEnumerable<FileNode> GetChildFileNodes(ExtTreeNode parentNode) { return parentNode.AllNodes.OfType<FileNode>(); }
ToolStripMenuItem MakeItem(ExtTreeNode classBrowserTreeNode, ICompilationUnit cu, DomRegion region) { ToolStripMenuItem item = MakeItemInternal(classBrowserTreeNode.Text, classBrowserTreeNode.ImageIndex, cu, region); MenuService.AddItemsToMenu(item.DropDown.Items, classBrowserTreeNode, classBrowserTreeNode.ContextmenuAddinTreePath); return item; }
//string labelEditOldLabel; public void StartLabelEdit(ExtTreeNode node) { if (node == null) { return; } if (node.CanLabelEdit) { node.EnsureVisible(); SelectedNode = node; LabelEdit = true; node.BeforeLabelEdit(); node.BeginEdit(); // Workaround disabled due to http://community.sharpdevelop.net/forums/t/14354.aspx // "Rename fails if filename in Project Explorer is too long for the treeview viewport" //// remove node's label so that it doesn't get rendered behind the label editing textbox //// (if the user deletes some characters so that the text box shrinks) //labelEditOldLabel = node.Text; //node.Text = ""; } }
public void SetUp() { // Create a project to display in the test tree view. project = new MockCSharpProject(); project.Name = "TestProject"; nunitFrameworkReferenceItem = new ReferenceProjectItem(project); nunitFrameworkReferenceItem.Include = "NUnit.Framework"; ProjectService.AddProjectItem(project, nunitFrameworkReferenceItem); List<IProject> projects = new List<IProject>(); projects.Add(project); // Add second non-test project. projects.Add(new MockCSharpProject()); // Add a test class with a TestFixture attributes. projectContent = new MockProjectContent(); projectContent.Language = LanguageProperties.None; testClass = new MockClass("RootNamespace.Tests.MyTestFixture"); testClass.Namespace = "RootNamespace.Tests"; testClass.Attributes.Add(new MockAttribute("TestFixture")); testClass.ProjectContent = projectContent; projectContent.Classes.Add(testClass); // Add two methods to the test class only // one of which has test attributes. testMethod = new MockMethod("NameExists"); testMethod.Attributes.Add(new MockAttribute("Test")); testMethod.DeclaringType = testClass; testClass.Methods.Add(testMethod); testClass.Methods.Add(new MockMethod()); // Add a second class that has no test fixture attribute. MockClass nonTestClass = new MockClass(); nonTestClass.ProjectContent = projectContent; projectContent.Classes.Add(nonTestClass); // Init mock project content to be returned. dummyTreeView = new DummyParserServiceTestTreeView(); dummyTreeView.ProjectContentForProject = projectContent; // Load the projects into the test tree view. treeView = dummyTreeView as TestTreeView; treeView.AddProjects(projects); nodes = treeView.Nodes; rootNode = (ExtTreeNode)treeView.Nodes[0]; // Expand the root node so any child nodes are // lazily created. rootNode.Expanding(); rootChildNodes = rootNode.Nodes; rootNamespaceNode = (ExtTreeNode)rootNode.Nodes[0]; // Expand the first namespace node. rootNamespaceNode.Expanding(); rootNamespaceChildNodes = rootNamespaceNode.Nodes; testsNamespaceNode = (ExtTreeNode)rootNamespaceNode.Nodes[0]; // Expand the tests namespace node. testsNamespaceNode.Expanding(); testsNamespaceChildNodes = testsNamespaceNode.Nodes; testFixtureNode = (ExtTreeNode)testsNamespaceNode.Nodes[0]; // Expand the test node. testFixtureNode.Expanding(); testFixtureChildNodes = testFixtureNode.Nodes; testNode = (ExtTreeNode)testFixtureChildNodes[0]; }
void DeleteNode(ExtTreeNode node) { if (node == null) { return; } if (node.EnableDelete) { node.EnsureVisible(); SelectedNode = node; node.Delete(); } }
public void ExpandRootNode() { // Expand the root node so any child nodes are lazily created. rootNode.Expanding(); projectNamespaceNode = (ExtTreeNode)rootNode.Nodes[0]; }
/// <summary> /// Adds a new tree node containing the xml element to the specified /// nodes collection. /// </summary> public static ExtTreeNode AddNode(ExtTreeNode parentNode, XmlElement element) { ExtTreeNode node = CreateNode(element); node.AddTo(parentNode); return node; }
public void StartLabelEdit(ExtTreeNode node) { if (node == null) { return; } if (node.CanLabelEdit) { node.EnsureVisible(); SelectedNode = node; LabelEdit = true; node.BeforeLabelEdit(); node.BeginEdit(); // remove node's label so that it doesn't get rendered behind the label editing textbox // (if the user deletes some characters so that the text box shrinks) labelEditOldLabel = node.Text; node.Text = ""; } }
IEnumerable<DirectoryNode> GetChildDirectoryNodes(ExtTreeNode parentNode) { return parentNode.AllNodes.OfType<DirectoryNode>(); }
public void StartLabelEdit(ExtTreeNode node) { if (node == null) { return; } if (node.CanLabelEdit) { node.EnsureVisible(); SelectedNode = node; LabelEdit = true; node.BeforeLabelEdit(); node.BeginEdit(); } }
/// <summary> /// Adds child nodes to this tree node. /// </summary> protected override void Initialize() { base.Initialize(); if (dummyChildNode != null) { Nodes.Remove(dummyChildNode); dummyChildNode = null; } WixTreeNodeBuilder.AddNodes(this, element.ChildNodes); }
public void StartLabelEdit(ExtTreeNode node) { ProjectBrowserControl.TreeView.StartLabelEdit(node); }