using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using Aga.Controls.Tree;
using Aga.Controls.Tree.NodeControls;
namespace SampleApp
{
    public partial class DataTableTreeExample : UserControl
    {

        private DataTableTreeModel m_dataTableModel;
        public DataTableTreeExample()
        {
            InitializeComponent();
            DataTable table = CreateSampleDataTable();

            this.dataGridView1.Columns.Clear();
            this.dataGridView1.DataSource = table;

            treeViewAdv1.LoadOnDemand = true;
            treeViewAdv1.SelectionMode = TreeSelectionMode.Multi;
            treeViewAdv1.NodeControls.Clear();

            NodeStateIcon ni = new NodeStateIcon();
            ni.DataPropertyName = "Icon";
            treeViewAdv1.NodeControls.Add(ni);

            NodeTextBox tb = new NodeTextBox();
            tb.DataPropertyName = "Text";
            treeViewAdv1.NodeControls.Add(tb);

            
            m_dataTableModel = new DataTableTreeModel(table,"id");
            this.treeViewAdv1.Model = m_dataTableModel;
            this.treeViewAdv1.SelectionChanged += new EventHandler(treeViewAdv1_SelectionChanged);
        }

        void treeViewAdv1_SelectionChanged(object sender, EventArgs e)
        {
            Enabling();                        
            //treeViewAdv1.SelectedNodes
        }

        private void Enabling()
        {
            if (treeViewAdv1.SelectedNodes.Count == 0)
                addNodeToolStripMenuItem.Enabled = false;
            else
            addNodeToolStripMenuItem.Enabled = !treeViewAdv1.SelectedNode.IsLeaf;
        }


        private static DataTable CreateSampleDataTable()
        {
            DataTable table = new DataTable();
            table.Columns.Add("ID", typeof(int));
            table.Columns.Add("ParentID", typeof(int));
            table.Columns.Add("IsFolder", typeof(bool));
            table.Columns.Add("Name");
            table.Columns.Add("Tag");

            table.Rows.Add(1, 1, true, "Columbia River ", "set ID = ParentID for root");
            table.Rows.Add(2, 1, false, "John Day", " ");
            table.Rows.Add(3, 1, true, "Snake River", "");
            table.Rows.Add(4, 3, false, "Payette River", "");
            table.Rows.Add(5, 3, false, "Boise River", "");

            return table;
        }

        private void addNode_Click(object sender, 
            EventArgs e)
        {
            if (treeViewAdv1.SelectedNode != null)
            {
                 DataRowNode n = treeViewAdv1.SelectedNode.Tag as DataRowNode;
                 if (!Convert.ToBoolean(n.Row["IsFolder"]))
                 {
                     return;
                 }

             TreePath parent = treeViewAdv1.GetPath(treeViewAdv1.SelectedNode);

             m_dataTableModel.AddChild(parent, "Hi "+DateTime.Today.ToShortDateString());
                
            }
        }

        private void renameToolStripMenuItem_Click(object sender, EventArgs e)
        {

        }

        private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
        {
            Console.WriteLine("Row added");
        }
    }
}