Mini Kabibi Habibi

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

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Xml;

namespace DevExpress.XtraBars.Demos.BrowserDemo {
    public partial class frmMain : DevExpress.XtraEditors.XtraForm {
        public frmMain() {
            InitializeComponent();
            webBrowser1.StatusTextChanged += new EventHandler(webBrowser1_StatusTextChanged);
            webBrowser1.CanGoBackChanged += new EventHandler(webBrowser1_CanGoBackChanged);
            webBrowser1.CanGoForwardChanged += new EventHandler(webBrowser1_CanGoForwardChanged);
            barManager1.ForceLinkCreate();
            if(System.IO.File.Exists(linksName)) {
                XmlDocument doc = new XmlDocument();
                try { doc.Load(linksName); }
                catch { }
                if(doc.DocumentElement != null && doc.DocumentElement.Name == "Items") {
                    LoadLinks(doc.DocumentElement.ChildNodes[0].ChildNodes);
                    LoadFavorites(doc.DocumentElement.ChildNodes[1].ChildNodes);
                }
            }
            if(System.IO.File.Exists(layoutName)) {
                barManager1.RestoreFromXml(layoutName);
            }
            barManager1.GetController().Changed += new EventHandler(ChangedController);
            iFavorites.Down = dockPanel1.Visibility == DevExpress.XtraBars.Docking.DockVisibility.Visible;
            ips_Init();
            InitSkins();
            this.Focus();
        }
        string layoutName = "layout.xml";
        string skinMask = "Skin: ";
        private bool skinProcessing = false;
        string currentAddress = "";
        int tc = 0;
        string linksName = "links.xml";

        #region Skins

        void InitSkins() {
            barManager1.ForceInitialize();
            iPaintStyle.ImageIndex = 0; iPaintStyle.ImageIndex = -1;
            if(barManager1.GetController().PaintStyleName == "Skin") {
                iPaintStyle.Caption = skinMask + DevExpress.LookAndFeel.UserLookAndFeel.Default.ActiveSkinName;
                iPaintStyle.Hint = iPaintStyle.Caption;
            }
            foreach(DevExpress.Skins.SkinContainer cnt in DevExpress.Skins.SkinManager.Default.Skins) {
                BarButtonItem item = new BarButtonItem(barManager1, skinMask + cnt.SkinName);
                iPaintStyle.AddItem(item);
                item.ItemClick += new ItemClickEventHandler(OnSkinClick);
            }
        }
        void OnSkinClick(object sender, ItemClickEventArgs e) {
            string skinName = e.Item.Caption.Replace(skinMask, "");
            DevExpress.LookAndFeel.UserLookAndFeel.Default.SetSkinStyle(skinName);
            barManager1.GetController().PaintStyleName = "Skin";
            ctrlFavorites1.barManager1.GetController().PaintStyleName = "Skin";
            iPaintStyle.Caption = e.Item.Caption;
            iPaintStyle.Hint = iPaintStyle.Caption;
            iPaintStyle.ImageIndex = -1;
        }

        private void ChangedController(object sender, EventArgs e) {
            if(skinProcessing) return;
            string paintStyleName = barManager1.GetController().PaintStyleName;
            if("DefaultSkin".IndexOf(paintStyleName) >= 0)
                DevExpress.Skins.SkinManager.EnableFormSkins();
            else DevExpress.Skins.SkinManager.DisableFormSkins();
            skinProcessing = true;
            DevExpress.LookAndFeel.LookAndFeelHelper.ForceDefaultLookAndFeelChanged();
            skinProcessing = false;
        }
        #endregion
        void LoadLinks(XmlNodeList list) {
            for(int i = 0; i < list.Count; i++) {
                if(list.Item(i).Name == "Link")
                    AddNewItem(list[i].InnerText);
            }
        }

        void LoadFavorites(XmlNodeList list) {
            for(int i = 0; i < list.Count; i++) {
                if(list.Item(i).Name == "Favorite")
                    AddFavoriteItem(list[i].InnerText, list[i].Attributes[0].Value, true);
            }
            ChangeFavorites(true);
        }

        private void AddNewItem(string s) {
            if(s != "") {
                bool isAdded = false;
                for(int i = 0; i < repositoryItemComboBox1.Items.Count; i++)
                    if(repositoryItemComboBox1.Items[i].ToString() == s) {
                        isAdded = true;
                        break;
                    }
                if(!isAdded)
                    repositoryItemComboBox1.Items.Add(s);
            }
        }

        private void GoToItem(string address) {
            if(address == null) return;
            if(currentAddress != address) {
                eAddress.EditValue = address;
                webBrowser1.Navigate(address);
            }
        }

        string Address {
            get {
                if(barManager1.ActiveEditor != null && barManager1.ActiveEditor.EditValue != null)
                    return barManager1.ActiveEditor.EditValue.ToString();
                return null;
            }
        }

        private void repositoryItemComboBox1_CloseUp(object sender, DevExpress.XtraEditors.Controls.CloseUpEventArgs e) {
            GoToItem(Address);
        }

        private void repositoryItemComboBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) {
            DevExpress.XtraEditors.ComboBoxEdit edit = sender as DevExpress.XtraEditors.ComboBoxEdit;
            if(e.KeyData == Keys.Escape) {
                e.Handled = true;
                edit.SelectAll();
            }
            if(e.KeyData == Keys.Enter) {
                barManager1.ActiveEditItemLink.PostEditor();
                edit.SelectAll();
                e.Handled = true;
                GoToItem(eAddress.EditValue.ToString());
            }
        }
        private void repositoryItemComboBox1_Validating(object sender, CancelEventArgs e) {
            GoToItem(Address);
        }
        private void SaveXML() {
            XmlTextWriter tw = new XmlTextWriter(linksName, System.Text.Encoding.UTF8);
            tw.Formatting = Formatting.Indented;
            tw.WriteStartElement("Items");
            tw.WriteAttributeString("version", "1.0");
            tw.WriteAttributeString("application", Application.ProductName);

            tw.WriteStartElement("Links");
            for(int i = 0; i < repositoryItemComboBox1.Items.Count; i++)
                tw.WriteElementString("Link", repositoryItemComboBox1.Items[i].ToString());
            tw.WriteEndElement();

            tw.WriteStartElement("Favorites");
            for(int i = 0; i < barManager1.Items.Count; i++)
                if(barManager1.Items[i].Category == barManager1.Categories["Favorites"])
                    tw.WriteElementString("Favorite", barManager1.Items[i].Tag.ToString(), barManager1.Items[i].Caption);
            tw.WriteEndElement();

            tw.WriteEndElement();
            tw.Close();
            barManager1.SaveToXml(layoutName);
        }

        private void frmMain_Closing(object sender, System.ComponentModel.CancelEventArgs e) {
            SaveXML();
        }

        private void webBrowser1_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e) {
            repositoryItemProgressBar1.Maximum = (int)(e.MaximumProgress + (e.MaximumProgress == repositoryItemProgressBar1.Minimum ? 1 : 0));
            eProgress.EditValue = e.CurrentProgress;
        }
        string blankString = "about:blank";
        private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e) {
            string s = e.Url.AbsoluteUri;
            if(s == blankString) return;
            if(barManager1.ActiveEditor != null)
                barManager1.ActiveEditItemLink.CloseEditor();
            if(CorrectAddress(s)) {
                eAddress.EditValue = s;
                currentAddress = s;
                AddNewItem(s);
            }
        }

        private void webBrowser1_StatusTextChanged(object sender, EventArgs e) {
            iText.Caption = webBrowser1.StatusText;
        }
        private void webBrowser1_CanGoForwardChanged(object sender, EventArgs e) {
            iForward.Enabled = webBrowser1.CanGoForward;
        }
        private void webBrowser1_CanGoBackChanged(object sender, EventArgs e) {
            iBack.Enabled = webBrowser1.CanGoBack;
        }

        bool CorrectAddress(string name) {
            string[] names = new string[] { "javascript:" };
            foreach(string s in names)
                if(name.IndexOf(s) == 0) return false;
            return true;
        }

        private void iGo_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            GoToItem(eAddress.EditValue.ToString());
        }

        private void iBack_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            try {
                webBrowser1.GoBack();
            }
            catch { }
        }

        private void iForward_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            try {
                webBrowser1.GoForward();
            }
            catch { }
        }

        private void iStop_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            webBrowser1.Stop();
        }

        private void iRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            webBrowser1.Refresh();
        }

        private void iHome_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            webBrowser1.GoHome();
        }

        private void iSearch_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            webBrowser1.GoSearch();
        }

        private 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));
        }

        private void iExit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            Close();
        }

        private void iOpen_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            OpenFileDialog dlg = new OpenFileDialog();
            dlg.Filter = "HTML Files|*.htm; *.html|" +
                "GIF Files|*.gif|" +
                "JPEG Files|*.jpg;*.jpeg|" +
                "XML Files|*.xml|" +
                "All Files |*.*";
            dlg.Title = "Open";
            if(dlg.ShowDialog() == DialogResult.OK)
                GoToItem(dlg.FileName);
        }

        private void iPrint_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            try {
                System.Drawing.Printing.PrintDocument pd = new System.Drawing.Printing.PrintDocument();
                //todo create pd     
                PrintDialog dlg = new PrintDialog();
                dlg.Document = pd;
                if(dlg.ShowDialog() == DialogResult.OK) {
                    pd.Print();
                }
            }
            catch { }
        }

        private void OpenNotepad() {
            System.Diagnostics.Process p = new System.Diagnostics.Process();
            string s = System.Environment.SystemDirectory + "\\Notepad.exe";
            if(System.IO.File.Exists(s)) {
                p.StartInfo.FileName = s;
                p.Start();
            }
        }

        private void iEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            OpenNotepad();
        }

        private void iFavorites_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            if(iFavorites.Down)
                dockPanel1.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
            else {
                if(dockPanel1.Dock == DevExpress.XtraBars.Docking.DockingStyle.Float)
                    dockPanel1.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
                else
                    dockPanel1.Visibility = DevExpress.XtraBars.Docking.DockVisibility.AutoHide;
            }
        }

        private void AddFavoriteItem(string locationName, string locationURL) {
            AddFavoriteItem(locationName, locationURL, false);
        }
        private void AddFavoriteItem(string locationName, string locationURL, bool init) {
            BarItem item = new BarButtonItem();
            item.ItemClick += new ItemClickEventHandler(Favorite_Click);
            item.Category = barManager1.Categories["Favorites"];
            item.Caption = locationName;
            item.Tag = locationURL;
            barManager1.Items.Add(item);
            if(!init) ChangeFavorites();
        }

        private void AddFavorite() {
            frmAddFavorites f = new frmAddFavorites(webBrowser1.DocumentTitle, webBrowser1.Url.AbsoluteUri, imageList1.Images[2]);
            if(f.ShowDialog() == DialogResult.OK) {
                bool add = true;
                for(int i = 0; i < barManager1.Items.Count; i++) {
                    BarItem item = barManager1.Items[i];
                    if(item.Category == barManager1.Categories["Favorites"] && item.Caption == f.LocationName) {
                        if(DevExpress.XtraEditors.XtraMessageBox.Show("The name specified for the shortcut already exists in your Favorites list. Would you like to overwrite it?", Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                            item.Tag = f.LocationURL;
                        add = false;
                        break;
                    }
                }
                if(add)
                    AddFavoriteItem(f.LocationName, f.LocationURL);
            }
        }

        private void iAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            AddFavorite();
        }

        private void Favorite_Click(object sender, ItemClickEventArgs e) {
            GoToItem(e.Item.Tag.ToString());
        }

        private void ChangeFavorites() { ChangeFavorites(false); }
        private void ChangeFavorites(bool init) {
            siFavorites.ClearLinks();
            ctrlFavorites1.DeleteItems();

            siFavorites.AddItem(iAdd);
            for(int i = 0; i < barManager1.Items.Count; i++) {
                BarItem item = barManager1.Items[i];
                if(item.Category == barManager1.Categories["Favorites"]) {
                    siFavorites.AddItem(item);
                    ctrlFavorites1.AddItem(item, init);
                }
            }
            if(siFavorites.ItemLinks.Count > 1) siFavorites.ItemLinks[1].BeginGroup = true;
        }

        private void ctrlFavorites1_AddNewFavorite(object sender, System.EventArgs e) {
            AddFavorite();
        }

        private BarItem ItemByName(string name) {
            for(int i = 0; i < barManager1.Items.Count; i++) {
                BarItem item = barManager1.Items[i];
                if(item.Category == barManager1.Categories["Favorites"] && item.Caption == name)
                    return item;
            }
            return null;
        }

        private void ctrlFavorites1_DeleteFavorite(object sender, System.EventArgs e) {
            string s = sender.ToString();
            if(DevExpress.XtraEditors.XtraMessageBox.Show("Are you sure you want to remove shortcut?", Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) {
                BarItem item = ItemByName(s);
                if(item != null) {
                    barManager1.Items.Remove(item);
                    ChangeFavorites();
                }
            }
        }

        private void ctrlFavorites1_EditFavorite(object sender, System.EventArgs e) {
            string s = sender.ToString();
            BarItem item = ItemByName(s);
            if(item != null) {
                frmAddFavorites f = new frmAddFavorites(item.Caption, item.Tag.ToString(), imageList1.Images[1], false);
                if(f.ShowDialog() == DialogResult.OK) {
                    item.Caption = f.LocationName;
                    item.Tag = f.LocationURL;
                    ChangeFavorites();
                }
            }
        }

        private void ctrlFavorites1_OpenFavorite(object sender, System.EventArgs e) {
            BarItem item = ItemByName(sender.ToString());
            if(item != null) {
                Favorite_Click(item, new ItemClickEventArgs(item, null));
            }
        }

        private void dockPanel1_VisibilityChanged(object sender, DevExpress.XtraBars.Docking.VisibilityChangedEventArgs e) {
            iFavorites.Down = e.Visibility == DevExpress.XtraBars.Docking.DockVisibility.Visible;
        }

        private void ips_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            barManager1.GetController().PaintStyleName = e.Item.Description;
            InitPaintStyle(e.Item);
            barManager1.GetController().ResetStyleDefaults();
            DevExpress.LookAndFeel.UserLookAndFeel.Default.SetDefaultStyle();
        }

        private void InitPaintStyle(BarItem item) {
            if(item == null) return;
            iPaintStyle.ImageIndex = item.ImageIndex;
            iPaintStyle.Caption = item.Caption;
            iPaintStyle.Hint = item.Description;
            ctrlFavorites1.barManager1.GetController().PaintStyleName = barManager1.GetController().PaintStyleName;

        }

        private void ips_Init() {
            BarItem item = null;
            for(int i = 0; i < barManager1.Items.Count; i++)
                if(barManager1.Items[i].Description == barManager1.GetController().PaintStyleName)
                    item = barManager1.Items[i];
            InitPaintStyle(item);
        }


        private void timer1_Tick(object sender, System.EventArgs e) {
            if(bar5.ItemLinks.Count < 1 || bar5.ItemLinks[0].Item != iPaintStyle ||
                (barManager1.HighlightedLink != null && barManager1.HighlightedLink.Item != iPaintStyle)) {
                timer1.Stop();
                return;
            }
            barManager1.SelectLink(barManager1.HighlightedLink == null ? bar5.ItemLinks[0] : null);
            if(tc++ > 10) {
                timer1.Stop();
                barManager1.SelectLink(null);
            }
        }

        void InitHomePage() {
            GoToItem("www.devexpress.com");
        }

        private void frmMain_Load(object sender, System.EventArgs e) {
            BeginInvoke(new MethodInvoker(InitHomePage));
        }
    }
}