2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / Managed.Windows.Forms / System.Windows.Forms / TreeNode.cs
index b435fcb3ca27b1887c69472c566087eadb2a7de2..1c8294730d11439b067595cb54cd2593b092886f 100644 (file)
@@ -47,6 +47,7 @@ namespace System.Windows.Forms {
                private Rectangle plus_minus_bounds = Rectangle.Empty;
                private Rectangle checkbox_bounds = Rectangle.Empty;
                private bool check;
+               private bool is_editing;
                internal OwnerDrawPropertyBag prop_bag;
 
                private object tag;
@@ -157,9 +158,8 @@ namespace System.Windows.Forms {
                                        return;
                                check = value;
 
-                               // We should just be invalidating the node
                                if (TreeView != null)
-                                       tree_view.Refresh ();
+                                       tree_view.UpdateNode (this);
                        }
                }
 
@@ -320,6 +320,48 @@ namespace System.Windows.Forms {
                        set { tag = value; }
                }
 
+               public bool IsSelected {
+                       get {
+                               if (TreeView == null)
+                                       return false;
+                               return TreeView.SelectedNode == this;
+                       }
+               }
+
+               public bool IsEditing {
+                       get { return is_editing; }
+               }
+
+               public bool IsVisible {
+                       get {
+                               if (TreeView == null)
+                                       return false;
+
+                               if (bounds.Y < 0 && bounds.Y > TreeView.ClientRectangle.Height)
+                                       return false;
+
+                               TreeNode parent = Parent;
+                               while (parent != null) {
+                                       if (!parent.IsExpanded)
+                                               return false;
+                                       parent = parent.Parent;
+                               }
+                               return true;
+                       }
+               }
+
+               public void BeginEdit ()
+               {
+                       is_editing = true;
+               }
+
+               public void EndEdit (bool cancel)
+               {
+                       is_editing = false;
+                       if (!cancel && TreeView != null)
+                               text = TreeView.LabelEditText;
+               }
+
                public void Expand ()
                {
                        Expand(false);
@@ -340,7 +382,7 @@ namespace System.Windows.Forms {
                                is_expanded = true;
                                if (TreeView != null)
                                        TreeView.OnAfterCollapse (new TreeViewEventArgs (this));
-                               if (IsNodeVisible () && TreeView != null)
+                               if (IsVisible && TreeView != null)
                                        TreeView.UpdateBelow (this);
                        }
                }
@@ -369,7 +411,7 @@ namespace System.Windows.Forms {
                                is_expanded = false;
                                if (TreeView != null)
                                        TreeView.OnAfterCollapse (new TreeViewEventArgs (this));
-                               if (IsNodeVisible () && TreeView != null)
+                               if (IsVisible && TreeView != null)
                                        TreeView.UpdateBelow (this);
                                if(!byInternal && TreeView != null && HasFocusInChildren ())
                                        TreeView.SelectedNode = this;
@@ -453,9 +495,6 @@ namespace System.Windows.Forms {
                                Collapse ();
                        else
                                Expand ();
-
-                       if (TreeView != null)
-                               TreeView.Refresh ();
                }
 
                internal void SetNodes (TreeNodeCollection nodes)
@@ -507,6 +546,11 @@ namespace System.Windows.Forms {
                        this.index = index;
                }
 
+               internal void SetIndex (int index)
+               {
+                       this.index = index;
+               }
+
                private bool IsInClippingRect
                {
                        get {
@@ -517,23 +561,6 @@ namespace System.Windows.Forms {
                                return true;
                        }
                }
-
-               private bool IsNodeVisible ()
-               {
-                       if (TreeView == null)
-                               return false;
-
-                       if (bounds.Y < 0 && bounds.Y > TreeView.ClientRectangle.Height)
-                               return false;
-
-                       TreeNode parent = Parent;
-                       while (parent != null) {
-                               if (!parent.IsExpanded)
-                                       return false;
-                               parent = parent.Parent;
-                       }
-                       return true;
-               }
        }
 }