Пример #1
0
        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);
        }
Пример #2
0
        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;
            }
        }
Пример #4
0
        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();
        }
Пример #5
0
        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;
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        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);
            }
        }