private void RunStartup(object sender) { if (_isStartupInitiated) { return; } _isStartupInitiated = true; //TODO assert this stuff, provide a fall back var senderDependencyObject = sender as DependencyObject; var mainWindow = Window.GetWindow(senderDependencyObject) as MainWindow; var rootTabControl = mainWindow.InitialTabablzControl; LayoutStructure layoutStructure; if (_initialLayoutStructureProvider.TryTake(out layoutStructure)) { RestoreLayout(rootTabControl, layoutStructure); } if (TabablzControl.GetLoadedInstances().SelectMany(tc => tc.Items.OfType <object>()).Any()) { return; } var tabContentLifetimeHost = _featureRegistry.Default.CreateTabContent(); var tabContentContainer = new TabItemContainer(Guid.NewGuid(), _featureRegistry.Default.FeatureId, tabContentLifetimeHost, _featureRegistry.Default); rootTabControl.AddToSource(tabContentContainer); TabablzControl.SelectItem(tabContentContainer); //TODO sort out this nasty cast ((QueryDeveloperViewModel)tabContentContainer.ViewModel).EditConnectionCommand.Execute(rootTabControl); }
public void Reload() { var tabs = TabablzControl.GetLoadedInstances().FirstOrDefault(); var layout = LayoutAnalayzer.GetLayoutStructure(LAST_LAYOUT_NAME); Load(tabs, layout, _configurationService.ActiveConfiguration.Language); }
private static void DepopulateTabControl(ref TabablzControl tabablzControl) { try { ApplicationService.IgnoreShuttingDown = true; var rootWindow = Window.GetWindow(tabablzControl); var windowsToClose = Application.Current.Windows.OfType <ShellView>().Where(w => w != rootWindow); foreach (var window in windowsToClose) { window.Close(); } var newTabHost = IoC.Get <IInterTabClient>().GetNewHost(tabablzControl.InterTabController.InterTabClient, null, tabablzControl); var tabControl = newTabHost.TabablzControl; var newWindow = newTabHost.Container; newWindow.Left = rootWindow.Left; newWindow.Top = rootWindow.Top; newWindow.Width = rootWindow.Width; newWindow.Height = rootWindow.Height; newWindow.Topmost = rootWindow.Topmost; tabablzControl = (newWindow as ShellView).Tabs; newWindow.Show(); rootWindow.Close(); var temp = TabablzControl.GetLoadedInstances(); } finally { ApplicationService.IgnoreShuttingDown = false; } }
internal void GetTabablzData(out string header0, out IEnumerable <TabablzControl> tctrl) { MetroWindow wnd = (MetroWindow)App.Current.MainWindow; TabablzControl tc = (TabablzControl)wnd.FindName("InitialTabablzControl"); TabContent itc0 = (TabContent)tc.SelectedItem; header0 = itc0.Header; tctrl = TabablzControl.GetLoadedInstances(); }
private void Open <TFeatureFactory>() where TFeatureFactory : IFeatureFactory { var featureFactory = _featureRegistry.Get <TFeatureFactory>(); var tabContentLifetimeHost = featureFactory.CreateTabContent(); var tabItemContainer = new TabItemContainer(Guid.NewGuid(), featureFactory.FeatureId, tabContentLifetimeHost, featureFactory); TabablzControl.GetLoadedInstances().First(Layout.GetIsTopLeftItem).AddToSource(tabItemContainer); TabablzControl.SelectItem(tabItemContainer); IsLeftDrawerOpen = false; }
public void LoadAndSavePrevious(LayoutStructure layout) { LayoutStructure layoutStructure = LayoutAnalayzer.GetLayoutStructure(LAST_LAYOUT_NAME); _configurationService.ActiveConfiguration.LastLayout = SerializeStructure(layoutStructure); _configurationService.Save(); var tabs = TabablzControl.GetLoadedInstances().FirstOrDefault(); Load(tabs, layout, _configurationService.ActiveConfiguration.Language); }
public void Handle(ConfigurationSwitched message) { if (!message.SwitchOnDeletion) { LayoutStructure layoutStructure = LayoutAnalayzer.GetLayoutStructure(LAST_LAYOUT_NAME); _configurationService.PreviousConfiguration.LastLayout = SerializeStructure(layoutStructure); _configurationService.Save(); } var activeConfig = _configurationService.ActiveConfiguration; var tabs = TabablzControl.GetLoadedInstances().FirstOrDefault(); Load(tabs, activeConfig.PrimaryColor, activeConfig.AccentColor, activeConfig.DarkMode); }
private static void WindowOnClosed(object sender, EventArgs eventArgs) { var window = (Window)sender; window.Closed -= WindowOnClosed; var redundantTabs = TabablzControl.GetLoadedInstances() .SelectMany( tabControl => tabControl.Items.OfType <TabItemContainer>() .Select(tabItemContainer => new { tabControl, tabViewModel = tabItemContainer })) .Where(a => window.Equals(Window.GetWindow(a.tabControl))) .ToList(); //TODO this is shoddy, but am in a rush right now. What if user kills app from task bar? or OS shut down var remainingWindowCount = Application.Current.Windows.OfType <MainWindow>().Count(); var tabCloseReason = remainingWindowCount == 0 ? TabCloseReason.ApplicationClosed : TabCloseReason.TabClosed; foreach (var redundantTab in redundantTabs) { redundantTab.tabViewModel.TabContentLifetimeHost.Cleanup(tabCloseReason); } }