public IOutputWindowPane TryGetPane(string name) { IOutputWindowPane pane; if (panes.TryGetValue(name, out pane)) { return(pane); } var olesp = (IOleServiceProvider)GlobalServiceProvider.GetService(typeof(IOleServiceProvider)); var outputWindow = olesp.TryGetGlobalService <SVsOutputWindow, IVsOutputWindow>(); if (outputWindow == null) { return(null); } Guid guid; if (!outputWindows.TryGetValue(name, out guid)) { var definition = OutputWindowDefinitions.FirstOrDefault(lazy => lazy.Metadata.Name.Equals(name)); if (definition == null) { return(null); } guid = Guid.NewGuid(); // this controls whether the pane is listed in the output panes dropdown list, *not* whether the pane is initially selected const bool visible = true; const bool clearWithSolution = false; if (ErrorHandler.Failed(ErrorHandler.CallWithCOMConvention(() => outputWindow.CreatePane(ref guid, definition.Metadata.Name, Convert.ToInt32(visible), Convert.ToInt32(clearWithSolution))))) { return(null); } outputWindows.Add(definition.Metadata.Name, guid); } IVsOutputWindowPane vspane = null; if (ErrorHandler.Failed(ErrorHandler.CallWithCOMConvention(() => outputWindow.GetPane(ref guid, out vspane)))) { return(null); } pane = new VsOutputWindowPaneAdapter(vspane); panes[name] = pane; return(pane); }
public IOutputWindowPane TryGetPane(string name) { IOutputWindowPane pane; if (panes.TryGetValue(name, out pane)) return pane; var olesp = (IOleServiceProvider)GlobalServiceProvider.GetService(typeof(IOleServiceProvider)); var outputWindow = olesp.TryGetGlobalService<SVsOutputWindow, IVsOutputWindow>(); if (outputWindow == null) return null; Guid guid; if (!outputWindows.TryGetValue(name, out guid)) { var definition = OutputWindowDefinitions.FirstOrDefault(lazy => lazy.Metadata.Name.Equals(name)); if (definition == null) return null; guid = Guid.NewGuid(); // this controls whether the pane is listed in the output panes dropdown list, *not* whether the pane is initially selected const bool visible = true; const bool clearWithSolution = false; if (ErrorHandler.Failed(ErrorHandler.CallWithCOMConvention(() => outputWindow.CreatePane(ref guid, definition.Metadata.Name, Convert.ToInt32(visible), Convert.ToInt32(clearWithSolution))))) return null; outputWindows.Add(definition.Metadata.Name, guid); } IVsOutputWindowPane vspane = null; if (ErrorHandler.Failed(ErrorHandler.CallWithCOMConvention(() => outputWindow.GetPane(ref guid, out vspane)))) return null; pane = new VsOutputWindowPaneAdapter(vspane); panes[name] = pane; return pane; }