Пример #1
0
        protected T GetOrCreate(int instanceId, Func <T> factory)
        {
            _mainThread.Assert();
            if (_toolWindowPanes.TryGetValue(instanceId, out ToolWindowPaneHolder holder))
            {
                if (holder.ToolWindowPane != null)
                {
                    return(holder.ToolWindowPane);
                }
                RemoveHolder(instanceId);
            }

            var instance  = factory();
            var vsUiShell = Services.GetService <IVsUIShell>(typeof(SVsUIShell));

            ToolWindowUtilities.CreateToolWindow(vsUiShell, instance, instanceId);

            holder = new ToolWindowPaneHolder(instance, () => RemoveHolder(instanceId));
            _toolWindowPanes.Add(instanceId, holder);
            return(instance);
        }
Пример #2
0
        protected T GetOrCreate(int instanceId, Func <int, T> factory)
        {
            ToolWindowPaneHolder holder;

            if (_toolWindowPanes.TryGetValue(instanceId, out holder))
            {
                if (holder.ToolWindowPane != null)
                {
                    return(holder.ToolWindowPane);
                }
                RemoveHolder(instanceId);
            }

            var        instance  = factory(instanceId);
            IVsUIShell vsUiShell = VsAppShell.Current.GetGlobalService <IVsUIShell>(typeof(SVsUIShell));

            ToolWindowUtilities.CreateToolWindow(vsUiShell, instance, instanceId);

            holder = new ToolWindowPaneHolder(instance, () => RemoveHolder(instanceId));
            _toolWindowPanes.Add(instanceId, holder);
            return(instance);
        }