Beispiel #1
0
        public void Run()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            ToolStripManager.Renderer = new VS2012ToolStripRenderer();

            using (var serviceContainer = new NiServiceContainer())
            using (_mainForm = new MainForm())
            {
                bool experimental = false;

                foreach (string arg in _args)
                {
                    if (String.Equals(arg, "/experimental", StringComparison.OrdinalIgnoreCase))
                    {
                        experimental = true;
                        break;
                    }
                }

                var env = new NiEnv(serviceContainer, _mainForm, experimental);

                serviceContainer.AddService(typeof(INiEnv), env);

                // Show the splash form.

                string pathToSplashImage = FindPathToSplashImage(serviceContainer);

                if (pathToSplashImage != null)
                {
                    var splashForm = SplashForm.ShowSplashForm(pathToSplashImage);

                    _mainForm.Shown += (s, e) =>
                    {
                        _mainForm.Activate();
                        splashForm.Dispose();
                    };
                }

                // Continue initialization.

                serviceContainer.AddService(typeof(INiCommandLine), new NiCommandLine(serviceContainer, _args));
                serviceContainer.AddService(typeof(INiLogger), new NiLogger(serviceContainer));

                LoggingRedirection.Install(serviceContainer);
                Log.Info("Starting NetIDE");

                serviceContainer.AddService(typeof(INiLocalRegistry), new NiLocalRegistry(serviceContainer));
                serviceContainer.AddService(typeof(INiEditorFactoryRegistry), new NiEditorFactoryRegistry(serviceContainer));
                serviceContainer.AddService(typeof(INiCommandManager), new NiCommandManager(serviceContainer));
                serviceContainer.AddService(typeof(INiWindowPaneSelection), new NiWindowPaneSelection(serviceContainer));
                serviceContainer.AddService(typeof(INiShell), new NiShell(serviceContainer));
                serviceContainer.AddService(typeof(INiMenuManager), new NiMenuManager(serviceContainer));
                serviceContainer.AddService(typeof(INiJobManager), new NiJobManager(serviceContainer));
                serviceContainer.AddService(typeof(INiToolsOptions), new NiToolsOptions(serviceContainer));
                serviceContainer.AddService(typeof(INiProjectManager), new NiProjectManager(serviceContainer));
                serviceContainer.AddService(typeof(INiOpenDocumentManager), new NiOpenDocumentManager(serviceContainer));
                serviceContainer.AddService(typeof(INiRunningDocumentTable), new NiRunningDocumentTable(serviceContainer));
                serviceContainer.AddService(typeof(INiWaitDialogFactory), new NiWaitDialogFactory(serviceContainer));

                var packageManager = new NiPackageManager(serviceContainer);
                serviceContainer.AddService(typeof(INiPackageManager), packageManager);

                // Initialize the required services.

                _mainForm.Site = new SiteProxy(serviceContainer);

                packageManager.Initialize();

                // Run the main form.

                Handle = _mainForm.Handle;

                OnHandleAvailable(EventArgs.Empty);

                // Queue startup completion.

                _mainForm.Shown += (s, e) =>
                {
                    // Flush pending (paint) messages so the main window gets fully
                    // rendered.
                    Application.DoEvents();

                    // Complete startup; executes the INiEnvNotify.OnStartupComplete
                    // callback.
                    env.CompleteStartup();
                };

                Application.Run(_mainForm);
            }
        }
Beispiel #2
0
        public void Run()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            ToolStripManager.Renderer = new VS2012ToolStripRenderer();

            using (var serviceContainer = new NiServiceContainer())
                using (_mainForm = new MainForm())
                {
                    bool experimental = false;

                    foreach (string arg in _args)
                    {
                        if (String.Equals(arg, "/experimental", StringComparison.OrdinalIgnoreCase))
                        {
                            experimental = true;
                            break;
                        }
                    }

                    var env = new NiEnv(serviceContainer, _mainForm, experimental);

                    serviceContainer.AddService(typeof(INiEnv), env);

                    // Show the splash form.

                    string pathToSplashImage = FindPathToSplashImage(serviceContainer);

                    if (pathToSplashImage != null)
                    {
                        var splashForm = SplashForm.ShowSplashForm(pathToSplashImage);

                        _mainForm.Shown += (s, e) =>
                        {
                            _mainForm.Activate();
                            splashForm.Dispose();
                        };
                    }

                    // Continue initialization.

                    serviceContainer.AddService(typeof(INiCommandLine), new NiCommandLine(serviceContainer, _args));
                    serviceContainer.AddService(typeof(INiLogger), new NiLogger(serviceContainer));

                    LoggingRedirection.Install(serviceContainer);
                    Log.Info("Starting NetIDE");

                    serviceContainer.AddService(typeof(INiLocalRegistry), new NiLocalRegistry(serviceContainer));
                    serviceContainer.AddService(typeof(INiEditorFactoryRegistry), new NiEditorFactoryRegistry(serviceContainer));
                    serviceContainer.AddService(typeof(INiCommandManager), new NiCommandManager(serviceContainer));
                    serviceContainer.AddService(typeof(INiWindowPaneSelection), new NiWindowPaneSelection(serviceContainer));
                    serviceContainer.AddService(typeof(INiShell), new NiShell(serviceContainer));
                    serviceContainer.AddService(typeof(INiMenuManager), new NiMenuManager(serviceContainer));
                    serviceContainer.AddService(typeof(INiJobManager), new NiJobManager(serviceContainer));
                    serviceContainer.AddService(typeof(INiToolsOptions), new NiToolsOptions(serviceContainer));
                    serviceContainer.AddService(typeof(INiProjectManager), new NiProjectManager(serviceContainer));
                    serviceContainer.AddService(typeof(INiOpenDocumentManager), new NiOpenDocumentManager(serviceContainer));
                    serviceContainer.AddService(typeof(INiRunningDocumentTable), new NiRunningDocumentTable(serviceContainer));
                    serviceContainer.AddService(typeof(INiWaitDialogFactory), new NiWaitDialogFactory(serviceContainer));

                    var packageManager = new NiPackageManager(serviceContainer);
                    serviceContainer.AddService(typeof(INiPackageManager), packageManager);

                    // Initialize the required services.

                    _mainForm.Site = new SiteProxy(serviceContainer);

                    packageManager.Initialize();

                    // Run the main form.

                    Handle = _mainForm.Handle;

                    OnHandleAvailable(EventArgs.Empty);

                    // Queue startup completion.

                    _mainForm.Shown += (s, e) =>
                    {
                        // Flush pending (paint) messages so the main window gets fully
                        // rendered.
                        Application.DoEvents();

                        // Complete startup; executes the INiEnvNotify.OnStartupComplete
                        // callback.
                        env.CompleteStartup();
                    };

                    Application.Run(_mainForm);
                }
        }
Beispiel #3
0
        public HResult BroadcastPreMessageFilter(ref NiMessage message)
        {
            try
            {
                if (_preMessageFilterRecursion > 0)
                    return HResult.False;

                _preMessageFilterRecursion++;

                try
                {
                    // We delay resolve the package manager because it is created
                    // after NiShell is.

                    if (_packageManager == null)
                        _packageManager = (NiPackageManager)GetService(typeof(INiPackageManager));

                    if (MessageFilterUtil.InvokeMessageFilter(ref message))
                        return HResult.OK;

                    foreach (var package in _packageManager.Packages)
                    {
                        var preMessageFilter = package.Package as INiPreMessageFilter;
                        if (
                            preMessageFilter != null &&
                            ErrorUtil.ThrowOnFailure(preMessageFilter.PreFilterMessage(ref message))
                        )
                            return HResult.OK;
                    }

                    return HResult.False;
                }
                finally
                {
                    _preMessageFilterRecursion--;
                }
            }
            catch (Exception ex)
            {
                return ErrorUtil.GetHResult(ex);
            }
        }