|
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Text;
using System.Reflection;
using System.Windows.Forms;
using Common;
namespace TreeTest
{
public partial class ModeControl : ModeBase
{
private List<ModeBase> _Controls = new List<ModeBase>();
private ModeCounts _Counts = new ModeCounts();
private ModeRelationships _Relationships = new ModeRelationships();
private ModeProperties _Properties = new ModeProperties();
private ModeAddElement _AddElement = new ModeAddElement();
private ModeAddTree _AddTree = new ModeAddTree();
private ModeMove _Move = new ModeMove();
private ModeNode _Node = new ModeNode();
private ModeElement _Element = new ModeElement();
private ModeEnumerators _Enumerators = new ModeEnumerators();
private ModeSerialization _Serialization = new ModeSerialization();
[Browsable( false )]
public override Mode Mode { get { return Mode.None; } }
public ModeControl()
{
InitializeComponent();
FieldInfo[] fields = GetType().GetFields( BindingFlags.Instance | BindingFlags.NonPublic );
foreach ( FieldInfo field in fields )
if ( field.FieldType.IsSubclassOf( typeof ( ModeBase ) ) )
_Controls.Add( ( ModeBase ) field.GetValue( this ) );
foreach ( ModeBase control in _Controls )
{
control.Location = _Panel.Location;
control.Size = _Panel.Size;
Controls.Add( control );
control.RefreshTree += delegate( object sender, EventArgs args ) { OnRefreshTree(); };
control.SetTreeClipboard += delegate( object sender, TreeEventArgs args ) { OnSetTreeClipboard( args.Tree ); };
}
foreach ( Mode mode in Enum.GetValues( typeof( Mode ) ) )
if ( mode != Mode.None )
_Mode.Items.Add( mode );
_Mode.SelectedItem = Mode.Counts;
SetVisible();
}
private void ModeControl_Load( object sender, EventArgs e )
{
}
public override INode<Element> CurrentNode
{
set
{
base.CurrentNode = value;
foreach ( ModeBase control in _Controls ) control.CurrentNode = value;
}
}
public override ITree<Element> TreeClipboard
{
set
{
base.TreeClipboard = value;
foreach ( ModeBase control in _Controls ) control.TreeClipboard = value;
}
}
public override void OnNewTree()
{
foreach ( ModeBase control in _Controls ) control.OnNewTree();
}
private void _Mode_SelectedIndexChanged( object sender, EventArgs e )
{
SetVisible();
}
//public Mode Mode
//{
// get { return ( Mode ) _Mode.SelectedItem; }
// set { _Mode.SelectedItem = value; SetVisible(); }
//}
private void SetVisible()
{
Mode mode = ( Mode ) _Mode.SelectedItem;
foreach ( ModeBase control in _Controls ) control.Visible = ( control.Mode == mode );
}
}
public enum Mode
{
None,
Counts,
Relationships,
Properties,
AddElement,
AddTree,
Move,
Node,
Element,
Enumerators,
Serialization,
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I discovered C# and .NET 1.0 Beta 1 in late 2000 and loved them immediately.
I have been writing software professionally in C# ever since
In real life, I have spent 3 years travelling abroad,
I have held a UK Private Pilots Licence for 20 years,
and I am a PADI Divemaster.
I now live near idyllic Bournemouth in England.
I can work 'virtually' anywhere!