private void newScreenViewToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (myScreen == null)
     {
         myScreen = new SpectrumScreen("Screen", "Screen");
         myScreen.Show(dockPanel, DockState.Float);
     }
 }
        public MainForm()
        {
            myLogs  = new List <LogView>();
            myDocks = new List <BaseDock>();
            InitializeComponent();

            this.IsMdiContainer = true;
            this.dockPanel      = new WeifenLuo.WinFormsUI.Docking.DockPanel();
            this.dockPanel.Dock = System.Windows.Forms.DockStyle.Fill;
            this.Controls.Add(this.dockPanel);

            UpdateStatus();

            if (File.Exists("layout.xml"))
            {
                dockPanel.LoadFromXml("layout.xml", DelegateHandler);
            }
            else
            {
                myButtonBar = new ButtonBar("Control");
                myLogs.Add(new LogView("Log", "Log"));
                myNewRegisters = new Registers("Registers", "Registers");
                myDisassembly  = new Disassembly("Disassembly", "Disassembly");
                myScreen       = new SpectrumScreen("Screen", "Screen");
                myBreakpoints  = new Breakpoint("Breakpoints", "Breakpoints");
                myDocks.Add(new SpriteView("Sprite Patterns", "SpritePatterns"));

                myButtonBar.Show(this.dockPanel, DockState.DockTop);
                myNewRegisters.Show(this.dockPanel, DockState.DockLeft);
                myDisassembly.Show(this.dockPanel, DockState.DockRight);
                myLogs[0].Show(this.dockPanel, DockState.DockBottom);
                myBreakpoints.Show(this.dockPanel, DockState.DockLeft);
                myScreen.Show(this.dockPanel, DockState.DockRight);
                myDocks[0].Show(this.dockPanel, DockState.Float);
            }

            Program.telnetConnection.SendCommand("help", null);
            refreshScreen = false;

            Invalidate();
        }
        public IDockContent DelegateHandler(string name)
        {
            string[] split = name.Split(':');
            switch (split[0])
            {
            case "Control":
                if (myButtonBar == null)
                {
                    myButtonBar = new ButtonBar("Control");
                }
                return(myButtonBar);

            case "Log":
            {
                foreach (LogView lv in myLogs)
                {
                    if (lv.viewName == name)
                    {
                        return(lv);
                    }
                }
                LogView t = new LogView("Log", "Log");
                myLogs.Add(t);
                return(t);
            }

            case "Registers":
                if (myNewRegisters == null)
                {
                    myNewRegisters = new Registers("Registers", "Registers");
                }
                return(myNewRegisters);

            case "Disassembly":
                if (myDisassembly == null)
                {
                    myDisassembly = new Disassembly("Disassembly", "Disassembly");
                }
                return(myDisassembly);

            case "Screen":
                if (myScreen == null)
                {
                    myScreen = new SpectrumScreen("Screen", "Screen");
                }
                return(myScreen);

            case "Breakpoints":
                if (myBreakpoints == null)
                {
                    myBreakpoints = new Breakpoint("Breakpoints", "Breakpoints");
                }
                return(myBreakpoints);

            case "SpritePatterns":
            {
                foreach (BaseDock sv in myDocks)
                {
                    if (sv.viewName == name)
                    {
                        return(sv);
                    }
                }
                SpriteView t = new SpriteView("Sprite Patterns", "SpritePatterns");
                myDocks.Add(t);
                return(t);
            }

            default:
                break;
            }
            return(null);
        }