Example #1
0
        /// <summary>
        /// Hook all event handlers that are used for editor interaction.
        /// </summary>
        private void hookHandlers()
        {
            _guiManager.CompositionPointSelected += requireRedraw;

            //hook transaction handlers
            Transactions.TransactionOpened          += (t) => { _vs.Log.Message(">> {0}", t.Description); tryShowProgress(t); };
            Transactions.TransactionCommit          += (t) => _vs.Log.Message("<< {0}", t.Description);
            Transactions.TransactionProgressChanged += (t) => tryShowProgress(t);

            _loader.AppDomain.OnLog += logHandler;

            //hook changes handlers
            _vs.FlushingChangesProgress += (fileName) => _changesTransaction.ReportProgress(fileName);
            _vs.AfterFlushingChanges    += () => _changesTransaction.Commit();
            _vs.BeforeFlushingChanges   += (description) =>
            {
                if (description == null)
                {
                    description = "changes";
                }

                _changesTransaction = _loader.AppDomain.Transactions.StartNew("Registering " + description);
            };

            //hook solution handling
            _vs.SolutionOpened         += _vs_SolutionOpened;
            _vs.SolutionOpeningStarted += _vs_SolutionOpeningStarted;
            _vs.SolutionClosed         += _vs_SolutionClosed;

            //hook project handling
            _vs.ProjectAdded         += _vs_ProjectAdded;
            _vs.ProjectAddingStarted += _vs_ProjectAddingStarted;
            _vs.ProjectRemoved       += _vs_ProjectRemoved;

            //hook type system
            _loader.AppDomain.MethodInvalidated            += methodInvalidated;
            _loader.AppDomain.CompositionSchemeInvalidated += requireRedraw;
            _loader.AppDomain.ComponentAdded   += (c) => requireRedraw();
            _loader.AppDomain.ComponentRemoved += (c) => requireRedraw();

            _vs.StartListening();
        }