Browse Source

Custom modifications of the TreeView

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2802 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
David Srbecký 18 years ago
parent
commit
6026fd7b54
  1. 2
      src/Libraries/TreeViewAdv/Aga.Controls/GifDecoder.cs
  2. 59
      src/Libraries/TreeViewAdv/Aga.Controls/Tree/TreeNodeAdv.cs
  3. 16
      src/Libraries/TreeViewAdv/Aga.Controls/Tree/TreeViewAdv.cs
  4. 2
      src/Libraries/TreeViewAdv/SampleApp/FolderBrowserModel.cs
  5. 2
      src/Libraries/TreeViewAdv/SampleApp/SlowModel.cs

2
src/Libraries/TreeViewAdv/Aga.Controls/GifDecoder.cs

@ -1,3 +1,5 @@
#pragma warning disable 675 // Bitwise-or operator used on a sign-extended operand
#region Java Info #region Java Info
/** /**
* Class GifDecoder - Decodes a GIF file into one or more frames. * Class GifDecoder - Decodes a GIF file into one or more frames.

59
src/Libraries/TreeViewAdv/Aga.Controls/Tree/TreeNodeAdv.cs

@ -10,7 +10,7 @@ using System.Security.Permissions;
namespace Aga.Controls.Tree namespace Aga.Controls.Tree
{ {
[Serializable] [Serializable]
public sealed class TreeNodeAdv : ISerializable public class TreeNodeAdv : ISerializable
{ {
#region NodeCollection #region NodeCollection
private class NodeCollection : Collection<TreeNodeAdv> private class NodeCollection : Collection<TreeNodeAdv>
@ -43,6 +43,10 @@ namespace Aga.Controls.Tree
this[i]._index++; this[i]._index++;
base.InsertItem(index, item); base.InsertItem(index, item);
} }
if (_owner.Tree != null && _owner.Tree.Model == null) {
_owner.Tree.SmartFullUpdate();
}
} }
protected override void RemoveItem(int index) protected override void RemoveItem(int index)
@ -53,6 +57,11 @@ namespace Aga.Controls.Tree
for (int i = index + 1; i < Count; i++) for (int i = index + 1; i < Count; i++)
this[i]._index--; this[i]._index--;
base.RemoveItem(index); base.RemoveItem(index);
if (_owner.Tree != null && _owner.Tree.Model == null) {
_owner.Tree.UpdateSelection();
_owner.Tree.SmartFullUpdate();
}
} }
protected override void SetItem(int index, TreeNodeAdv item) protected override void SetItem(int index, TreeNodeAdv item)
@ -65,10 +74,42 @@ namespace Aga.Controls.Tree
} }
#endregion #endregion
#region Events
public event EventHandler<TreeViewAdvEventArgs> Collapsing;
internal protected virtual void OnCollapsing()
{
if (Collapsing != null)
Collapsing(this, new TreeViewAdvEventArgs(this));
}
public event EventHandler<TreeViewAdvEventArgs> Collapsed;
internal protected virtual void OnCollapsed()
{
if (Collapsed != null)
Collapsed(this, new TreeViewAdvEventArgs(this));
}
public event EventHandler<TreeViewAdvEventArgs> Expanding;
internal protected virtual void OnExpanding()
{
if (Expanding != null)
Expanding(this, new TreeViewAdvEventArgs(this));
}
public event EventHandler<TreeViewAdvEventArgs> Expanded;
internal protected virtual void OnExpanded()
{
if (Expanded != null)
Expanded(this, new TreeViewAdvEventArgs(this));
}
#endregion
#region Properties #region Properties
private TreeViewAdv _tree; private TreeViewAdv _tree;
internal TreeViewAdv Tree public TreeViewAdv Tree
{ {
get { return _tree; } get { return _tree; }
} }
@ -140,14 +181,14 @@ namespace Aga.Controls.Tree
public bool IsLeaf public bool IsLeaf
{ {
get { return _isLeaf; } get { return _isLeaf; }
internal set { _isLeaf = value; } internal protected set { _isLeaf = value; }
} }
private bool _isExpandedOnce; private bool _isExpandedOnce;
public bool IsExpandedOnce public bool IsExpandedOnce
{ {
get { return _isExpandedOnce; } get { return _isExpandedOnce; }
internal set { _isExpandedOnce = value; } internal protected set { _isExpandedOnce = value; }
} }
private bool _isExpanded; private bool _isExpanded;
@ -252,8 +293,8 @@ namespace Aga.Controls.Tree
get { return _nodes; } get { return _nodes; }
} }
private ReadOnlyCollection<TreeNodeAdv> _children; private IList<TreeNodeAdv> _children;
public ReadOnlyCollection<TreeNodeAdv> Children public IList<TreeNodeAdv> Children
{ {
get get
{ {
@ -288,12 +329,16 @@ namespace Aga.Controls.Tree
{ {
} }
internal TreeNodeAdv(TreeViewAdv tree, object tag) internal protected TreeNodeAdv(TreeViewAdv tree, object tag)
{ {
_row = -1; _row = -1;
_tree = tree; _tree = tree;
_nodes = new NodeCollection(this); _nodes = new NodeCollection(this);
if (tree.Model != null) {
_children = new ReadOnlyCollection<TreeNodeAdv>(_nodes); _children = new ReadOnlyCollection<TreeNodeAdv>(_nodes);
} else {
_children = _nodes;
}
_tag = tag; _tag = tag;
} }

16
src/Libraries/TreeViewAdv/Aga.Controls/Tree/TreeViewAdv.cs

@ -779,10 +779,13 @@ namespace Aga.Controls.Tree
if (Root == node && !value) if (Root == node && !value)
return; //Can't collapse root node return; //Can't collapse root node
if (value) if (value) {
OnExpanding(node); OnExpanding(node);
else node.OnExpanding();
} else {
OnCollapsing(node); OnCollapsing(node);
node.OnCollapsing();
}
if (value && !node.IsExpandedOnce) if (value && !node.IsExpandedOnce)
{ {
@ -798,10 +801,13 @@ namespace Aga.Controls.Tree
node.AssignIsExpanded(value); node.AssignIsExpanded(value);
SmartFullUpdate(); SmartFullUpdate();
if (value) if (value) {
OnExpanded(node); OnExpanded(node);
else node.OnExpanded();
} else {
OnCollapsed(node); OnCollapsed(node);
node.OnCollapsed();
}
} }
private void RemoveExpandingNode(TreeNodeAdv node) private void RemoveExpandingNode(TreeNodeAdv node)
@ -923,7 +929,7 @@ namespace Aga.Controls.Tree
return node == _root; return node == _root;
} }
private void UpdateSelection() internal void UpdateSelection()
{ {
bool flag = false; bool flag = false;

2
src/Libraries/TreeViewAdv/SampleApp/FolderBrowserModel.cs

@ -1,3 +1,5 @@
#pragma warning disable 67 // Event never used
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;

2
src/Libraries/TreeViewAdv/SampleApp/SlowModel.cs

@ -1,3 +1,5 @@
#pragma warning disable 67 // Event never used
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;

Loading…
Cancel
Save