private void OnNew(TreeNode node) { IElementPropertyInfo elementInfo = node.Tag as IElementPropertyInfo; if (elementInfo == null) { return; } // Create a new element. IElementPropertyInfo newElementInfo = elementInfo.CreateElement(); OnElementChanged(); // Add a new node. TreeNode newNode = AddNodeForElement(node, newElementInfo); newNode.ExpandAll(); tvwElements.Focus(); tvwElements.Select(); tvwElements.SelectedNode = newNode; if (newElementInfo.CanRenameElement) { newNode.BeginEdit(); } }
private void DisplayElement(IElementPropertyInfo element) { Debug.Assert(element != null, "element != null"); // Set the label. lblName.Text = element.Name; // Property page control. ClearCurrentPage(); ElementPropertyPage page = element.PropertyPage; if (page != null) { bool pageAdded = AddPage(page); page.Size = panDetails.Size; page.Visible = true; m_currentPage = page; // Now that everything is set fire the event if needed. if (pageAdded) { OnPageAdded(EventArgs.Empty); } } }
private TreeNode FindNodeForElement(TreeNode node, object element) { if (node.Tag is IObjectPropertyInfo) { IObjectPropertyInfo objectInfo = (IObjectPropertyInfo)node.Tag; if (object.Equals(objectInfo.Object, element)) { return(node); } } else if (node.Tag is IElementPropertyInfo) { IElementPropertyInfo elementInfo = (IElementPropertyInfo)node.Tag; if (object.Equals(elementInfo.Element, element)) { return(node); } } // Iterate. foreach (TreeNode childNode in node.Nodes) { TreeNode foundNode = FindNodeForElement(childNode, element); if (foundNode != null) { return(foundNode); } } return(null); }
private void OnDelete(TreeNode node) { // Prompt first. string promptText = "Are you sure you want to delete '" + node.Text + "'?"; if (MessageBox.Show(promptText, "Confirm deletion", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK) { return; } // Delete the element itself. IElementPropertyInfo elementInfo = node.Tag as IElementPropertyInfo; if (elementInfo == null) { return; } elementInfo.DeleteElement(); OnElementChanged(); // Delete the node. ClearCurrentPage(); TreeNode parentNode = node.Parent; tvwElements.Nodes.Remove(node); tvwElements.Focus(); tvwElements.Select(); tvwElements.SelectedNode = parentNode; }
/// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose(bool disposing) { if (disposing) { if (components != null) { components.Dispose(); } if (m_settings != null) { m_settings.Refresh -= new EventHandler(m_settings_Refresh); m_settings = null; } // Dispose of all repositories that support IDisposable (the manager may not have taken // care of all of them). m_selectedElement = null; TreeView.ClearTagsRecursive(tvwElements.Nodes); } base.Dispose(disposing); }
private void RefreshNode(TreeNode node) { node.Nodes.Clear(); IElementPropertyInfo elementInfo = node.Tag as IElementPropertyInfo; foreach (IElementPropertyInfo childElementInfo in elementInfo.Elements) { AddNodeForElement(node, childElementInfo); } }
private void tvwElements_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e) { IElementPropertyInfo elementInfo = e.Node.Tag as IElementPropertyInfo; DisplayElement(elementInfo); // Update the toolbar and context menu. UpdateToolbarButtons(elementInfo); SetContextMenu(tvwElements.SelectedNode); }
private void ElementNodeSelected(TreeNode node) { Debug.Assert(node != null, "node != null"); IElementPropertyInfo previousElement = m_selectedElement; if (node.Tag is IElementPropertyInfo) { DisplayElement((IElementPropertyInfo)node.Tag); m_selectedElement = (IElementPropertyInfo)node.Tag; } }
private void UpdateToolbarButtons(IElementPropertyInfo elementInfo) { if (IsReadOnly) { tbbNew.Enabled = false; tbbDelete.Enabled = false; } else { tbbNew.Enabled = elementInfo.CanCreateElement; tbbDelete.Enabled = elementInfo.CanDeleteElement; } }
protected ElementPropertyInfo(IElementPropertyInfo parentInfo, string imageResource, object element) { m_element = element; m_parentInfo = parentInfo; if (parentInfo != null) { m_objectInfo = parentInfo.ObjectInfo; } else { m_objectInfo = this as IObjectPropertyInfo; } m_imageResource = imageResource; }
private void tvwElements_AfterLabelEdit(object sender, System.Windows.Forms.NodeLabelEditEventArgs e) { try { // Re-enable the Delete menu item. if (m_deleteMenuItem != null) { m_deleteMenuItem.Enabled = true; } string newName = e.Label; if (newName != null) { IElementPropertyInfo elementInfo = e.Node.Tag as IElementPropertyInfo; if (elementInfo != null) { // Make sure any changes in the property page is captured. if (m_currentPage != null) { SavePropertyPage(m_currentPage); } elementInfo.RenameElement(newName); foreach (IElementPropertyInfo childElementInfo in elementInfo.Elements) { childElementInfo.RefreshParentElement(elementInfo.Element); } // Refresh the nodes. DisplayElement(elementInfo); OnElementChanged(); } } } catch (System.Exception ex) { new ExceptionDialog(ex, "The following exception occurred:").ShowDialog(); e.CancelEdit = true; e.Node.BeginEdit(); } }
/// <summary> /// The base implementation compares the node text first using case-insensitive comparison and then, /// if the elements are equal, case-sensitive comparison. /// </summary> public virtual int CompareTo(object obj) { IElementPropertyInfo other = obj as IElementPropertyInfo; if (other == null) { throw new System.ArgumentException(string.Format("Only another IElementPropertyInfo object can be" + " compared to a '{0}' object, but '{1}' was passed in.", GetType().FullName, (obj == null ? "<null>" : obj.GetType().FullName)), "obj"); } int result = string.Compare(Name, other.Name, true); if (result != 0) { return(result); } return(string.Compare(Name, other.Name, false)); }
private TreeNode AddNodeForElement(TreeNode parentNode, IElementPropertyInfo elementInfo) { // Add the node. TreeNode newNode = new TreeNode(elementInfo.Name, elementInfo.ImageIndex, elementInfo.ImageIndex); newNode.Tag = elementInfo; parentNode.Nodes.Add(newNode); // Add the page for this element. AddPage(elementInfo.PropertyPage); // Iterate. foreach (IElementPropertyInfo childElementInfo in elementInfo.Elements) { AddNodeForElement(newNode, childElementInfo); } return(newNode); }
private void ViewHandler(object sender, EventArgs e) { // Change the view. MenuItem menu = sender as MenuItem; if (menu == null) { return; } TreeNode node = tvwElements.ContextNode; if (node == null) { return; } IElementPropertyInfo elementInfo = node.Tag as IElementPropertyInfo; if (elementInfo == null) { return; } // Make sure any changes in the page are captured. if (m_currentPage != null) { SavePropertyPage(m_currentPage); } // Reshow the element. elementInfo.ViewElement(menu.Text); DisplayElement(elementInfo); }
private void tvwElements_BeforeLabelEdit(object sender, System.Windows.Forms.NodeLabelEditEventArgs e) { if (!m_allowEdit || IsReadOnly || (IsEditMode && e.Node.Parent == null)) { e.CancelEdit = true; } else { IElementPropertyInfo propertyInfo = e.Node.Tag as IElementPropertyInfo; if (propertyInfo == null || !propertyInfo.CanRenameElement) { e.CancelEdit = true; } else { // Disable the Delete menu item while editing, so that the Del key doesn't activate it. if (m_deleteMenuItem != null) { m_deleteMenuItem.Enabled = false; } } } }
public ElementEventArgs(IElementPropertyInfo element) { m_element = element; }
public void Refresh(IElementPropertyInfo elementInfo) { OnRefresh(elementInfo.Element); }
private void SetContextMenu(TreeNode node) { // Clear what may already be there. mnuElements.MenuItems.Clear(); m_deleteMenuItem = null; if (!IsReadOnly) { // Grab the node and the element info. if (node == null) { return; } IElementPropertyInfo elementInfo = node.Tag as IElementPropertyInfo; if (elementInfo == null) { return; } // Add the menu items. if (elementInfo.CanCreateElement) { mnuElements.MenuItems.Add(new MenuItem("New " + elementInfo.CreateElementName, new System.EventHandler(NewHandler), Shortcut.Ins)); } if (elementInfo.Views != null && elementInfo.Views.Length > 0) { MenuItem mnuView = new MenuItem("View"); string currentView = elementInfo.CurrentView; foreach (string view in elementInfo.Views) { MenuItem menu = new MenuItem(view, new System.EventHandler(ViewHandler)); if (currentView == null) { menu.Checked = true; currentView = view; } else { menu.Checked = view == currentView; } mnuView.MenuItems.Add(menu); } mnuElements.MenuItems.Add(mnuView); } if (elementInfo.CanDeleteElement) { m_deleteMenuItem = new MenuItem("Delete", new System.EventHandler(DeleteHandler), Shortcut.Del); mnuElements.MenuItems.Add(m_deleteMenuItem); } if (elementInfo.CanRenameElement) { mnuElements.MenuItems.Add(new MenuItem("Rename", new System.EventHandler(RenameHandler), Shortcut.F2)); } } }