Beispiel #1
0
        // Move to another method to avoid loading Zetbox.Objects
        private void InitializeClient(string[] args, ZetboxConfig config)
        {
            InitializeSplashScreenImageResource();

            StartupScreen.ShowSplashScreen(Zetbox.Client.Properties.Resources.Startup_Message, Zetbox.Client.Properties.Resources.Startup_InitApp, 6, config);
            if (config.Server != null && config.Server.StartServer)
            {
                StartupScreen.SetInfo(Zetbox.Client.Properties.Resources.Startup_Server);
                serverDomain = new ServerDomainManager();
                serverDomain.Start(config);
            }

            var builder = Zetbox.API.Utils.AutoFacBuilder.CreateContainerBuilder(config, config.Client.Modules);
            ConfigureContainerBuilder(config, builder);
            container = builder.Build();
            container.ApplyPerfCounterTracker();
            container.Resolve<IUIExceptionReporter>().BeginInit();
            API.AppDomainInitializer.InitializeFrom(container);

            StartupScreen.SetInfo(Zetbox.Client.Properties.Resources.Startup_Launcher);

            LoadStyles(this.Resources);

            // Focus nightmare
            // http://stackoverflow.com/questions/673536/wpf-cant-set-focus-to-a-child-of-usercontrol/4785124#4785124
            EventManager.RegisterClassHandler(typeof(Window), Window.LoadedEvent, new RoutedEventHandler(FocusFixLoaded));
            EventManager.RegisterClassHandler(typeof(Zetbox.Client.WPF.View.ZetboxBase.InstanceCollectionBase), UserControl.LoadedEvent, new RoutedEventHandler(FocusFixLoaded));

            // Init credentials explicit
            StartupScreen.SetInfo(Zetbox.Client.Properties.Resources.Startup_EnsuringCredentials);
            var principalResolver = container.Resolve<IPrincipalResolver>();
            var credResolver = container.Resolve<ICredentialsResolver>();
            try
            {
                while (principalResolver.GetCurrent() == null)
                {
                    credResolver.InvalidCredentials();
                }
            }
            catch (AuthenticationException)
            {
                ReportExceptionAndExit(WpfToolkitResources.App_InvalidCredentials_Caption, WpfToolkitResources.App_InvalidCredentials);
            }
            catch (InvalidZetboxGeneratedVersionException)
            {
                ReportExceptionAndExit(WpfToolkitResources.App_InvalidZetboxGeneratedVersion_Caption, WpfToolkitResources.App_InvalidZetboxGeneratedVersion);
            }
            credResolver.Freeze();

            StartupScreen.SetInfo(Zetbox.Client.Properties.Resources.Startup_Launcher);

            container.Resolve<IUIExceptionReporter>().EndInit();

            FixupDatabase(container.Resolve<Func<IZetboxContext>>());

            IServiceControlManager scm = null;
            if (container.TryResolve<IServiceControlManager>(out scm))
            {
                Logging.Log.Info("Starting Zetbox Services");
                scm.Start();
            }
            else
            {
                Logging.Log.Info("Service control manager not registered");
            }

            StartupScreen.CanCloseOnWindowLoaded();
            // delegate all business logic into another class, which
            // allows us to load the Zetbox.Objects assemblies _before_
            // they are needed.
            var launcher = container.Resolve<Launcher>();
            launcher.Show(args);
        }
Beispiel #2
0
        // Move to another method to avoid loading Zetbox.Objects
        private void InitializeClient(string[] args, ZetboxConfig config)
        {
            InitializeSplashScreenImageResource();

            StartupScreen.ShowSplashScreen(Zetbox.Client.Properties.Resources.Startup_Message, Zetbox.Client.Properties.Resources.Startup_InitApp, 6);
            if (config.Server != null && config.Server.StartServer)
            {
                StartupScreen.SetInfo(Zetbox.Client.Properties.Resources.Startup_Server);
                serverDomain = new ServerDomainManager();
                serverDomain.Start(config);
            }
            else
            {
                StartupScreen.SetInfo(Zetbox.Client.Properties.Resources.Startup_NoServerStart);
            }


            container = CreateMasterContainer(config);

            StartupScreen.SetInfo(Zetbox.Client.Properties.Resources.Startup_Launcher);

            // Make Gendarme happy
            var resources = this.Resources;

            resources.BeginInit();
            resources.MergedDictionaries.Add(new ResourceDictionary()
            {
                Source = new Uri("/Zetbox.Client.WPF;component/AppResources.xaml", UriKind.Relative)
            });

            // Create icon converter
            var iconConverter = new IconConverter(container.Resolve <IFrozenContext>(), container.Resolve <Func <IZetboxContext> >());

            resources["IconConverter"]      = iconConverter;
            resources["ImageCtrlConverter"] = new ImageCtrlConverter(iconConverter);

            // Init all Converter that are not using a Context
            var templateSelectorFactory = container.Resolve <Zetbox.Client.WPF.Toolkit.VisualTypeTemplateSelector.Factory>();

            resources["defaultTemplateSelector"]   = templateSelectorFactory(null);
            resources["listItemTemplateSelector"]  = templateSelectorFactory("Zetbox.App.GUI.SingleLineKind");
            resources["dashBoardTemplateSelector"] = templateSelectorFactory("Zetbox.App.GUI.DashboardKind");

            // Manually add DefaultStyles and DefaultViews
            // Otherwise converter are unknown
            resources.MergedDictionaries.Add(new ResourceDictionary()
            {
                Source = new Uri("/Zetbox.Client.WPF;component/Styles/DefaultStyles.xaml", UriKind.Relative)
            });
            resources.MergedDictionaries.Add(new ResourceDictionary()
            {
                Source = new Uri("/Zetbox.Client.WPF;component/Styles/DefaultHighlightColorDefinitions.xaml", UriKind.Relative)
            });

            // Load registrated dictionaries from autofac
            foreach (var dict in container.Resolve <IEnumerable <Meta <ResourceDictionary> > >().Where(m => WPFHelper.RESOURCE_DICTIONARY_STYLE.Equals(m.Metadata[WPFHelper.RESOURCE_DICTIONARY_KIND])).Select(m => m.Value))
            {
                resources.MergedDictionaries.Add(dict);
            }

            resources.MergedDictionaries.Add(new ResourceDictionary()
            {
                Source = new Uri("/Zetbox.Client.WPF;component/Styles/DefaultViews.xaml", UriKind.Relative)
            });
            // Load registrated dictionaries from autofac
            foreach (var dict in container.Resolve <IEnumerable <Meta <ResourceDictionary> > >().Where(m => WPFHelper.RESOURCE_DICTIONARY_VIEW.Equals(m.Metadata[WPFHelper.RESOURCE_DICTIONARY_KIND])).Select(m => m.Value))
            {
                resources.MergedDictionaries.Add(dict);
            }

            resources.EndInit();

            // Init credentials explicit
            StartupScreen.SetInfo(Zetbox.Client.Properties.Resources.Startup_EnsuringCredentials);
            container.Resolve <ICredentialsResolver>().EnsureCredentials();

            StartupScreen.SetInfo(Zetbox.Client.Properties.Resources.Startup_Launcher);

            // Tell icon converter that everything is initialized
            iconConverter.Initialized();

            // Focus nightmare
            // http://stackoverflow.com/questions/673536/wpf-cant-set-focus-to-a-child-of-usercontrol/4785124#4785124
            EventManager.RegisterClassHandler(typeof(Window), Window.LoadedEvent, new RoutedEventHandler(FocusFixLoaded));
            EventManager.RegisterClassHandler(typeof(Zetbox.Client.WPF.View.ZetboxBase.InstanceCollectionBase), UserControl.LoadedEvent, new RoutedEventHandler(FocusFixLoaded));

            wpfResourcesInitialized = true;

            FixupDatabase(container.Resolve <Func <IZetboxContext> >());

            IServiceControlManager scm = null;

            if (container.TryResolve <IServiceControlManager>(out scm))
            {
                Logging.Log.Info("Starting Zetbox Services");
                scm.Start();
            }
            else
            {
                Logging.Log.Info("Service control manager not registered");
            }

            StartupScreen.CanCloseOnWindowLoaded();
            // delegate all business logic into another class, which
            // allows us to load the Zetbox.Objects assemblies _before_
            // they are needed.
            var launcher = container.Resolve <Launcher>();

            launcher.Show(args);
        }
Beispiel #3
0
        // Move to another method to avoid loading Zetbox.Objects
        private void InitializeClient(string[] args, ZetboxConfig config)
        {
            InitializeSplashScreenImageResource();

            StartupScreen.ShowSplashScreen(Zetbox.Client.Properties.Resources.Startup_Message, Zetbox.Client.Properties.Resources.Startup_InitApp, 6);
            if (config.Server != null && config.Server.StartServer)
            {
                StartupScreen.SetInfo(Zetbox.Client.Properties.Resources.Startup_Server);
                serverDomain = new ServerDomainManager();
                serverDomain.Start(config);
            }
            else
            {
                StartupScreen.SetInfo(Zetbox.Client.Properties.Resources.Startup_NoServerStart);
            }

            container = CreateMasterContainer(config);

            StartupScreen.SetInfo(Zetbox.Client.Properties.Resources.Startup_Launcher);

            // Make Gendarme happy
            var resources = this.Resources;

            resources.BeginInit();
            resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("/Zetbox.Client.WPF;component/AppResources.xaml", UriKind.Relative) });

            // Create icon converter
            var iconConverter = new IconConverter(container.Resolve<IFrozenContext>(), container.Resolve<Func<IZetboxContext>>());
            resources["IconConverter"] = iconConverter;
            resources["ImageCtrlConverter"] = new ImageCtrlConverter(iconConverter);

            // Init all Converter that are not using a Context
            var templateSelectorFactory = container.Resolve<Zetbox.Client.WPF.Toolkit.VisualTypeTemplateSelector.Factory>();
            resources["defaultTemplateSelector"] = templateSelectorFactory(null);
            resources["listItemTemplateSelector"] = templateSelectorFactory("Zetbox.App.GUI.SingleLineKind");
            resources["dashBoardTemplateSelector"] = templateSelectorFactory("Zetbox.App.GUI.DashboardKind");

            // Manually add DefaultStyles and DefaultViews
            // Otherwise converter are unknown
            resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("/Zetbox.Client.WPF;component/Styles/DefaultStyles.xaml", UriKind.Relative) });
            resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("/Zetbox.Client.WPF;component/Styles/DefaultHighlightColorDefinitions.xaml", UriKind.Relative) });

            // Load registrated dictionaries from autofac
            foreach (var dict in container.Resolve<IEnumerable<Meta<ResourceDictionary>>>().Where(m => WPFHelper.RESOURCE_DICTIONARY_STYLE.Equals(m.Metadata[WPFHelper.RESOURCE_DICTIONARY_KIND])).Select(m => m.Value))
            {
                resources.MergedDictionaries.Add(dict);
            }

            resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("/Zetbox.Client.WPF;component/Styles/DefaultViews.xaml", UriKind.Relative) });
            // Load registrated dictionaries from autofac
            foreach (var dict in container.Resolve<IEnumerable<Meta<ResourceDictionary>>>().Where(m => WPFHelper.RESOURCE_DICTIONARY_VIEW.Equals(m.Metadata[WPFHelper.RESOURCE_DICTIONARY_KIND])).Select(m => m.Value))
            {
                resources.MergedDictionaries.Add(dict);
            }

            resources.EndInit();

            // Init credentials explicit
            StartupScreen.SetInfo(Zetbox.Client.Properties.Resources.Startup_EnsuringCredentials);
            container.Resolve<ICredentialsResolver>().EnsureCredentials();

            StartupScreen.SetInfo(Zetbox.Client.Properties.Resources.Startup_Launcher);

            // Tell icon converter that everything is initialized
            iconConverter.Initialized();

            // Focus nightmare
            // http://stackoverflow.com/questions/673536/wpf-cant-set-focus-to-a-child-of-usercontrol/4785124#4785124
            EventManager.RegisterClassHandler(typeof(Window), Window.LoadedEvent, new RoutedEventHandler(FocusFixLoaded));
            EventManager.RegisterClassHandler(typeof(Zetbox.Client.WPF.View.ZetboxBase.InstanceCollectionBase), UserControl.LoadedEvent, new RoutedEventHandler(FocusFixLoaded));

            wpfResourcesInitialized = true;

            FixupDatabase(container.Resolve<Func<IZetboxContext>>());

            IServiceControlManager scm = null;
            if (container.TryResolve<IServiceControlManager>(out scm))
            {
                Logging.Log.Info("Starting Zetbox Services");
                scm.Start();
            }
            else
            {
                Logging.Log.Info("Service control manager not registered");
            }

            StartupScreen.CanCloseOnWindowLoaded();
            // delegate all business logic into another class, which
            // allows us to load the Zetbox.Objects assemblies _before_
            // they are needed.
            var launcher = container.Resolve<Launcher>();
            launcher.Show(args);
        }