示例#1
0
        public IDropHandler GetAssociatedDropHandler(IWpfTextView view)
        {
            try
            {
                ITextBufferUndoManager undoManager = this.UndoProvider.GetTextBufferUndoManager(view.TextBuffer);

                var vsa = new VisualStudioAbstraction(Logger, Package, dte);

                var projType = ProjectType.Unknown;

                if (this.TextDocumentFactoryService.TryGetTextDocument(view.TextBuffer, out ITextDocument textDocument))
                {
                    var proj = ProjectHelpers.Dte.Solution.GetProjectContainingFile(textDocument.FilePath);
                    projType = vsa.GetProjectType(proj);

                    Logger?.RecordInfo(StringRes.Info_DetectedProjectType.WithParams(projType.GetDescription()));
                }

                return(view.Properties.GetOrCreateSingletonProperty(() => new RapidXamlDropHandler(Logger, view, undoManager, vsa, projType, solution)));
            }
            catch (Exception exc)
            {
                RxtOutputPane.Instance.Write(RxtLogger.TimeStampMessage(StringRes.Error_UnableToGetDropHandler));
                Logger?.RecordException(exc);
                return(null);
            }
        }
        protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress <ServiceProgressData> progress)
        {
            // When initialized asynchronously, the current thread may be a background thread at this point.
            // Do any initialization that requires the UI thread after switching to the UI thread.
            await this.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken);

            var rxtLogger = new RxtLogger();

            var config = new RxtSettings();

            var telemLogger = TelemetryAccessor.Create(rxtLogger, config.TelemetryKey);

            Logger = new RxtLoggerWithTelemtry(rxtLogger, telemLogger);

            try
            {
                // Set the ServiceProvider of CodeParserBase as it's needed to get settings
                CodeParserBase.ServiceProvider = this;
                Logger.RecordInfo(StringRes.Info_ProblemsInstructionsAndLink);
                Logger.RecordInfo(StringRes.Info_IntializingCommands.WithParams(CoreDetails.GetVersion()));

                await CreateViewCommand.InitializeAsync(this, Logger);

                await CopyToClipboardCommand.InitializeAsync(this, Logger);

                await SendToToolboxCommand.InitializeAsync(this, Logger);

                await OpenOptionsCommand.InitializeAsync(this, Logger);

                await SetDatacontextCommand.InitializeAsync(this, Logger);

                await MoveAllHardCodedStringsToResourceFileCommand.InitializeAsync(this, Logger);

                await RapidXamlDropHandlerProvider.InitializeAsync(this, Logger);

                await this.SetUpRunningDocumentTableEventsAsync(cancellationToken);

                RapidXamlDocumentCache.Initialize(this);
            }
            catch (Exception exc)
            {
                Logger.RecordException(exc);
                throw;  // Remove for launch. see issue #90
            }
        }
        protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress <ServiceProgressData> progress)
        {
            // When initialized asynchronously, the current thread may be a background thread at this point.
            // Do any initialization that requires the UI thread after switching to the UI thread.
            await this.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken);

            var rxtLogger = new RxtLogger();

            var telemKey = string.Empty;

            var telemLogger = TelemetryAccessor.Create(rxtLogger, telemKey);

            Logger = new RxtLoggerWithTelemtry(rxtLogger, telemLogger);

            try
            {
                // Set the ServiceProvider of AnalyzerBase as it's needed to get settings
                AnalyzerBase.ServiceProvider = this;
                Logger.RecordInfo(StringRes.Info_IntializingCommands.WithParams(CoreDetails.GetVersion()));

                await CreateViewCommand.InitializeAsync(this, Logger);

                await CopyToClipboardCommand.InitializeAsync(this, Logger);

                await SendToToolboxCommand.InitializeAsync(this, Logger);

                await OpenOptionsCommand.InitializeAsync(this, Logger);

                await SetDatacontextCommand.InitializeAsync(this, Logger);

                await InsertGridRowDefinitionCommand.InitializeAsync(this, Logger);

                await RapidXamlDropHandlerProvider.InitializeAsync(this, Logger);
            }
            catch (Exception exc)
            {
                Logger.RecordException(exc);
                throw;  // Remove for launch. see issue #90
            }
        }
        public static async Task InitializeAsync(CancellationToken cancellationToken, AsyncPackage package)
        {
            // When initialized asynchronously, the current thread may be a background thread at this point.
            // Do any initialization that requires the UI thread after switching to the UI thread.
            await package.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken);

            try
            {
                if (Logger == null)
                {
                    var rxtLogger = new RxtLogger();

                    var config = new RxtSettings();

                    var telemLogger = TelemetryAccessor.Create(rxtLogger, config.TelemetryKey);

                    Logger = new RxtLoggerWithTelemtry(rxtLogger, telemLogger);

                    var activityLog = await package.GetServiceAsync <SVsActivityLog, IVsActivityLog>();

                    rxtLogger.VsActivityLog = activityLog;
                }

                // The RxtOutputPane is used by all extensions
                // so using that as a way to tell if any extensions have initialized.
                // Only want the default info loading once.
                if (!RxtOutputPane.IsInitialized())
                {
                    Logger.RecordNotice(StringRes.Info_ProblemsInstructionsAndLink);
                    Logger.RecordNotice(string.Empty);
                }
            }
            catch (Exception exc)
            {
                Logger.RecordException(exc);
            }
        }