Esempio n. 1
0
 System.Windows.Forms.TabPage LabTech.Interfaces.ITabs.ComputerInit(int ID)
 {
     return(URLTabPlugin.BuildURLTabs(ID, ComputerBrowserVisibilityChanged));
 }
    public void BuildSubURLTabs(object sender, EventArgs ev, URLTabPlugin.TabTypes tt)
    {
        if (sender != null)
        {

            /* Create a panel, find the parent form and maximize it */
            Panel p = (Panel)sender;
            TabPage c = (TabPage)p.Parent;
            Form f = c.FindForm();
            f.WindowState = FormWindowState.Maximized;
            TabControl tc = new TabControl();
            p.Controls.Add(tc);
            tc.Dock = DockStyle.Fill;

            /* Create a list of URLTabs */

            this.propertyString = "URLTabPlugin+" + c.Text.Replace(" ", "_");

            string result = objHost.GetSQL("SELECT Value FROM properties where Name LIKE '%" + this.propertyString + "%'");

            var UTP = Activator.CreateInstance<List<URLTabPlugin>>();

            if (result != "-9999")
            {

                using (var memoryStream = new MemoryStream(Encoding.Unicode.GetBytes(result)))
                {
                    var serializer = new DataContractJsonSerializer(UTP.GetType());
                    UTP = (List<URLTabPlugin>)serializer.ReadObject(memoryStream);
                }

                foreach (URLTabPlugin utp in UTP)
                {
                    if (utp.TabType == tt)
                    {

                        TabPage tp = new TabPage(utp.TabLabel);
                        tc.Controls.Add(tp);
                        tp.Dock = DockStyle.Fill;
                        tp.BringToFront();
                        WebBrowser wb = new WebBrowser();
                        wb.AllowNavigation = true;
                        wb.AllowWebBrowserDrop = false;
                        wb.ScriptErrorsSuppressed = true;
                        wb.ScrollBarsEnabled = true;
                        wb.IsWebBrowserContextMenuEnabled = true;
                        tp.Controls.Add(wb);
                        wb.Dock = DockStyle.Fill;
                        wb.BringToFront();
                        wb.Navigate(utp.TabUrl);
                        wb.Refresh();
                    }
                }
            }
            /* Build the config tab */
            TabPage tconfig = new TabPage("Config");
            tc.Controls.Add(tconfig);
            tconfig.Dock = DockStyle.Fill;

            /* Dynamic flow layout to hold the buttons */
            FlowLayoutPanel buttonFlowLayoutPanel = new FlowLayoutPanel();
            buttonFlowLayoutPanel.BringToFront();
            buttonFlowLayoutPanel.FlowDirection = FlowDirection.LeftToRight;
            buttonFlowLayoutPanel.Location = new System.Drawing.Point(8, 10);
            buttonFlowLayoutPanel.Size = new System.Drawing.Size(510, 32);
            tconfig.Controls.Add(buttonFlowLayoutPanel);
            Button btnSaveConfig = new Button();
            btnSaveConfig.Text = "Save Config";
            btnSaveConfig.Click += new EventHandler(btnSaveConfig_Click);
            Button btnAddTab = new Button();
            btnAddTab.Text = "Add Tab";
            btnAddTab.Click += new EventHandler(btnAddTab_Click);
            buttonFlowLayoutPanel.Controls.Add(btnSaveConfig);
            buttonFlowLayoutPanel.Controls.Add(btnAddTab);

            /* Dynamic Flow Layout to hold taburlconfigs */
            dynamicFlowLayoutPanel = new FlowLayoutPanel();
            dynamicFlowLayoutPanel.BringToFront();
            dynamicFlowLayoutPanel.FlowDirection = FlowDirection.TopDown;
            dynamicFlowLayoutPanel.Location = new System.Drawing.Point(0, 40);
            dynamicFlowLayoutPanel.Size = new System.Drawing.Size(510,600);
            dynamicFlowLayoutPanel.AutoScroll = true;
            dynamicFlowLayoutPanel.WrapContents = false;
            tconfig.Controls.Add(dynamicFlowLayoutPanel);

            string results = objHost.GetSQL("SELECT Value FROM properties where Name LIKE '%" + propertyString + "%'");
            if (results != "-9999")
            {
                List<string> TabsCompleted = new List<string>();

                /* Rewrite, this doesn't make sense. Deserialize it instead and loop through those results. */
                foreach (URLTabPlugin utp in UTP)
                {
                    URLTabPluginConfigTab utpct;

                    // If the tab isn't in the list yet, create it
                    if (TabsCompleted.IndexOf(utp.TabLabel) < 0)
                    {
                        TabsCompleted.Add(utp.TabLabel);
                        utpct = new URLTabPluginConfigTab();
                        utpct.tabLabel = utp.TabLabel;
                        utpct.tabClientUrl = utp.TabUrl;
                        utpct.tabClientCheck = CheckState.Checked;
                        dynamicFlowLayoutPanel.Controls.Add(utpct);

                    }
                    // if it is, find it.
                    else {
                        Control[] utpcts = dynamicFlowLayoutPanel.Controls.Find("txtTabLabel",true);

                        foreach(Control utpctss in utpcts)
                        {
                            if (utpctss.Text == utp.TabLabel)
                            {
                                /* ..And check and fill in the right datafields based on the Tab type */
                                if (utp.TabType == URLTabPlugin.TabTypes.Client)
                                {
                                    utpctss.Parent.Controls.Find("txtClientUrl", true)[0].Text = utp.TabUrl;
                                    CheckBox ck = (CheckBox)utpctss.Parent.Controls.Find("chkClient", true)[0];
                                    ck.CheckState = CheckState.Checked;
                                }
                                else if(utp.TabType == URLTabPlugin.TabTypes.Location)
                                {

                                    utpctss.Parent.Controls.Find("txtLocationUrl", true)[0].Text = utp.TabUrl;
                                    CheckBox ck = (CheckBox)utpctss.Parent.Controls.Find("chkLocation", true)[0];
                                    ck.CheckState = CheckState.Checked;
                                }
                                else if (utp.TabType == URLTabPlugin.TabTypes.Computer)
                                {
                                    utpctss.Parent.Controls.Find("txtComputerUrl", true)[0].Text = utp.TabUrl;
                                    CheckBox ck = (CheckBox)utpctss.Parent.Controls.Find("chkComputer", true)[0];
                                    ck.CheckState = CheckState.Checked;
                                }

                            }
                        }
                    }
                    /*
                    if (utp.TabType == URLTabPlugin.TabTypes.Client)
                    {
                        utpct.tabClientUrl = utp.TabUrl;

                    }*/

                }
            }
        }
    }