//[Ignore]
        public void NoCrashIfSaveEmptyPanel()
        {
            _setupforlayoutests();

            //FakeLayoutDatabase layout = new FakeLayoutDatabase ("testguid");
            LayoutPanel layoutPanel = new LayoutPanel(CoreUtilities.Constants.BLANK, false);

            layoutPanel.NewLayout("testguid", true, null);
            NoteDataXML_Panel note = new NoteDataXML_Panel();

            layoutPanel.AddNote(note);
            note.CreateParent(layoutPanel);
            layoutPanel.SaveLayout();

            _w.output("This often fails if we have added a new Layout Variable and it has not been set to a default value in constructor");
        }
        public void CountPanelsSubType()
        {
            System.Windows.Forms .Form form = new System.Windows.Forms.Form();
            _TestSingleTon.Instance._SetupForLayoutPanelTests();

            //FAKE_LayoutPanel panel = new FAKE_LayoutPanel(CoreUtilities.Constants.BLANK, false);
            Assert.False (MasterOfLayouts.ExistsByGUID("testlayout"));

            _w.output("here");
            //-- do unit tests counting store 6 textboxes and know this (countbytype)
            //_setupforlayoutests ();

            _w.output("here");
            int count = 25;

            //	FakeLayoutDatabase layout = new FakeLayoutDatabase ("testguid");
            FAKE_LayoutPanel layoutPanel = new FAKE_LayoutPanel (CoreUtilities.Constants.BLANK, false);
            layoutPanel.NewLayout("testlayout", false, null);
            form.Controls.Add (layoutPanel);
            form.Show ();

            NoteDataXML note = new NoteDataXML ();
            for (int i = 0; i < count; i++) {

                note.Caption = "boo" + i.ToString ();
                layoutPanel.AddNote (note);
                note.CreateParent(layoutPanel);
            }
            _w.output (String.Format ("{0} Notes in Layout before save", layoutPanel.GetAllNotes ().Count.ToString ()));

            for (int i = 0; i < 6; i++) {
                note = new NoteDataXML_Panel ();

                note.Caption = "Panel";
                layoutPanel.AddNote (note);
                note.CreateParent(layoutPanel);
                ((NoteDataXML_Panel)note).Add10TestNotes();
            }

            layoutPanel.SaveLayout();
            layoutPanel = new FAKE_LayoutPanel (CoreUtilities.Constants.BLANK, false);
            //_w.output(String.Format ("{0} Objects Saved", layoutPanel.ObjectsSaved().ToString()));
            layoutPanel.LoadLayout("testlayout",false, null);

            //			layout = new FakeLayoutDatabase ("testguid");
            //
            //			layout.LoadFrom(layoutPanel);

            // now count RichText notes
            int count2 = 0;
            int subnotecount = 0;
            foreach (NoteDataInterface _note in layoutPanel.GetAllNotes ())
            {
                if (_note.GetType() == typeof(NoteDataXML_Panel))
                {
                    count2++;
                    subnotecount = subnotecount + ((NoteDataXML_Panel)_note).GetChildNotes().Count;
                }

            }

            // total note count should be (once I get GetNotes working on Child Notes = 60 + 6 + 25 = 91

            _w.output(String.Format ("{0} Objects Loaded", layoutPanel.GetAllNotes().Count));
            //NOT DONE YET
            Assert.AreEqual (6, count2);
            Assert.AreEqual (60, subnotecount);
            Assert.AreEqual (count2, layoutPanel.GetAvailableFolders().Count);

            // had to change because a linktable makes 91 become 92
            Assert.AreEqual (92, layoutPanel.GetAllNotes().Count);
        }
        public void NoCrashIfSaveEmptyPanel()
        {
            _setupforlayoutests ();

            //FakeLayoutDatabase layout = new FakeLayoutDatabase ("testguid");
            LayoutPanel layoutPanel = new LayoutPanel (CoreUtilities.Constants.BLANK, false);
            layoutPanel.NewLayout("testguid", true, null);
            NoteDataXML_Panel note = new NoteDataXML_Panel ();
            layoutPanel.AddNote (note);
            note.CreateParent(layoutPanel);
            layoutPanel.SaveLayout();

            _w.output("This often fails if we have added a new Layout Variable and it has not been set to a default value in constructor");
        }
        public static void CreateASystemLayout(Control parent, ContextMenuStrip textEditorContextStrip)
        {
            LayoutPanel SystemLayout = new Layout.LayoutPanel(CoreUtilities.Constants.BLANK, true);

            SystemLayout.NewLayout("system", false, textEditorContextStrip);
            SystemLayout.BackColor = System.Drawing.Color.Wheat;
            SystemLayout.SetName(Loc.Instance.GetString("system"));
            SystemLayout.Parent  = parent;
            SystemLayout.Visible = true;



            NoteDataXML_Panel sidedockpanel = new NoteDataXML_Panel(800, 300);

            sidedockpanel.GuidForNote = LayoutDetails.SIDEDOCK;             //"system_sidedock";
            SystemLayout.AddNote(sidedockpanel);
            sidedockpanel.CreateParent(SystemLayout);



            sidedockpanel.BringToFrontAndShow();
            sidedockpanel.Dock = DockStyle.Left;

            //
            //------Subpanel
            //
            NoteDataXML_Panel subpanel = new NoteDataXML_Panel(100, 100);

            //subpanel.Save();
            //sidedockpanel.Save();
            //* important

            subpanel.GuidForNote = LayoutDetails.TABLEGUID;
            subpanel.Caption     = Loc.Instance.GetString("Tables");


            sidedockpanel.AddNote(subpanel);
            subpanel.CreateParent(sidedockpanel.GetPanelsLayout());



            NoteDataXML_Table randomTables = new NoteDataXML_Table(100, 100, new ColumnDetails[2] {
                new ColumnDetails("id", 100), new ColumnDetails("tables", 100)
            });

            randomTables.Caption = LayoutDetails.SYSTEM_RANDOM_TABLES;
            //	randomTables.Columns = new appframe.ColumnDetails[2]{new appframe.ColumnDetails("id",100), new appframe.ColumnDetails("tables",100)};



            subpanel.AddNote(randomTables);
            randomTables.CreateParent(subpanel.GetPanelsLayout());


            randomTables.AddRow(new object[2] {
                "1", "example|colors"
            });
            randomTables.AddRow(new object[2] {
                "2", "example|colorPROMPTS"
            });
            SystemLayout.SaveLayout();

            randomTables = new NoteDataXML_Table(100, 100, new ColumnDetails[3] {
                new ColumnDetails("id", 100),
                new ColumnDetails("notebooks", 100),
                new ColumnDetails("sections", 200)
            });
            randomTables.Caption = LayoutDetails.SYSTEM_NOTEBOOKS;
//			randomTables.Columns = new appframe.ColumnDetails[3]{new appframe.ColumnDetails("id",100),
//				new appframe.ColumnDetails("notebooks",100),
//				new appframe.ColumnDetails("sections",200)};


            subpanel.AddNote(randomTables);
            randomTables.CreateParent(subpanel.GetPanelsLayout());

            randomTables.AddRow(new object[3] {
                "1", Loc.Instance.GetString("Writing"), Loc.Instance.GetString("All|Advice|Characters|Markets|Projects|Scenes")
            });
            randomTables.AddRow(new object[3] {
                "2", Loc.Instance.GetString("Research"), Loc.Instance.GetString("All|Historical|Science")
            });
            randomTables.AddRow(new object[3] {
                "3", Loc.Instance.GetString("All"), Loc.Instance.GetString("All")
            });



            ///
            /// -- STATUS
            ///
            randomTables = new NoteDataXML_Table(100, 100, new ColumnDetails[2] {
                new ColumnDetails("id", 100),
                new ColumnDetails("status", 100)
            });
            randomTables.Caption = LayoutDetails.SYSTEM_STATUS;
            //	randomTables.Columns = new appframe.ColumnDetails[2]{new appframe.ColumnDetails("id",100),
            //		new appframe.ColumnDetails("status",100)};

            subpanel.AddNote(randomTables);
            randomTables.CreateParent(subpanel.GetPanelsLayout());

            randomTables.AddRow(new object[2] {
                "1", Loc.Instance.GetString("0 Not Started")
            });
            randomTables.AddRow(new object[2] {
                "2", Loc.Instance.GetString("1 Planning")
            });
            randomTables.AddRow(new object[2] {
                "3", Loc.Instance.GetString("2 Writing")
            });
            randomTables.AddRow(new object[2] {
                "4", Loc.Instance.GetString("3 Rewriting")
            });
            randomTables.AddRow(new object[2] {
                "5", Loc.Instance.GetString("4 Complete")
            });
            randomTables.AddRow(new object[2] {
                "6", Loc.Instance.GetString("5 Accepted")
            });
            randomTables.AddRow(new object[2] {
                "7", Loc.Instance.GetString("6 Published")
            });
            randomTables.AddRow(new object[2] {
                "8", Loc.Instance.GetString("7 Republished on personal site")
            });
            randomTables.AddRow(new object[2] {
                "9", Loc.Instance.GetString("8 Selfpublished")
            });
            //	NewMessage.Show (randomTables.RowCount().ToString ());
            randomTables.AddRow(new object[2] {
                "10", Loc.Instance.GetString("9 Retired")
            });

            //	NewMessage.Show (randomTables.RowCount().ToString ());


            ///
            /// -- SUBTYPES
            ///
            ///
            ///
            randomTables = new NoteDataXML_Table(100, 100, new ColumnDetails[2] {
                new ColumnDetails("id", 100),
                new ColumnDetails("subtype", 100)
            });
            randomTables.Caption = LayoutDetails.SYSTEM_SUBTYPE;
            //		randomTables.Columns = new appframe.ColumnDetails[2]{new appframe.ColumnDetails("id",100),
            //		new appframe.ColumnDetails("subtype",100)};
            subpanel.AddNote(randomTables);
            randomTables.CreateParent(subpanel.GetPanelsLayout());

            randomTables.AddRow(new object[2] {
                "1", Loc.Instance.GetString("Article")
            });
            randomTables.AddRow(new object[2] {
                "2", Loc.Instance.GetString("Idea")
            });
            randomTables.AddRow(new object[2] {
                "3", Loc.Instance.GetString("Novel")
            });
            randomTables.AddRow(new object[2] {
                "4", Loc.Instance.GetString("Play")
            });
            randomTables.AddRow(new object[2] {
                "5", Loc.Instance.GetString("Story")
            });

            ///
            /// -- KEYWORDS
            ///
            ///
            ///
            randomTables = new NoteDataXML_Table(100, 100, new ColumnDetails[2] {
                new ColumnDetails("id", 100),
                new ColumnDetails("keyword", 100)
            });
            randomTables.Caption = LayoutDetails.SYSTEM_KEYWORDS;
            //	randomTables.Columns = new appframe.ColumnDetails[2]{new appframe.ColumnDetails("id",100),
            //		new appframe.ColumnDetails("keyword",100)};
            subpanel.AddNote(randomTables);
            randomTables.CreateParent(subpanel.GetPanelsLayout());

            randomTables.AddRow(new object[2] {
                "1", Loc.Instance.GetString("Brainstorm")
            });
            randomTables.AddRow(new object[2] {
                "2", Loc.Instance.GetString("Horror")
            });
            randomTables.AddRow(new object[2] {
                "3", Loc.Instance.GetString("Fantasy")
            });
            randomTables.AddRow(new object[2] {
                "4", Loc.Instance.GetString("SciFi")
            });
            randomTables.AddRow(new object[2] {
                "5", Loc.Instance.GetString("WhatIf?")
            });



            ///
            /// -- WORKLOG
            ///
            ///
            ///
//			randomTables = new NoteDataXML_Table(100, 100, new ColumnDetails[2]{new ColumnDetails("id",100),
//				new ColumnDetails("category",100)});
//			randomTables.Caption = LayoutDetails.SYSTEM_WORKLOGCATEGORY;
//		//	randomTables.Columns = new appframe.ColumnDetails[2]{new appframe.ColumnDetails("id",100),
//		//		new appframe.ColumnDetails("category",100)};
//			subpanel.AddNote(randomTables);
//			randomTables.CreateParent(subpanel.GetPanelsLayout ());
//
//			randomTables.AddRow(new object[2]{"1", Loc.Instance.GetString("Writing")});
//			randomTables.AddRow(new object[2]{"2", Loc.Instance.GetString("Editing")});
//			randomTables.AddRow(new object[2]{"3", Loc.Instance.GetString("Planning")});


            ///
            /// -- Grammar
            ///
            ///
            ///
//			randomTables = new NoteDataXML_Table(100, 100 , new ColumnDetails[4]{new ColumnDetails("id",100),
//				new ColumnDetails("pattern",100), new ColumnDetails("advice",100), new ColumnDetails("overused",100)});
//			randomTables.Caption = LayoutDetails.SYSTEM_GRAMMAR;
//		//	randomTables.Columns = new appframe.ColumnDetails[4]{new appframe.ColumnDetails("id",100),
//		//		new appframe.ColumnDetails("pattern",100), new appframe.ColumnDetails("advice",100), new appframe.ColumnDetails("overused",100)};
//			subpanel.AddNote(randomTables);
//			randomTables.CreateParent(subpanel.GetPanelsLayout ());
//
//			randomTables.AddRow(new object[4]{
//				"1", "1.0", @"The first row of this table is a version number. Feel free to edit it when major changes are made to this list. On each Layout you can record the last grammar version you have checked it against.", "0"}
//			);
//
//			randomTables.AddRow(new object[4]{
//				"2", "Among", @"When more than two things or persons are involved, among is usually called for.", "0"}
//			);
//			randomTables.AddRow(new object[4]{
//				"3", "As to whether", @"Whether is sufficient.", "1"}
//			);


            ///
            /// -- Queries
            ///
            ///
            ///
            randomTables = new NoteDataXML_Table(100, 100, new ColumnDetails[3] {
                new ColumnDetails("id", 100),
                new ColumnDetails("name", 100), new ColumnDetails("query", 100)
            });
            randomTables.GuidForNote = "systemqueries";
            randomTables.Caption     = LayoutDetails.SYSTEM_QUERIES;
            //		randomTables.Columns = new appframe.ColumnDetails[3]{new appframe.ColumnDetails("id",100),
            //			new appframe.ColumnDetails("name",100), new appframe.ColumnDetails("query",100)};
            subpanel.AddNote(randomTables);
            randomTables.CreateParent(subpanel.GetPanelsLayout());


            randomTables.AddRow(new object[3] {
                "1", "All", @""
            }
                                );
            randomTables.AddRow(new object[3] {
                "2", "WritingProjects", @"notebook='Writing' and section='Projects'"
            }
                                );


            //  be created by those AddIns.
            ///
            /// -- SUBMISSION -- most submission stuff needs to be in Submission AddIn but these two (for load reasons) are here. Sorry.
            ///
            ///
            ///
            /// 1. Publish Types (electronic or print)
            ///
            ///
//			randomTables = new NoteDataXML_Table(100, 100, new ColumnDetails[2]{new ColumnDetails("id",100),
//				new ColumnDetails("category",100)});
//			randomTables.Caption = LayoutDetails.SYSTEM_PUBLISHTYPES;
//			//	randomTables.Columns = new appframe.ColumnDetails[2]{new appframe.ColumnDetails("id",100),
//			//		new appframe.ColumnDetails("category",100)};
//			subpanel.AddNote(randomTables);
//			randomTables.CreateParent(subpanel.GetPanelsLayout ());
//
//			randomTables.AddRow(new object[2]{"1", Loc.Instance.GetString("Both")});
//			randomTables.AddRow(new object[2]{"2", Loc.Instance.GetString("Electronic")});
//			randomTables.AddRow(new object[2]{"3", Loc.Instance.GetString("None")});
//			randomTables.AddRow(new object[2]{"4", Loc.Instance.GetString("Print")});

            ///
            /// 2. Market Types (pay category)
            ///
            ///
//			randomTables = new NoteDataXML_Table(100, 100, new ColumnDetails[2]{new ColumnDetails("id",100),
//				new ColumnDetails("category",100)});
//			randomTables.Caption = LayoutDetails.SYSTEM_MARKETTYPES;
//			//	randomTables.Columns = new appframe.ColumnDetails[2]{new appframe.ColumnDetails("id",100),
//			//		new appframe.ColumnDetails("category",100)};
//			subpanel.AddNote(randomTables);
//			randomTables.CreateParent(subpanel.GetPanelsLayout ());
//
//			randomTables.AddRow(new object[2]{"1", Loc.Instance.GetString("Non Paying")});
//			randomTables.AddRow(new object[2]{"2", Loc.Instance.GetString("None")});
//			randomTables.AddRow(new object[2]{"3", Loc.Instance.GetString("Semi-Pro")});
//			randomTables.AddRow(new object[2]{"4", Loc.Instance.GetString("Small Press (Token)")});
//			randomTables.AddRow(new object[2]{"5", Loc.Instance.GetString("Pro Market")});

            SystemLayout.SaveLayout();
            // note list needs to be at the end March 2013 but creatio happens earlier so it is the defautl viewed note
            // so we build it later


            NoteDataXML_NoteList list = new NoteDataXML_NoteList();

            list.GuidForNote = "notelist";
            sidedockpanel.AddNote(list);

            list.CreateParent(sidedockpanel.GetPanelsLayout());
            list.Mode = NoteDataXML_NoteList.Modes.LAYOUTS;


            list.Dock = DockStyle.Fill;


            SystemLayout.SaveLayout();
            list.Refresh();
            SystemLayout.Dispose();
        }
        public static void CreateASystemLayout(Control parent, ContextMenuStrip textEditorContextStrip)
        {
            LayoutPanel SystemLayout = new Layout.LayoutPanel (CoreUtilities.Constants.BLANK, true);
            SystemLayout.NewLayout ("system" ,false, textEditorContextStrip);
            SystemLayout.BackColor = System.Drawing.Color.Wheat;
            SystemLayout.SetName (Loc.Instance.GetString("system"));
            SystemLayout.Parent = parent;
            SystemLayout.Visible = true;

            NoteDataXML_Panel sidedockpanel = new NoteDataXML_Panel(800,300);
            sidedockpanel.GuidForNote = LayoutDetails.SIDEDOCK; //"system_sidedock";
            SystemLayout.AddNote(sidedockpanel);
            sidedockpanel.CreateParent(SystemLayout);

            sidedockpanel.BringToFrontAndShow();
            sidedockpanel.Dock = DockStyle.Left;

            //
            //------Subpanel
            //
            NoteDataXML_Panel subpanel = new NoteDataXML_Panel(100,100);

            //subpanel.Save();
            //sidedockpanel.Save();
            //* important

            subpanel.GuidForNote = LayoutDetails.TABLEGUID;
            subpanel.Caption = Loc.Instance.GetString("Tables");

            sidedockpanel.AddNote(subpanel);
            subpanel.CreateParent(sidedockpanel.GetPanelsLayout());

            NoteDataXML_Table randomTables = new NoteDataXML_Table(100, 100,new ColumnDetails[2]{new ColumnDetails("id",100), new ColumnDetails("tables",100)} );
            randomTables.Caption = LayoutDetails.SYSTEM_RANDOM_TABLES;
            //	randomTables.Columns = new appframe.ColumnDetails[2]{new appframe.ColumnDetails("id",100), new appframe.ColumnDetails("tables",100)};

            subpanel.AddNote(randomTables);
            randomTables.CreateParent(subpanel.GetPanelsLayout());

            randomTables.AddRow(new object[2]{"1", "example|colors"});
            randomTables.AddRow(new object[2]{"2", "example|colorPROMPTS"});
            SystemLayout.SaveLayout ();

            randomTables = new NoteDataXML_Table(100, 100, new ColumnDetails[3]{new ColumnDetails("id",100),
                new ColumnDetails("notebooks",100),
                new ColumnDetails("sections",200)});
            randomTables.Caption = LayoutDetails.SYSTEM_NOTEBOOKS;
            //			randomTables.Columns = new appframe.ColumnDetails[3]{new appframe.ColumnDetails("id",100),
            //				new appframe.ColumnDetails("notebooks",100),
            //				new appframe.ColumnDetails("sections",200)};

            subpanel.AddNote(randomTables);
            randomTables.CreateParent (subpanel.GetPanelsLayout ());

            randomTables.AddRow(new object[3]{"1", Loc.Instance.GetString("Writing"), Loc.Instance.GetString("All|Advice|Characters|Markets|Projects|Scenes")});
            randomTables.AddRow(new object[3]{"2", Loc.Instance.GetString("Research"), Loc.Instance.GetString("All|Historical|Science")});
            randomTables.AddRow(new object[3]{"3", Loc.Instance.GetString("All"), Loc.Instance.GetString("All")});

            ///
            /// -- STATUS
            ///
            randomTables = new NoteDataXML_Table(100, 100, new ColumnDetails[2]{new ColumnDetails("id",100),
                new ColumnDetails("status",100)});
            randomTables.Caption = LayoutDetails.SYSTEM_STATUS;
            //	randomTables.Columns = new appframe.ColumnDetails[2]{new appframe.ColumnDetails("id",100),
            //		new appframe.ColumnDetails("status",100)};

            subpanel.AddNote(randomTables);
            randomTables.CreateParent(subpanel.GetPanelsLayout());

            randomTables.AddRow(new object[2]{"1", Loc.Instance.GetString("0 Not Started")});
            randomTables.AddRow(new object[2]{"2", Loc.Instance.GetString("1 Planning")});
            randomTables.AddRow(new object[2]{"3", Loc.Instance.GetString("2 Writing")});
            randomTables.AddRow(new object[2]{"4", Loc.Instance.GetString("3 Rewriting")});
            randomTables.AddRow(new object[2]{"5", Loc.Instance.GetString("4 Complete")});
            randomTables.AddRow(new object[2]{"6", Loc.Instance.GetString("5 Accepted")});
            randomTables.AddRow(new object[2]{"7", Loc.Instance.GetString("6 Published")});
            randomTables.AddRow(new object[2]{"8", Loc.Instance.GetString("7 Republished on personal site")});
            randomTables.AddRow(new object[2]{"9", Loc.Instance.GetString("8 Selfpublished")});
            //	NewMessage.Show (randomTables.RowCount().ToString ());
            randomTables.AddRow(new object[2]{"10", Loc.Instance.GetString("9 Retired")});

            //	NewMessage.Show (randomTables.RowCount().ToString ());

            ///
            /// -- SUBTYPES
            ///
            ///
            ///
            randomTables = new NoteDataXML_Table(100, 100, new ColumnDetails[2]{new ColumnDetails("id",100),
                new ColumnDetails("subtype",100)});
            randomTables.Caption = LayoutDetails.SYSTEM_SUBTYPE;
            //		randomTables.Columns = new appframe.ColumnDetails[2]{new appframe.ColumnDetails("id",100),
            //		new appframe.ColumnDetails("subtype",100)};
            subpanel.AddNote(randomTables);
            randomTables.CreateParent(subpanel.GetPanelsLayout());

            randomTables.AddRow(new object[2]{"1", Loc.Instance.GetString("Article")});
            randomTables.AddRow(new object[2]{"2", Loc.Instance.GetString("Idea")});
            randomTables.AddRow(new object[2]{"3", Loc.Instance.GetString("Novel")});
            randomTables.AddRow(new object[2]{"4", Loc.Instance.GetString("Play")});
            randomTables.AddRow(new object[2]{"5", Loc.Instance.GetString("Story")});

            ///
            /// -- KEYWORDS
            ///
            ///
            ///
            randomTables = new NoteDataXML_Table(100, 100,  new ColumnDetails[2]{new ColumnDetails("id",100),
                new ColumnDetails("keyword",100)});
            randomTables.Caption = LayoutDetails.SYSTEM_KEYWORDS;
            //	randomTables.Columns = new appframe.ColumnDetails[2]{new appframe.ColumnDetails("id",100),
            //		new appframe.ColumnDetails("keyword",100)};
            subpanel.AddNote(randomTables);
            randomTables.CreateParent(subpanel.GetPanelsLayout ());

            randomTables.AddRow(new object[2]{"1", Loc.Instance.GetString("Brainstorm")});
            randomTables.AddRow(new object[2]{"2", Loc.Instance.GetString("Horror")});
            randomTables.AddRow(new object[2]{"3", Loc.Instance.GetString("Fantasy")});
            randomTables.AddRow(new object[2]{"4", Loc.Instance.GetString("SciFi")});
            randomTables.AddRow(new object[2]{"5", Loc.Instance.GetString("WhatIf?")});

            ///
            /// -- WORKLOG
            ///
            ///
            ///
            //			randomTables = new NoteDataXML_Table(100, 100, new ColumnDetails[2]{new ColumnDetails("id",100),
            //				new ColumnDetails("category",100)});
            //			randomTables.Caption = LayoutDetails.SYSTEM_WORKLOGCATEGORY;
            //		//	randomTables.Columns = new appframe.ColumnDetails[2]{new appframe.ColumnDetails("id",100),
            //		//		new appframe.ColumnDetails("category",100)};
            //			subpanel.AddNote(randomTables);
            //			randomTables.CreateParent(subpanel.GetPanelsLayout ());
            //
            //			randomTables.AddRow(new object[2]{"1", Loc.Instance.GetString("Writing")});
            //			randomTables.AddRow(new object[2]{"2", Loc.Instance.GetString("Editing")});
            //			randomTables.AddRow(new object[2]{"3", Loc.Instance.GetString("Planning")});

            ///
            /// -- Grammar
            ///
            ///
            ///
            //			randomTables = new NoteDataXML_Table(100, 100 , new ColumnDetails[4]{new ColumnDetails("id",100),
            //				new ColumnDetails("pattern",100), new ColumnDetails("advice",100), new ColumnDetails("overused",100)});
            //			randomTables.Caption = LayoutDetails.SYSTEM_GRAMMAR;
            //		//	randomTables.Columns = new appframe.ColumnDetails[4]{new appframe.ColumnDetails("id",100),
            //		//		new appframe.ColumnDetails("pattern",100), new appframe.ColumnDetails("advice",100), new appframe.ColumnDetails("overused",100)};
            //			subpanel.AddNote(randomTables);
            //			randomTables.CreateParent(subpanel.GetPanelsLayout ());
            //
            //			randomTables.AddRow(new object[4]{
            //				"1", "1.0", @"The first row of this table is a version number. Feel free to edit it when major changes are made to this list. On each Layout you can record the last grammar version you have checked it against.", "0"}
            //			);
            //
            //			randomTables.AddRow(new object[4]{
            //				"2", "Among", @"When more than two things or persons are involved, among is usually called for.", "0"}
            //			);
            //			randomTables.AddRow(new object[4]{
            //				"3", "As to whether", @"Whether is sufficient.", "1"}
            //			);

            ///
            /// -- Queries
            ///
            ///
            ///
            randomTables = new NoteDataXML_Table(100, 100, new ColumnDetails[3]{new ColumnDetails("id",100),
                new ColumnDetails("name",100), new ColumnDetails("query",100)});
            randomTables.GuidForNote ="systemqueries";
            randomTables.Caption = LayoutDetails.SYSTEM_QUERIES;
            //		randomTables.Columns = new appframe.ColumnDetails[3]{new appframe.ColumnDetails("id",100),
            //			new appframe.ColumnDetails("name",100), new appframe.ColumnDetails("query",100)};
            subpanel.AddNote(randomTables);
            randomTables.CreateParent(subpanel.GetPanelsLayout ());

            randomTables.AddRow(new object[3]{
                "1", "All", @""}
            );
            randomTables.AddRow(new object[3]{
                "2", "WritingProjects", @"notebook='Writing' and section='Projects'"}
            );

            //  be created by those AddIns.
            ///
            /// -- SUBMISSION -- most submission stuff needs to be in Submission AddIn but these two (for load reasons) are here. Sorry.
            ///
            ///
            ///
            /// 1. Publish Types (electronic or print)
            ///
            ///
            //			randomTables = new NoteDataXML_Table(100, 100, new ColumnDetails[2]{new ColumnDetails("id",100),
            //				new ColumnDetails("category",100)});
            //			randomTables.Caption = LayoutDetails.SYSTEM_PUBLISHTYPES;
            //			//	randomTables.Columns = new appframe.ColumnDetails[2]{new appframe.ColumnDetails("id",100),
            //			//		new appframe.ColumnDetails("category",100)};
            //			subpanel.AddNote(randomTables);
            //			randomTables.CreateParent(subpanel.GetPanelsLayout ());
            //
            //			randomTables.AddRow(new object[2]{"1", Loc.Instance.GetString("Both")});
            //			randomTables.AddRow(new object[2]{"2", Loc.Instance.GetString("Electronic")});
            //			randomTables.AddRow(new object[2]{"3", Loc.Instance.GetString("None")});
            //			randomTables.AddRow(new object[2]{"4", Loc.Instance.GetString("Print")});

            ///
            /// 2. Market Types (pay category)
            ///
            ///
            //			randomTables = new NoteDataXML_Table(100, 100, new ColumnDetails[2]{new ColumnDetails("id",100),
            //				new ColumnDetails("category",100)});
            //			randomTables.Caption = LayoutDetails.SYSTEM_MARKETTYPES;
            //			//	randomTables.Columns = new appframe.ColumnDetails[2]{new appframe.ColumnDetails("id",100),
            //			//		new appframe.ColumnDetails("category",100)};
            //			subpanel.AddNote(randomTables);
            //			randomTables.CreateParent(subpanel.GetPanelsLayout ());
            //
            //			randomTables.AddRow(new object[2]{"1", Loc.Instance.GetString("Non Paying")});
            //			randomTables.AddRow(new object[2]{"2", Loc.Instance.GetString("None")});
            //			randomTables.AddRow(new object[2]{"3", Loc.Instance.GetString("Semi-Pro")});
            //			randomTables.AddRow(new object[2]{"4", Loc.Instance.GetString("Small Press (Token)")});
            //			randomTables.AddRow(new object[2]{"5", Loc.Instance.GetString("Pro Market")});

            SystemLayout.SaveLayout ();
            // note list needs to be at the end March 2013 but creatio happens earlier so it is the defautl viewed note
            // so we build it later

            NoteDataXML_NoteList list = new NoteDataXML_NoteList();
            list.GuidForNote = "notelist";
            sidedockpanel.AddNote(list);

            list.CreateParent(sidedockpanel.GetPanelsLayout());
            list.Mode = NoteDataXML_NoteList.Modes.LAYOUTS;

            list.Dock = DockStyle.Fill;

            SystemLayout.SaveLayout ();
            list.Refresh();
            SystemLayout.Dispose ();
        }
        public void CountPanelsSubType()
        {
            System.Windows.Forms.Form form = new System.Windows.Forms.Form();
            _TestSingleTon.Instance._SetupForLayoutPanelTests();

            //FAKE_LayoutPanel panel = new FAKE_LayoutPanel(CoreUtilities.Constants.BLANK, false);
            Assert.False(MasterOfLayouts.ExistsByGUID("testlayout"));


            _w.output("here");
            //-- do unit tests counting store 6 textboxes and know this (countbytype)
            //_setupforlayoutests ();

            _w.output("here");
            int count = 25;

            //	FakeLayoutDatabase layout = new FakeLayoutDatabase ("testguid");
            FAKE_LayoutPanel layoutPanel = new FAKE_LayoutPanel(CoreUtilities.Constants.BLANK, false);

            layoutPanel.NewLayout("testlayout", false, null);
            form.Controls.Add(layoutPanel);
            form.Show();



            NoteDataXML note = new NoteDataXML();

            for (int i = 0; i < count; i++)
            {
                note.Caption = "boo" + i.ToString();
                layoutPanel.AddNote(note);
                note.CreateParent(layoutPanel);
            }
            _w.output(String.Format("{0} Notes in Layout before save", layoutPanel.GetAllNotes().Count.ToString()));

            for (int i = 0; i < 6; i++)
            {
                note = new NoteDataXML_Panel();


                note.Caption = "Panel";
                layoutPanel.AddNote(note);
                note.CreateParent(layoutPanel);
                ((NoteDataXML_Panel)note).Add10TestNotes();
            }



            layoutPanel.SaveLayout();
            layoutPanel = new FAKE_LayoutPanel(CoreUtilities.Constants.BLANK, false);
            //_w.output(String.Format ("{0} Objects Saved", layoutPanel.ObjectsSaved().ToString()));
            layoutPanel.LoadLayout("testlayout", false, null);

//			layout = new FakeLayoutDatabase ("testguid");
//
//			layout.LoadFrom(layoutPanel);

            // now count RichText notes
            int count2       = 0;
            int subnotecount = 0;

            foreach (NoteDataInterface _note in layoutPanel.GetAllNotes())
            {
                if (_note.GetType() == typeof(NoteDataXML_Panel))
                {
                    count2++;
                    subnotecount = subnotecount + ((NoteDataXML_Panel)_note).GetChildNotes().Count;
                }
            }


            // total note count should be (once I get GetNotes working on Child Notes = 60 + 6 + 25 = 91

            _w.output(String.Format("{0} Objects Loaded", layoutPanel.GetAllNotes().Count));
            //NOT DONE YET
            Assert.AreEqual(6, count2);
            Assert.AreEqual(60, subnotecount);
            Assert.AreEqual(count2, layoutPanel.GetAvailableFolders().Count);

            // had to change because a linktable makes 91 become 92
            Assert.AreEqual(92, layoutPanel.GetAllNotes().Count);
        }