Mini Kabibi Habibi

Current Path : C:/Users/Public/Documents/DXperience 13.1 Demos/WinForms/CS/SchedulerMainDemo/Modules/
Upload File :
Current File : C:/Users/Public/Documents/DXperience 13.1 Demos/WinForms/CS/SchedulerMainDemo/Modules/GanttView.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace DevExpress.XtraScheduler.Demos {
    public partial class GanttViewModule : DevExpress.XtraScheduler.Demos.TutorialControl {
        int lastSplitContainerControlSplitterPosition;
        public GanttViewModule() { 
            InitializeComponent();
        }
        void GanttViewModule_Load(object sender, System.EventArgs e) {
            InitControlValues();
            FillData();
            UpdateControls();
        }

        #region Properties
        int LastSplitContainerControlSplitterPosition { get { return lastSplitContainerControlSplitterPosition; } set { lastSplitContainerControlSplitterPosition = value; } }
        GanttViewAppointmentDisplayOptions GanttAppointmentDisplayOptions { get { return schedulerControl1.Views.GanttView.AppointmentDisplayOptions; } }
        #endregion

        #region FillData
        void FillData() {
            string connectionString = DemoUtils.GetFileRelativePath("Tasks.mdb");
            if (connectionString.Length <= 0)
                return;

            DemoUtils.SetConnectionString(tasksTableAdapter.Connection, connectionString);
            DemoUtils.SetConnectionString(taskDependenciesTableAdapter.Connection, connectionString);
            DemoUtils.SetConnectionString(resourcesTableAdapter.Connection, connectionString);

            tasksTableAdapter.Fill(this.tasksDataSet.Tasks);
            taskDependenciesTableAdapter.Fill(this.tasksDataSet.TaskDependencies);
            resourcesTableAdapter.Fill(this.tasksDataSet.Resources);

            this.tasksTableAdapter.Adapter.RowUpdated += new System.Data.OleDb.OleDbRowUpdatedEventHandler(tasksTableAdapter_RowUpdated);
            this.taskDependenciesTableAdapter.Adapter.RowUpdated += new System.Data.OleDb.OleDbRowUpdatedEventHandler(taskDependenciesTableAdapter_RowUpdated);
            this.resourcesTableAdapter.Adapter.RowUpdated += new System.Data.OleDb.OleDbRowUpdatedEventHandler(resourcesTableAdapter_RowUpdated);
            this.schedulerControl1.Start = DemoUtils.Date;            
        }        
        #endregion
        #region InitControlValues
        void InitControlValues() {
            PercentCompleteDisplayType type = GanttAppointmentDisplayOptions.PercentCompleteDisplayType;
            this.chkShowBar.Checked = type == PercentCompleteDisplayType.Both || type == PercentCompleteDisplayType.BarProgress;
            this.chkShowNumber.Checked = type == PercentCompleteDisplayType.Both || type == PercentCompleteDisplayType.Number;
        }
        #endregion
        #region UpdateControls
        void UnsubscribeEvents() {
            this.chkAutoHeightCells.CheckedChanged -= new System.EventHandler(this.chkAutoHeightCells_CheckedChanged);
            this.chkShowResourceHeaders.CheckedChanged -= new System.EventHandler(this.chkShowResourceHeaders_CheckedChanged);
            this.spinResurcesPerPage.EditValueChanged -= new System.EventHandler(this.spinResurcesPerPage_EditValueChanged);
            this.chkShowBar.CheckedChanged -= new System.EventHandler(this.ShowProgressAsChanged);
            this.chkShowNumber.CheckedChanged -= new System.EventHandler(this.ShowProgressAsChanged);
            this.splitContainerControl1.SplitterPositionChanged -= new System.EventHandler(this.splitContainerControl1_SplitterPositionChanged);
        }
        void SubscribeEvents() {
            this.chkAutoHeightCells.CheckedChanged += new System.EventHandler(this.chkAutoHeightCells_CheckedChanged);
            this.chkShowResourceHeaders.CheckedChanged += new System.EventHandler(this.chkShowResourceHeaders_CheckedChanged);
            this.spinResurcesPerPage.EditValueChanged += new System.EventHandler(this.spinResurcesPerPage_EditValueChanged);
            this.chkShowBar.CheckedChanged += new System.EventHandler(this.ShowProgressAsChanged);
            this.chkShowNumber.CheckedChanged += new System.EventHandler(this.ShowProgressAsChanged);
            this.splitContainerControl1.SplitterPositionChanged += new System.EventHandler(this.splitContainerControl1_SplitterPositionChanged);
        }
        void UpdateControls() {
            UnsubscribeEvents();
            try {
                this.chkShowResourceHeaders.Checked = schedulerControl1.GanttView.ShowResourceHeaders;
                this.chkAutoHeightCells.Checked = schedulerControl1.GanttView.CellsAutoHeightOptions.Enabled;
                this.spinResurcesPerPage.EditValue = schedulerControl1.Views.GanttView.ResourcesPerPage;
                LastSplitContainerControlSplitterPosition = splitContainerControl1.SplitterPosition;
            }
            finally {
                SubscribeEvents();
            }
        }
        #endregion
        #region RowUpdated handlers
        int id = 0;
        private void tasksTableAdapter_RowUpdated(object sender, System.Data.OleDb.OleDbRowUpdatedEventArgs e) {
            if (e.Status == UpdateStatus.Continue && e.StatementType == StatementType.Insert) {
                id = 0;
                using (OleDbCommand cmd = new OleDbCommand("SELECT @@IDENTITY", tasksTableAdapter.Connection)) {
                    id = (int)cmd.ExecuteScalar();
                }
                e.Row["Id"] = id;
            }
        }
        int id2 = 0;
        private void taskDependenciesTableAdapter_RowUpdated(object sender, System.Data.OleDb.OleDbRowUpdatedEventArgs e) {
            if (e.Status == UpdateStatus.Continue && e.StatementType == StatementType.Insert) {
                id2 = 0;
                using (OleDbCommand cmd = new OleDbCommand("SELECT @@IDENTITY", taskDependenciesTableAdapter.Connection)) {
                    id2 = (int)cmd.ExecuteScalar();
                }
                e.Row["Id"] = id2;
            }
        }
        int id3 = 0;
        private void resourcesTableAdapter_RowUpdated(object sender, System.Data.OleDb.OleDbRowUpdatedEventArgs e) {
            if (e.Status == UpdateStatus.Continue && e.StatementType == StatementType.Insert) {
                id3 = 0;
                using (OleDbCommand cmd = new OleDbCommand("SELECT @@IDENTITY", resourcesTableAdapter.Connection)) {
                    id3 = (int)cmd.ExecuteScalar();
                }
                e.Row["Id"] = id3;
            }
        }
        #endregion
        #region Appointment
        private void schedulerStorage1_AppointmentsChanged(object sender, PersistentObjectsEventArgs e) {
            CommitTask();
        }

        private void schedulerStorage1_AppointmentsDeleted(object sender, PersistentObjectsEventArgs e) {
            CommitTask();
        }
        private void schedulerStorage1_AppointmentsInserted(object sender, PersistentObjectsEventArgs e) {
            CommitTask();
            schedulerStorage1.SetAppointmentId(((Appointment)e.Objects[0]), id);
        }
        void CommitTask() {
            //try {
            //    DataSet ch = this.tasksDataSet.GetChanges();
            //    TasksDataSet.TasksRow row = tasksDataSet.Tasks[0];
            //    DataTable cht = tasksDataSet.Tasks.GetChanges();
            //} catch {
            //}
            tasksTableAdapter.Update(this.tasksDataSet);
            this.tasksDataSet.AcceptChanges();
        }
        #endregion
        #region Task Dependencies
        private void schedulerStorage1_AppointmentDependenciesChanged(object sender, PersistentObjectsEventArgs e) {
            CommitTaskDependency();
        }

        private void schedulerStorage1_AppointmentDependenciesDeleted(object sender, PersistentObjectsEventArgs e) {
            CommitTaskDependency();
        }

        private void schedulerStorage1_AppointmentDependenciesInserted(object sender, PersistentObjectsEventArgs e) {
            CommitTaskDependency();
        }
        void CommitTaskDependency() {
            taskDependenciesTableAdapter.Update(this.tasksDataSet);
            this.tasksDataSet.AcceptChanges();
        }
        #endregion
        #region UI elelents event handles
        void chkShowResourceHeaders_CheckedChanged(object sender, EventArgs args) {
            schedulerControl1.GanttView.ShowResourceHeaders = chkShowResourceHeaders.Checked;
        }
        void chkAutoHeightCells_CheckedChanged(object sender, EventArgs args) {
            schedulerControl1.GanttView.CellsAutoHeightOptions.Enabled = chkAutoHeightCells.Checked;
        }
        void spinResurcesPerPage_EditValueChanged(object sender, System.EventArgs e) {
            schedulerControl1.GanttView.ResourcesPerPage = Convert.ToInt32(spinResurcesPerPage.EditValue);
        }
        #region ResourcesTree hide/show
        void chkShowResourcesTree_CheckedChanged(object sender, EventArgs args) {
            
        }

        private void splitContainerControl1_SplitterPositionChanged(object sender, EventArgs e) {
            LastSplitContainerControlSplitterPosition = splitContainerControl1.SplitterPosition;
        }
        #endregion

        private void schedulerControl1_ActiveViewChanged(object sender, EventArgs e) {
            UnsubscribeEvents();
            bool isGanttView = schedulerControl1.ActiveViewType == SchedulerViewType.Gantt;
            try {
                splitContainerControl1.SplitterPosition = (isGanttView) ? LastSplitContainerControlSplitterPosition : 0;
            }
            finally {
                SubscribeEvents();
            }
        }
        private void ShowProgressAsChanged(object sender, EventArgs e) {
            SetPercentCompleteDisplateType();
        }
        #endregion
        #region SetPercentCompleteDisplateType
        void SetPercentCompleteDisplateType() {
            GanttAppointmentDisplayOptions.PercentCompleteDisplayType = CalculatePercentCompleteDisplateType();
        }
        #endregion
        #region CalculatePercentCompleteDisplateType
        PercentCompleteDisplayType CalculatePercentCompleteDisplateType() {
            bool isShowBar = chkShowBar.Checked;
            bool isShowNumber = chkShowNumber.Checked;

            if (isShowBar && isShowNumber)
                return PercentCompleteDisplayType.Both;
            if (isShowBar && !isShowNumber)
                return PercentCompleteDisplayType.BarProgress;
            if (!isShowBar && isShowNumber)
                return PercentCompleteDisplayType.Number;

            return PercentCompleteDisplayType.None;
        }
        #endregion
    }
}