Mini Kabibi Habibi

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

using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Reflection;
using System.Windows.Forms;
using DevExpress.XtraBars.Docking;
using DevExpress.XtraBars.Docking2010.Views;
using DevExpress.XtraBars.Helpers;
using DevExpress.XtraRichEdit;
using DevExpress.XtraSplashScreen;

namespace DevExpress.XtraBars.Demos.DockingDemo {
    public partial class frmMain : DevExpress.XtraEditors.XtraForm {
        public frmMain() {
            CreateResourceStream();
            SplashScreenManager.ShowImage(SplashScreenImage, true, false);
            InitializeComponent();
            WindowState = FormWindowState.Maximized;
            CreateResourceStream();
            SolutionExplorer.InitTreeView(treeView1);
            xtraPropertyGrid1.PropertyGrid.AutoGenerateRows = true;
        }
        Bitmap splashScreenImageCore;
        Bitmap SplashScreenImage { get { return splashScreenImageCore; } }
        Assembly currentAssemblyCore;
        Assembly CurrentAssembly {
            get {
                if(currentAssemblyCore == null)
                    currentAssemblyCore = Assembly.GetExecutingAssembly();
                return currentAssemblyCore;
            }
        }
        private void CreateResourceStream() {
            splashScreenImageCore = new Bitmap(CurrentAssembly.GetManifestResourceStream("DockingDemo.Resources.splashScreen.png"));
            fileStreams.Add(CurrentAssembly.GetManifestResourceStream("DockingDemo.Resources.ProgramText.rtf"));
            fileStreams.Add(CurrentAssembly.GetManifestResourceStream("DockingDemo.Resources.ProgramText2.rtf"));
            fileStreams.Add(CurrentAssembly.GetManifestResourceStream("DockingDemo.Resources.ProgramText3.rtf"));
        }
        private void frmMain_Load(object sender, System.EventArgs e) {
            SkinHelper.InitSkinPopupMenu(iPaintStyle);
            BeginInvoke(new MethodInvoker(InitDemo));
        }
        List<Stream> fileStreams = new List<Stream>();
        int i = 0;
        int projectIndex = 0;
        Cursor currentCursor;
        void InitDemo() {
            AddControls(this, comboBox1);
            comboBox1.SelectedIndex = 0;
            comboBox2.SelectedIndex = 0;
            textBox1.ContextMenu = textBox2.ContextMenu = new ContextMenu();
            AddNewForm("File.cs");
            DevExpress.Demos.ClassViewer.AddClassInfo(treeView1, this.GetType(), new object[] { this, new SolutionExplorer() });
            SplashScreenManager.HideImage();
        }
        void AddNewForm(string s) {
            RichEditControl control = new RichEditControl();
            control.MenuManager = barManager1;
            control.ActiveViewType = DevExpress.XtraRichEdit.RichEditViewType.Draft;
            control.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
            control.LayoutUnit = DevExpress.XtraRichEdit.DocumentLayoutUnit.Pixel;
            control.Name = s;
            control.Text = s;
            control.Options.HorizontalRuler.Visibility = DevExpress.XtraRichEdit.RichEditRulerVisibility.Hidden;
            control.Options.VerticalRuler.Visibility = DevExpress.XtraRichEdit.RichEditRulerVisibility.Hidden;
            control.SelectionChanged += new EventHandler(tb_SelectionChanged);
            tabbedView1.BeginUpdate();
            BaseDocument document = tabbedView1.Controller.AddDocument(control);
            document.Image = imageList4.Images[10];
            document.Form.Text = s;
            document.Form.Icon = CreateIcon(10);
            document.Footer = Directory.GetCurrentDirectory();
            control.LoadDocument(fileStreams[i%3], DocumentFormat.Rtf);
            control.Document.Sections[0].Page.Width = 10000;
            tabbedView1.EndUpdate();
            fileStreams[i].Seek(0, 0);
            i++;
            if(i == 3) i = 0;
        }
        System.Drawing.Icon CreateIcon(int index) {
            return CreateIcon(imageList4.Images[index]);
        }
        System.Drawing.Icon CreateIcon(Image image) {
            if(image == null) return null;
            using(System.Drawing.Bitmap newIcon = new System.Drawing.Bitmap(16, 16, System.Drawing.Imaging.PixelFormat.Format32bppArgb)) {
                using(System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(newIcon)) {
                    g.DrawImageUnscaled(image, 0, 0, 16, 16);
                    return System.Drawing.Icon.FromHandle(newIcon.GetHicon());
                }
            }
        }
        RichEditControl ActiveRTB {
            get {
                if(this.ActiveMdiChild != null && this.ActiveMdiChild.ContainsFocus) {
                    if(this.ActiveMdiChild.Controls.Count == 0) return null;
                    return this.ActiveMdiChild.Controls[0] as RichEditControl;
                }
                return null;
            }
        }
        void InitEdit() {
            RichEditControl editControl = ActiveRTB;
            if(editControl != null) {
                iCut.Enabled = iCopy.Enabled = editControl.Document.Selection != null;
                iPaste.Enabled = string.IsNullOrEmpty(Clipboard.GetText(TextDataFormat.Text)) ? false : true;
                iUndo.Enabled = editControl.CanUndo;
                iRedo.Enabled = editControl.CanRedo;
            }
            else {
                iCut.Enabled = iCopy.Enabled = iPaste.Enabled = iUndo.Enabled = iRedo.Enabled = false;
            }
        }
        void tb_SelectionChanged(object sender, EventArgs e) {
            InitEdit();
        }
        void AddControls(Control container, DevExpress.XtraEditors.ComboBoxEdit cb) {
            foreach(object obj in container.Controls) {
                cb.Properties.Items.Add(obj);
                if(obj is Control) AddControls(obj as Control, cb);
            }
        }
        void repositoryItemComboBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) {
            if(e.KeyCode == Keys.Enter && eFind.EditValue != null)
                repositoryItemComboBox1.Items.Add(eFind.EditValue.ToString());
        }
        void comboBox2_SelectedIndexChanged(object sender, System.EventArgs e) {
            if(comboBox2.SelectedIndex == 0)
                textBox2.Text = " ------ Build started: Project: DockingDemo, Configuration: Debug .NET ------\r\n\r\n Preparing resources...\r\n Updating references...\r\n Performing main compilation...\r\n\r\n Build complete -- 0 errors, 0 warnings\r\n Building satellite assemblies...\r\n\r\n\r\n ---------------------- Done ----------------------\r\n\r\n     Build: 1 succeeded, 0 failed, 0 skipped";
            else textBox2.Text = " 'DefaultDomain': Loaded 'd:\\winnt\\microsoft.net\\framework\\v1.0.3705\\mscorlib.dll', No symbols loaded.\r\n 'DockingDemo': Loaded 'C:\\BarDemos\\CS\\DockingDemo\\bin\\Debug\\DockingDemo.exe', Symbols loaded.";
        }
        void textBox2_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) {
            e.Handled = true;
        }
        void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e) {
            xtraPropertyGrid1.PropertyGrid.SelectedObject = comboBox1.SelectedItem;
        }
        void ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            projectIndex++;
            AddNewForm(string.Format("File{0}.cs", projectIndex));
        }
        void iAbout_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            DevExpress.Utils.About.AboutForm.Show(new DevExpress.Utils.About.ProductInfo(string.Empty, typeof(frmMain), DevExpress.Utils.About.ProductKind.DXperienceWin, DevExpress.Utils.About.ProductInfoStage.Registered));
        }
        void frmMain_MdiChildActivate(object sender, System.EventArgs e) {
            InitEdit();
        }
        void iCut_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            RichEditControl rtb = ActiveRTB;
            if(rtb != null) rtb.Cut();
        }
        void iCopy_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            RichEditControl rtb = ActiveRTB;
            if(rtb != null) rtb.Copy();
        }
        void iPaste_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            RichEditControl rtb = ActiveRTB;
            if(rtb != null) rtb.Paste();
        }
        void iSelectAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            RichEditControl rtb = ActiveRTB;
            if(rtb != null) {
                rtb.SelectAll();
                rtb.Focus();
            }
        }
        void iUndo_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            RichEditControl rtb = ActiveRTB;
            if(rtb != null) rtb.Undo();
            InitEdit();
        }
        void iRedo_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            RichEditControl rtb = ActiveRTB;
            if(rtb != null) rtb.Redo();
            InitEdit();
        }
        //AB15908
        protected DockPanel GetTopDockPanelCore(DockPanel panel) {
            if(panel.ParentPanel != null) return GetTopDockPanel(panel.ParentPanel);
            else return panel;
        }
        protected DockPanel GetTopDockPanel(DockPanel panel) {
            DockPanel floatPanelCandidate = GetTopDockPanelCore(panel);
            if(floatPanelCandidate.Dock == DockingStyle.Float) return floatPanelCandidate;
            else return panel;
        }
        //AB15908
        void iSolutionExplorer_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            dockPanel1.Show();
        }
        void iProperties_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            dockPanel2.Show();
        }
        void iTaskList_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            dockPanel3.Show();
        }
        void iFindResults_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            dockPanel4.Show();
        }
        void iOutput_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            dockPanel5.Show();
        }
        void iToolbox_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            dockPanel6.Show();
        }
        void solutionExplorer1_PropertiesItemClick(object sender, System.EventArgs e) {
            dockPanel2.Show();
        }
        void solutionExplorer1_TreeViewItemClick(object sender, System.EventArgs e) {
            DevExpress.XtraTreeList.TreeList treeView = sender as DevExpress.XtraTreeList.TreeList;
            string fileName = treeView.FocusedNode.GetDisplayText(0);
            fileName = fileName.Replace(".cs", string.Empty);
            Stream stream = CurrentAssembly.GetManifestResourceStream(string.Format("DockingDemo.Resources.{0}.rtf", fileName));
            foreach(BaseDocument document in tabbedView1.Documents) {
                if(document.Caption == (fileName + ".cs")) {
                    tabbedView1.Controller.Activate(document);
                    return;
                }
            }
            if(stream != null) {
                RichEditControl control = new RichEditControl();
                control.ActiveViewType = DevExpress.XtraRichEdit.RichEditViewType.Draft;
                control.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
                control.LayoutUnit = DevExpress.XtraRichEdit.DocumentLayoutUnit.Pixel;
                control.Text = fileName + ".cs";
                control.Options.HorizontalRuler.Visibility = DevExpress.XtraRichEdit.RichEditRulerVisibility.Hidden;
                control.Options.VerticalRuler.Visibility = DevExpress.XtraRichEdit.RichEditRulerVisibility.Hidden;
                control.SelectionChanged += new EventHandler(tb_SelectionChanged);
                tabbedView1.BeginUpdate();
                BaseDocument document = tabbedView1.Controller.AddDocument(control);
                document.Form.Icon = CreateIcon(treeView.FocusedNode.StateImageIndex);
                document.Form.Text = fileName + ".cs";
                document.Image = imageList4.Images[treeView.FocusedNode.StateImageIndex];
                document.Footer = Directory.GetCurrentDirectory();
                control.LoadDocument(stream, DocumentFormat.Rtf);
                control.Document.Sections[0].Page.Width = 10000;
                tabbedView1.EndUpdate();
            }
        }
        void iSaveLayout_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            SaveFileDialog dlg = new SaveFileDialog();
            dlg.Filter = "XML files (*.xml)|*.xml";
            dlg.Title = "Save Layout";
            if(dlg.ShowDialog() == DialogResult.OK) {
                Refresh(true);
                barManager1.SaveToXml(dlg.FileName);
                Refresh(false);
            }
        }
        void iLoadLayout_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            OpenFileDialog dlg = new OpenFileDialog();
            dlg.Filter = "XML files (*.xml)|*.xml|All files|*.*";
            dlg.Title = "Restore Layout";
            if(dlg.ShowDialog() == DialogResult.OK) {
                Refresh(true);
                try {
                    barManager1.RestoreFromXml(dlg.FileName);
                    SkinHelper.InitSkinPopupMenu(iPaintStyle);
                }
                catch { }
                Refresh(false);
            }
        }
        void Refresh(bool isWait) {
            if(isWait) {
                currentCursor = Cursor.Current;
                Cursor.Current = Cursors.WaitCursor;
            }
            else
                Cursor.Current = currentCursor;
            this.Refresh();
        }
        void iExit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            this.Close();
        }
        void tabbedView1_DocumentAdded(object sender, DocumentEventArgs e) {
            e.Document.Form.Text = e.Document.Caption;
            e.Document.Form.Icon = CreateIcon(e.Document.Image);
        }
        void tabbedView1_LostFocus(object sender, EventArgs e) {
            InitEdit();
        }
    }
}