public IRibbonViewModel ResolveInstanceFor(object view)
        {
            var context = viewContextProvider.GetContextForView(view) ?? NullContext.Instance;

            //Sometimes can happen that view provider has not got events to tell us about a new view
            // so we will have to try and create it
            if (!contextToViewModelLookup.ContainsKey(context))
            {
                var ribbonTypeForView = viewContextProvider.GetRibbonTypeForView(view);
                var newViewEventArgs  = new NewViewEventArgs(view, context, ribbonTypeForView);

                var viewModel = GetOrCreateViewModel(newViewEventArgs.RibbonType, newViewEventArgs.ViewContext, newViewEventArgs.ViewInstance);
                if (newViewEventArgs.ViewInstance != null)
                {
                    customTaskPaneRegister.RegisterCustomTaskPanes(viewModel, newViewEventArgs.ViewInstance, context);
                }
            }

            if (contextToViewModelLookup.ContainsKey(context))
            {
                return(contextToViewModelLookup[context]);
            }

            return(null);
        }
        public void new_window_with_different_context_does_not_create_new_viewmodel()
        {
            // arrange
            ribbonFactoryUnderTest.ClearCurrent();
            testAddInBase.TestAddin.OnStartup();
            //Open new view to create a viewmodel for view
            var viewInstance = new TestWindow {
                Context = new TestWindowContext()
            };
            var view2Instance = new TestWindow {
                Context = new TestWindowContext()
            };

            // act
            var newViewEventArgs = new NewViewEventArgs(viewInstance, viewInstance.Context,
                                                        TestRibbonTypes.RibbonType1.GetEnumDescription());
            var viewEventArgs = new NewViewEventArgs(view2Instance, view2Instance.Context,
                                                     TestRibbonTypes.RibbonType1.GetEnumDescription());

            viewProvider.NewView += Raise.EventWith(viewProvider, newViewEventArgs);
            viewProvider.NewView += Raise.EventWith(viewProvider, viewEventArgs);

            // assert
            Assert.Equal(2, viewModelFactory.ViewModels.Count);
        }
Exemplo n.º 3
0
        public void new_window_with_same_context_does_not_create_new_viewmodel()
        {
            // arrange
            var ribbonFactory = new TestRibbonFactory(
                testAddInBase,
                viewProvider, new TestContextProvider(), "Foo", Assembly.GetExecutingAssembly());

            testAddInBase.TestAddin.OnStartup();
            //Open new view to create a viewmodel for view
            var viewInstance = new TestView {
                Context = new TestWindowContext()
            };
            var view2Instance = new TestView {
                Context = new TestWindowContext()
            };

            // act

            var viewEventArgs = new NewViewEventArgs(viewInstance, viewInstance.Context,
                                                     TestRibbonTypes.RibbonType1.GetEnumDescription());

            viewProvider.NewView += Raise.EventWith(viewProvider, viewEventArgs);
            var newViewEventArgs = new NewViewEventArgs(view2Instance, viewInstance.Context,
                                                        TestRibbonTypes.RibbonType1.GetEnumDescription());

            viewProvider.NewView += Raise.EventWith(viewProvider, newViewEventArgs);

            // assert
            Assert.Equal(1, viewModelFactory.ViewModels.Count);
        }
Exemplo n.º 4
0
        void ViewProviderNewView(object sender, NewViewEventArgs e)
        {
            var viewModel = GetOrCreateViewModel(e);

            if (viewModel == null)
            {
                return;
            }
            customTaskPaneRegister.RegisterCustomTaskPanes(viewModel, e.ViewInstance, e.ViewContext);
            e.Handled = true;
        }
Exemplo n.º 5
0
 void ViewProviderNewView(object sender, NewViewEventArgs e)
 {
     VstoContribLog.Debug(_ => _("ViewProvider.NewView Raised, Type: {0}, View: {1}, Context: {2}",
         e.RibbonType, e.ViewInstance.ToLogFormat(), e.ViewContext.ToLogFormat()));
     if (!ribbonUiLookup.ContainsKey(e.RibbonType) && ribbonUiLookup.ContainsKey(DefaultRibbon))
     {
         ribbonUiLookup.Add(e.RibbonType, ribbonUiLookup[DefaultRibbon]);
     }
     var viewModel = GetOrCreateViewModel(e.RibbonType, e.ViewContext ?? NullContext.Instance, e.ViewInstance);
     if (viewModel == null) return;
     customTaskPaneRegister.RegisterCustomTaskPanes(viewModel, e.ViewInstance, e.ViewContext);
     InvalidateRibbonForViewModel(viewModel);
     e.Handled = true;
 }
Exemplo n.º 6
0
        void NewExplorer(Explorer explorer)
        {
            var wrapper = new ExplorerWrapper(explorer);

            wrapper.Closed += ExplorerClosed;

            var newViewEventArgs = new NewViewEventArgs(explorer, explorer, OutlookRibbonType.OutlookExplorer.GetEnumDescription());

            NewView(this, newViewEventArgs);

            if (!newViewEventArgs.Handled)
            {
                explorer.ReleaseComObject();
            }
        }
Exemplo n.º 7
0
        void NewInspector(Inspector inspector)
        {
            var wrapper = new InspectorWrapper(inspector);

            wrapper.Closed += InspectorClosed;

            var ribbonType       = InspectorToRibbonTypeConverter.Convert(inspector);
            var newViewEventArgs = new NewViewEventArgs(inspector, wrapper.CurrentContext, ribbonType.GetEnumDescription());

            NewView(this, newViewEventArgs);

            if (!newViewEventArgs.Handled)
            {
                inspector.ReleaseComObject();
            }
        }
Exemplo n.º 8
0
        public IRibbonViewModel ResolveInstanceFor(object view)
        {
            var context = viewContextProvider.GetContextForView(view) ?? NullContext.Instance;

            //Sometimes can happen that view provider has not got events to tell us about a new view
            // so we will have to try and create it
            if (!contextToViewModelLookup.ContainsKey(context))
            {
                var ribbonTypeForView = viewContextProvider.GetRibbonTypeForView(view);
                var newViewEventArgs  = new NewViewEventArgs(view, context, ribbonTypeForView);

                GetOrCreateViewModel(newViewEventArgs);
            }

            return(contextToViewModelLookup[context]);
        }
        void ViewProviderNewView(object sender, NewViewEventArgs e)
        {
            VstoContribLog.Debug(_ => _("ViewProvider.NewView Raised, Type: {0}, View: {1}, Context: {2}",
                                        e.RibbonType, e.ViewInstance.ToLogFormat(), e.ViewContext.ToLogFormat()));
            if (ribbonUiLookup.ContainsKey("default"))
            {
                ribbonUiLookup.Add(e.RibbonType, ribbonUiLookup["default"]);
                ribbonUiLookup.Remove("default");
            }
            var viewModel = GetOrCreateViewModel(e.RibbonType, e.ViewContext ?? NullContext.Instance, e.ViewInstance);

            if (viewModel == null)
            {
                return;
            }
            customTaskPaneRegister.RegisterCustomTaskPanes(viewModel, e.ViewInstance, e.ViewContext);
            InvalidateRibbonForViewModel(viewModel);
            e.Handled = true;
        }
Exemplo n.º 10
0
        IRibbonViewModel GetOrCreateViewModel(NewViewEventArgs e)
        {
            if (!ribbonTypeLookup.ContainsKey(e.RibbonType))
            {
                return(null);
            }
            if (contextToViewModelLookup.ContainsKey(e.ViewContext))
            {
                //Tell viewmodel there is a new view active
                var ribbonViewModel = contextToViewModelLookup[e.ViewContext];
                ribbonViewModel.CurrentView = e.ViewInstance;
                return(ribbonViewModel);
            }

            currentlyLoadingRibbon = e.RibbonType;
            IRibbonViewModel buildViewModel = BuildViewModel(e.RibbonType, e.ViewInstance, e.ViewContext);

            contextToViewModelLookup.Add(e.ViewContext, buildViewModel);
            return(buildViewModel);
        }
Exemplo n.º 11
0
        public IRibbonViewModel ResolveInstanceFor(object view)
        {
            var context = viewContextProvider.GetContextForView(view) ?? NullContext.Instance;

            //Sometimes can happen that view provider has not got events to tell us about a new view
            // so we will have to try and create it
            if (!contextToViewModelLookup.ContainsKey(context))
            {
                var ribbonTypeForView = viewContextProvider.GetRibbonTypeForView(view);
                var newViewEventArgs = new NewViewEventArgs(view, context, ribbonTypeForView);

                var viewModel = GetOrCreateViewModel(newViewEventArgs.RibbonType, newViewEventArgs.ViewContext, newViewEventArgs.ViewInstance);
                if (newViewEventArgs.ViewInstance != null)
                    customTaskPaneRegister.RegisterCustomTaskPanes(viewModel, newViewEventArgs.ViewInstance, context);
            }

            return contextToViewModelLookup[context];
        }
 void ViewProviderNewView(object sender, NewViewEventArgs e)
 {
     var viewModel = GetOrCreateViewModel(e);
     if (viewModel == null) return;
     customTaskPaneRegister.RegisterCustomTaskPanes(viewModel, e.ViewInstance, e.ViewContext);
     e.Handled = true;
 }
        IRibbonViewModel GetOrCreateViewModel(NewViewEventArgs e)
        {
            if (!ribbonTypeLookup.ContainsKey(e.RibbonType)) return null;
            if (contextToViewModelLookup.ContainsKey(e.ViewContext))
            {
                //Tell viewmodel there is a new view active
                var ribbonViewModel = contextToViewModelLookup[e.ViewContext];
                ribbonViewModel.CurrentView = e.ViewInstance;
                return ribbonViewModel;
            }

            currentlyLoadingRibbon = e.RibbonType;
            IRibbonViewModel buildViewModel = BuildViewModel(e.RibbonType, e.ViewInstance, e.ViewContext);
            contextToViewModelLookup.Add(e.ViewContext, buildViewModel);
            return buildViewModel;
        }