예제 #1
0
        protected RendererBaseToolWindow(BaseToolWindow copy) :
            base(copy)
        {
            CreateAndRegisterNewRenderer();

            RegisterMessages();
        }
예제 #2
0
 internal void SearchContent(BaseToolWindow toolWindow)
 {
     var availableControls = WndManager.HostedControls.All;
     foreach (var hostedControl in availableControls)
     {
         var window = _package.FindToolWindow(typeof(BaseToolWindow),
             Math.Abs(hostedControl.GetType().ToString().GetHashCode()),
             false);
         if (window == toolWindow)
         {
             toolWindow.SetContent(hostedControl);
             return;
         }
     }
 }
예제 #3
0
        private Task InstantiateNewToolWindow(object parameter)
        {
            ToolWindowFactoryInfo factoryInfo = (ToolWindowFactoryInfo)parameter;

            BaseToolWindow toolWindow = ConstructToolWindow(factoryInfo);

            IDockable toolWindowDock = null;

            if (factoryInfo.ToolWindowAttribute.ToolWindowType == ToolWindowType.Document)
            {
                toolWindowDock = new DocumentDock()
                {
                    Proportion       = Double.NaN,
                    ActiveDockable   = toolWindow,
                    VisibleDockables = CreateList <IDockable>(toolWindow)
                };
            }
            else
            {
                toolWindowDock = new ToolDock()
                {
                    Proportion       = Double.NaN,
                    ActiveDockable   = toolWindow,
                    VisibleDockables = CreateList <IDockable>(toolWindow)
                };
            }

            toolWindowDock.Id    = factoryInfo.ToolWindowAttribute.DisplayName;
            toolWindowDock.Title = factoryInfo.ToolWindowAttribute.DisplayName;

            var window = CreateWindowFrom(toolWindowDock);

            window.Owner   = _rootDock;
            window.Factory = this;

            // REEEEEEEEEEE why is there no f*****g documentation for this f*****g library?
            AddWindow(_rootDock, window);

            // DO NOT set this boolean to true. Don't do it. Trust me.
            window.Present(false);

            return(Task.CompletedTask);
        }
예제 #4
0
        private BaseToolWindow ConstructToolWindow(ToolWindowFactoryInfo factoryInfo)
        {
            if (factoryInfo.ToolWindowAttribute.ShareViewModelInstance)
            {
                if (factoryInfo.Instances.Count == 0)
                {
                    factoryInfo.Instances.Add(Activator.CreateInstance(factoryInfo.Type,
                                                                       GetConstructorArguments(factoryInfo.Type)) as BaseToolWindow);
                }

                return(factoryInfo.Instances[0]);
            }
            else
            {
                BaseToolWindow toolWindow = Activator.CreateInstance(factoryInfo.Type,
                                                                     GetConstructorArguments(factoryInfo.Type)) as BaseToolWindow;

                factoryInfo.Instances.Add(toolWindow);

                return(toolWindow);
            }
        }
예제 #5
0
 public ExampleDocumentViewModel(BaseToolWindow copy) :
     base(copy)
 {
     CreateCommands();
 }