Mini Kabibi Habibi

Current Path : C:/Users/Public/Documents/DXperience 13.1 Demos/WinForms/CS/PivotGridMainDemo/
Upload File :
Current File : C:/Users/Public/Documents/DXperience 13.1 Demos/WinForms/CS/PivotGridMainDemo/DemoControls.cs

using DevExpress.DXperience.Demos;
using DevExpress.LookAndFeel;
using DevExpress.Skins;
using DevExpress.Utils.Controls;
using DevExpress.XtraBars;
using DevExpress.XtraBars.Ribbon;
using DevExpress.XtraEditors;
using DevExpress.XtraGrid;
using System;
using System.Collections;
using System.Data;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;

namespace DevExpress.XtraPivotGrid.Demos {
    public class ViewOptionsChangedEventArgs : EventArgs {
        public ViewOptionsChangedEventArgs(string name, bool value) {
            this.Name = name;
            this.Value = value;
        }
        public string Name { get; set; }
        public bool Value { get; set; }
    }
    public class PivotGridRibbonMenuManager : RibbonMenuManager {
        PivotGridControl currentPivotGrid = null;
        BarSubItem bsiViewOptions;

        public event EventHandler<ViewOptionsChangedEventArgs> ViewOptionsChanged;
        public PivotGridRibbonMenuManager(RibbonMainForm form)
            : base(form) {
            CreateOptionsMenu(form.ReservGroup1, form.Ribbon);
        }
        void CreateOptionsMenu(RibbonPageGroup ribbonPageGroup, RibbonControl ribbonControl) {
            ribbonPageGroup.Text = "Options";
            bsiViewOptions = new BarSubItem();
            bsiViewOptions.Caption = "View\n Options";
            MainFormHelper.SetBarButtonImage(bsiViewOptions, "View");
            ribbonControl.Items.Add(bsiViewOptions);
            ribbonPageGroup.ItemLinks.Add(bsiViewOptions);
        }
        public void RefreshOptionsMenu(PivotGridControl pivotGrid) {
            currentPivotGrid = pivotGrid;
            ShowReservGroup1(pivotGrid != null); 
            LookAndFeelMenu.ClearOptionItems(Manager);
            LookAndFeelMenu.AddOptionsMenu(bsiViewOptions, ViewOptions, new ItemClickEventHandler(miViewOptions_Click), Manager);
        }
        private object ViewOptions {
            get {
                if(currentPivotGrid == null) return null;
                return currentPivotGrid.OptionsView;
            }
        }
        void miViewOptions_Click(object sender, ItemClickEventArgs e) {
            OptionBarItem item = e.Item as OptionBarItem;
            if(currentPivotGrid != null && item != null) {
                if(currentPivotGrid.OptionsView.RowTotalsLocation == PivotRowTotalsLocation.Tree && item.Caption.Equals("ShowRowTotals"))
                    MessageBox.Show("The ShowRowTotals option must be enabled when the 'Tree' row area mode is used.");
                else {
                    DevExpress.Utils.SetOptions.SetOptionValueByString(item.Caption, ViewOptions, item.Checked);
                    RaiseViewOptionsChanged(item.Caption, item.Checked);
                }
                LookAndFeelMenu.InitOptionsMenu(bsiViewOptions, ViewOptions);
            }
        }
        void RaiseViewOptionsChanged(string name, bool value) {
            if(ViewOptionsChanged != null)
                ViewOptionsChanged(this, new ViewOptionsChangedEventArgs(name, value));
        }
    }
	public class TutorialControl : TutorialControlBase {
		private DevExpress.Utils.Frames.NotePanel fDescription = null;
        Color red, green, blue;
        Color DefaultBlue = Color.FromArgb(39, 63, 133),
            DefaultRed = Color.FromArgb(169, 7, 7),
            DefaultGreen = Color.FromArgb(42, 93, 1);
		static object imlCategory = null;
		static object imlHeaders = null;

		static string[] CategoryNames = new string[] {"Beverages", "Condiments", "Confections", "Dairy Products", "Grains/Cereals", "Meat/Poultry", "Produce", "Seafood"};
		public static int GetCategoryIndexByName(object name) {
			if(name != null)
				for(int i = 0; i < CategoryNames.Length; i++)
					if(CategoryNames[i] == name.ToString()) return i;
			return -1;
		}
        public static object CategoryImageList {
            get {
                if(imlCategory == null)
                    imlCategory = ImageHelper.CreateImageCollectionFromResourcesEx("DevExpress.XtraPivotGrid.Demos.Images.categories.bmp", typeof(TutorialControl).Assembly, new Size(16, 16), Color.Magenta);
                return imlCategory;
            }
        }
        public static object HeadersImageList {
            get {
                if(imlHeaders == null)
                    imlHeaders = ImageHelper.CreateImageCollectionFromResourcesEx("DevExpress.XtraPivotGrid.Demos.Images.headers.bmp", typeof(TutorialControl).Assembly, new Size(16, 16), Color.Magenta);
                return imlHeaders;
            }
        }

		public TutorialControl() {}

		protected override void SetControlManager(Control ctrl, BarManager manager) {
			DevExpress.XtraPivotGrid.PivotGridControl grid = ctrl as DevExpress.XtraPivotGrid.PivotGridControl;
			if(grid != null) grid.MenuManager = manager;
		}

		public DevExpress.Utils.Frames.NotePanel Description {
			get { return fDescription; }
			set { fDescription = value; 
				OnSetDescription("");	
			}
		}

		protected virtual void OnSetDescription(string fDescription) {
			if(fDescription == string.Empty) return;
			Description.Text = string.Format(fDescription);
		}
        protected override void AllowExport() {
            EnabledPrintExportActions(true, ExportFormats.PDF | ExportFormats.HTML | ExportFormats.MHT | ExportFormats.XLS |
                        ExportFormats.RTF | ExportFormats.Text | ExportFormats.XLSX, false);
        }
        public override bool AllowPrintOptions { get { return ExportControl != null; } }
		public virtual PivotGridControl ExportControl { get { return null; }}
		public virtual PivotGridControl ViewOptionsControl { get { return null; }}
		public virtual bool ShowLookAndFeelMenu { get { return true; }}

        public Color Red {
            get {
                if(red.IsEmpty) {
                    if(LookAndFeel.ActiveStyle == ActiveLookAndFeelStyle.Skin)
                        red = EditorsSkins.GetSkin(LookAndFeel).Colors.GetColor(EditorsSkins.SkinFilterControlGroupOperatorTextColor);
                    if(red.IsEmpty || red == Color.Black)
                        red = DefaultRed;
                }
                return red;
            }
        }

        public Color Blue {
            get {
                if(blue.IsEmpty) {
                    if(LookAndFeel.ActiveStyle == ActiveLookAndFeelStyle.Skin)
                        blue = EditorsSkins.GetSkin(LookAndFeel).Colors.GetColor(EditorsSkins.SkinFilterControlFieldNameTextColor);
                    if(blue.IsEmpty || blue == Color.Black)
                        blue = DefaultBlue;
                }
                return blue;
            }
        }

        public Color Green {
            get {
                if(green.IsEmpty) {
                    if(LookAndFeel.ActiveStyle == ActiveLookAndFeelStyle.Skin)
                        green = EditorsSkins.GetSkin(LookAndFeel).Colors.GetColor(EditorsSkins.SkinFilterControlOperatorTextColor);
                    if(green.IsEmpty || green == Color.Black)
                        green = DefaultGreen;
                }
                return green;
            }
        }

        protected override void OnStyleChanged() {
            base.OnStyleChanged();
            red = Color.Empty;
            blue = Color.Empty;
            green = Color.Empty;
        }

        protected virtual bool HideCustFormWhenSwitchDemo {
            get { return true; }
        }
		protected override void DoHide() {
            if(HideCustFormWhenSwitchDemo)
                FindPivotGridAndHideCustForm(this);
		}
        void FindPivotGridAndHideCustForm(Control control) {
            if(control.Controls == null)
                return;
            foreach(Control ctrl in control.Controls) {
                FindPivotGridAndHideCustForm(ctrl);
                PivotGridControl pivot = ctrl as PivotGridControl;
                if(pivot == null)
                    continue;
                pivot.DestroyCustomization();
            }
		}

		DataView dvTutorial = null;
		protected DataView GetNWindData(string tableName) {
			string DBFileName = DevExpress.Utils.FilesHelper.FindingFileName(Application.StartupPath,"Data\\nwind.mdb");
			if(DBFileName != "") {
				DataSet ds = new DataSet();
				string con = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DBFileName;
				System.Data.OleDb.OleDbDataAdapter oleDbDataAdapter = new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM " + tableName, con);
				SetWaitDialogCaption(string.Format("Loading {0}...", tableName));
				oleDbDataAdapter.Fill(ds, tableName);
				
				dvTutorial = ds.Tables[tableName].DefaultView;
				return dvTutorial;
			}
			return null;
		}

		public DataRowView GetDataRowByIndex(int index) {
			if(dvTutorial != null)
				return dvTutorial[index];
			return null;
		}

        protected void UpdateListBoxColor(BaseListBoxControl listBox) {
            if(listBox.Parent.BackColor != Color.Transparent)
                listBox.BackColor = listBox.Parent.BackColor;
            else
                listBox.Appearance.Options.UseBackColor = false;
        }

        #region Print and Export
        Thread thread;
        bool stop;
        protected override void ExportToCore(String filename, string ext) {
            if(ExportControl == null) return;
            stop = false;
            thread = new Thread(new ThreadStart(StartExport));
            thread.Start();
            Cursor currentCursor = Cursor.Current;
            Cursor.Current = Cursors.WaitCursor;
            if(ext == "rtf") ExportControl.ExportToRtf(filename);
            if(ext == "pdf") ExportControl.ExportToPdf(filename);
            if(ext == "mht") ExportControl.ExportToMht(filename);
            if(ext == "html") ExportControl.ExportToHtml(filename);
            if(ext == "txt") ExportControl.ExportToText(filename);
            if(ext == "xls") ExportControl.ExportToXls(filename);
            if(ext == "xlsx") ExportControl.ExportToXlsx(filename);
            EndExport();
            Cursor.Current = currentCursor;
        }
        protected override void ExportToPDF() {
            ExportTo("pdf", "PDF document (*.pdf)|*.pdf");
        }
        protected override void ExportToHTML() {
            ExportTo("html", "HTML document (*.html)|*.html");
        }
        protected override void ExportToMHT() {
            ExportTo("mht", "MHT document (*.mht)|*.mht");
        }
        protected override void ExportToXLS() {
            ExportTo("xls", "XLS document (*.xls)|*.xls");
        }
        protected override void ExportToXLSX() {
            ExportTo("xlsx", "XLSX document (*.xlsx)|*.xlsx");
        }
        protected override void ExportToRTF() {
            ExportTo("rtf", "RTF document (*.rtf)|*.rtf");
        }
        protected override void ExportToText() {
            ExportTo("txt", "Text document (*.txt)|*.txt");
        }
        protected override void PrintPreview() {
            if(ExportControl != null) {
                if(RibbonMenuManager.PrintOptions.ShowRibbonPreviewForm)
                    ExportControl.ShowRibbonPrintPreview();
                else
                    ExportControl.ShowPrintPreview();
            }
        }
        void StartExport() {
            Thread.Sleep(400);
            if(stop)
                return;
            ExportForm progressForm = new ExportForm(this.FindForm());
            progressForm.Show();
            try {
                while(!stop) {
                    Application.DoEvents();
                    Thread.Sleep(100);
                }
            } catch {
            }
            progressForm.Dispose();
        }
        void EndExport() {
            stop = true;
            thread.Join();
        }
        #endregion
	}

	public class DemoFormatCondition {
		PivotGridStyleFormatCondition fCondition = null;
		public DemoFormatCondition(PivotGridStyleFormatCondition fCondition) {
			this.fCondition = fCondition;
		}
		public PivotGridStyleFormatCondition StyleCondition {
			get { return fCondition; }
		}
        public override string ToString() {
            if(StyleCondition == null) return "Empty condition";
            if(!Comparer.Equals(StyleCondition.Condition, FormatConditionEnum.None))
                if(StyleCondition.Condition == FormatConditionEnum.Between || StyleCondition.Condition == FormatConditionEnum.NotBetween) {
                    return string.Format("{0} {1:c}, {2:c}", StyleCondition.Condition, StyleCondition.Value1, StyleCondition.Value2);
                } else
                    return string.Format("{0} {1:c}", StyleCondition.Condition, StyleCondition.Value1);
            return string.Format("Condition Item - Index {0}", Index);
        }
		public int Index { get { return StyleCondition.PivotGrid.FormatConditions.IndexOf(StyleCondition); }}
	}
}