private CustomTabWindow CreateWindow(PrisonersTabDef def)
        {
            CustomTabWindow window = (CustomTabWindow)Activator.CreateInstance(def.workerClass);

            window.PostOpen();
            return(window);
        }
 private CustomTabWindow GetTable(PrisonersTabDef def)
 {
     if (!tabsView.TryGetValue(def, out CustomTabWindow table))
     {
         table = CreateWindow(def);
         tabsView.Add(def, table);
     }
     return(table);
 }
 public override void PostOpen()
 {
     base.PostOpen();
     tabs.Clear();
     foreach (PrisonersTabDef tabDef in DefDatabase <PrisonersTabDef> .AllDefs.Where(def => !def.dev || def.dev == Prefs.DevMode).OrderBy(def => def.order))
     {
         tabs.Add(new PrisonerWindowTab(tabDef, tabDef.LabelCap, delegate
         {
             CurTab = tabDef;
         }, () => CurTab == tabDef));
         GetTable(tabDef);
     }
     CurTab = tabs[1].def;
     foreach (var tab in tabsView.Values)
     {
         tab.PostOpen();
     }
 }
 public PrisonerWindowTab(PrisonersTabDef def, string label, Action clickedAction, Func <bool> selected)
     : base(label, clickedAction, selected)
 {
     this.def = def;
 }