フォームクラス

ファイル名:Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Collections;
using ABCS.Classes;
using Microsoft.VisualBasic;
using System.Text.RegularExpressions;

namespace ABCS
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
        }

        private String boomarkDir_ = null;
        private MyFiles myFiles_ = null;
        private TreeView trace_ = null;
        private TreeView recent_ = null;
        private string ez = "Provider=MSDAORA; User ID=ABCS; password=ABCS; Data Source=lsl.atnifty.com:1521/bbc";
        private string xmlurl = Application.StartupPath + "\\" + "urls.xml";
        private DataSet dataSet_ = null;

        private MySnapWebBrowser Snapped2UPweb = null;


        private void Form1_Load(object sender, EventArgs e)
        {
            #region
            #endregion
            //Tab 初期化
            {
                if (!String.IsNullOrEmpty(Environment.GetEnvironmentVariable("ABCS_SITE")))
                {
                    string site = Environment.GetEnvironmentVariable("ABCS_SITE").ToString();
                    this.ez = "Provider=MSDAORA; User ID=ABCS; password=ABCS; Data Source=" + site + ":1521/bbc";
                }
                this.WindowState = FormWindowState.Maximized;

                //MyAnisTabControl初期化
                this.tabControl.TabPages.Clear();
                this.tabView.TabPages.Clear();

                //ウインドウサイズ
                int xsize = this.Size.Width;
                int ysize = this.Size.Height;
                int ybias = 64;

                /*
                 * //古い
                //myTabPageAdmin
                {
                    myTabPageAdmin = new MyTabPageAdmin(this.tabControl);
                }
                 */

                /*
                 * //AnisTabControl, MyAnisTabControlに移行し、不要になった。
                //MouseEventHandler
                {
                    this.tabControl.MouseDoubleClick += new MouseEventHandler(this.tabControl_DoubleClick);
                }
                */

                //SlidingButton ※ReiszeWebTabUrlTab()の前であること。
                {
                    this.slidingButton4Half.Top = ysize - ybias + 2;
                    this.slidingButton4Half.Left = xsize * 50 / 100;

                    this.slidingButton4Half.resizeHook = new OnResizeHook4Form(this.ResizeWebTabUrlTab);
                }


                //ウインドウサイズに合わせて、WebTabとUrlTabをリサイズ
                this.ResizeWebTabUrlTab();


                //AnisTabControl ドラッグ&ドロップ
                {
                    this.tabControl.SortTabDragDrop = true;
                    this.tabControl.AllowDrop = true;
                }

                //Favarate
                {
                    TabPage tab = new TabPage();
                    this.treeFaverate.Dock = DockStyle.Fill;
                    tab.Controls.Add(this.treeFaverate);
                    tab.Text = "お気に入り";
                    this.tabView.TabPages.Add(tab);
                }

                //2UP
                {
                    TabPage tab = new TabPage();
                    MySnapWebBrowser web = new MySnapWebBrowser(this.tabControl, this);
                    web.Dock = DockStyle.Fill;
                    tab.Controls.Add(web);
                    tab.Text = "スナップWeb";
                    this.tabView.TabPages.Add(tab);
                    this.Snapped2UPweb = web;
                    //web.OnNewWindowSnap += this.SnapNewWindow;
                }

                //Trace
                {
                    this.trace_ = new TreeView();

                    TabPage tab = new TabPage();
                    this.trace_.Dock = DockStyle.Fill;
                    tab.Controls.Add(this.trace_);
                    tab.Text = "トレース";
                    this.tabView.TabPages.Add(tab);
                }

                //Recent
                {
                    this.recent_ = new TreeView();

                    TabPage tab = new TabPage();
                    this.recent_.Dock = DockStyle.Fill;
                    tab.Controls.Add(this.recent_);
                    tab.Text = "履歴";
                    this.tabView.TabPages.Add(tab);
                }


            }

            //お気に入りツリー 初期化
            {
                TreeNodeCollection nodes = this.treeFaverate.Nodes;

                this.boomarkDir_ = Environment.GetFolderPath(Environment.SpecialFolder.Favorites);

                this.myFiles_ = new MyFiles(this.boomarkDir_);

                this.treeFaverate.Nodes.Add(this.myFiles_.CreateNode());

            }

            //履歴ツリー 初期化
            {
                TreeNodeCollection nodes = this.recent_.Nodes;

                string recentDir = Environment.GetFolderPath(Environment.SpecialFolder.History);

                MyFiles files = new MyFiles(recentDir);

                this.recent_.Nodes.Add(files.CreateNode());

            }

        }

        #region oldbutton
        /*
        private void btnNewTab_Click(object sender, EventArgs e)
        {
            TabPage tab = new TabPage();
            WebBrowser web = new WebBrowser();
            web.Dock = DockStyle.Fill;
            tab.Controls.Add(web);

            this.tabControl.Controls.Add(tab);
            this.tabControl.SelectTab(tab);
        }
        */
        #endregion

        private string getFavarateOffset(string bookmarkDir)
        {
            Regex reg = new Regex("[\\\\][^\\\\]*$");
            return reg.Replace(bookmarkDir, ""); 
        }

        private void treeFaverate_AfterSelect(object sender, TreeViewEventArgs e)
        {
            TreeNode node = e.Node;
            String nodefile = this.getFavarateOffset(this.boomarkDir_) + "\\" + node.FullPath;
            //MessageBox.Show(nodefile);
            openPage(nodefile);
        }

        private void openPage(string path)
        {
            if (File.Exists(path))
            {
                StreamReader reader = new StreamReader(path, Encoding.Default);
                while (!reader.EndOfStream)
                {
                    string line = reader.ReadLine();
                    if (line.IndexOf("URL=") == 0)
                    {
                        string url = line.Replace("URL=", "");
                        openNewTab(url);
                        break;
                    }
                }

            }
        }


        private void openNewTab(string url)
        {
            MyTabPageWithWeb tab = new MyTabPageWithWeb(this, this.tabControl,url);
            tab.AllowDrop = true;
            //ContextMenuStrip topmenu = new ContextMenuStrip();
            //ContextMenuStrip menu = web.ContextMenuStrip;

            //web.ContextMenuStrip = topmenu;

            this.trace_.Nodes.Add(new TreeNode(url));

            this.tabControl.Controls.Add(tab);
            this.tabControl.SelectTab(tab);

            //タブ・子タブ・子Webへのポインタ管理
            //this.myTabPageAdmin.Add(tab, web, ctabctrl);
            //tab.DoubleClick += this.tabPageDoubleClick;   //いらない
        }

        private void aaaToolStripMenuItem_Click(object sender, EventArgs e)
        {
        }


        private void frmMain_Resize(object sender, EventArgs e)
        {
            ResizeWebTabUrlTab();

        }

        protected override void OnResize(EventArgs e)
        {
            base.OnResize(e);
            this.slidingButton4Half.Left = this.Width / 2;
        } 
        private void ResizeWebTabUrlTab()
        {
            //ウインドウサイズ
            int xsize = this.Size.Width;
            int ysize = this.Size.Height;
            int ybias = 0;

            int topPanelY = this.pnlTopPanel.Height;

            if (this.WindowState == FormWindowState.Maximized)
            {
                ybias = 64;
            }
            else
            {
                ybias = 64;

            }


            int pct = this.slidingButton4Half.avgX * 100 / xsize;

            //TabWeb
            {
                int pnlXsize = xsize * (100 - pct) / 100;
                int pnlYsize = ysize - ybias - topPanelY;

                this.pnlPanelForTab.Size = new Size(pnlXsize, pnlYsize);
                this.pnlPanelForTab.Top = topPanelY;
                this.pnlPanelForTab.Left = xsize - pnlXsize;

                this.tabControl.AllowDrop = true;
                this.tabControl.SortTabDragDrop = true;

                //this.tabControl.Refresh();
                //this.pnlPanelForTab.Refresh();
            }

            int tabViewHeight = ysize * 90 / 100 - ybias - topPanelY;
            int tabViewWidth = xsize * pct / 100;

            //pnlButtons
            {
                this.pnlButtons.Size = new Size(xsize * pct / 100, ysize - tabViewHeight - ybias - topPanelY);
                this.pnlButtons.Top = topPanelY;
                this.pnlButtons.Left = 0;
            }

            //TabView
            {
                this.tabView.Size = new Size(tabViewWidth, tabViewHeight);
                this.tabView.Top = this.pnlButtons.Top + this.pnlButtons.Height;
                this.tabView.Left = 0;
                //this.tabView.Controls.Clear();
                //this.tabView.Refresh();
            }



            //sliderButton
            {
                this.slidingButton4Half.Top = ysize - ybias + 2;
            }

        }

        private void btnBackWeb_Click(object sender, EventArgs e)
        {
            MyTabPageWithWeb tab = this.tabControl.SelectedTab as MyTabPageWithWeb;

            if (tab != null)
            {
                tab.ChildWebBrowser.GoBack();
            }
        }

        private void btnForwardWeb_Click(object sender, EventArgs e)
        {
            MyTabPageWithWeb tab = this.tabControl.SelectedTab as MyTabPageWithWeb;

            if (tab != null)
            {
                tab.ChildWebBrowser.GoForward();
            }
        }

        private void btnSnap_Click(object sender, EventArgs e)
        {
            MyTabPageWithWeb tab = this.tabControl.SelectedTab as MyTabPageWithWeb;

            WebBrowser fromweb = tab.ChildWebBrowser;

            MySnapWebBrowser toweb = this.Snapped2UPweb;

            if (tab != null)
            {
                toweb.isSnap = true;
                toweb.Navigate(fromweb.Url);

                foreach (TabPage ctab in this.tabView.TabPages)
                {
                    if (ctab.Text == "スナップWeb")
                    {
                        this.tabView.SelectTab(ctab);
                        return;
                    }
                }


            }

        }

        private void frmMain_SizeChanged(object sender, EventArgs e)
        {
            this.ResizeWebTabUrlTab();
        }



    }
    
}