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); }
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); }
void ViewProviderNewView(object sender, NewViewEventArgs e) { var viewModel = GetOrCreateViewModel(e); if (viewModel == null) { return; } customTaskPaneRegister.RegisterCustomTaskPanes(viewModel, e.ViewInstance, e.ViewContext); e.Handled = true; }
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; }
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(); } }
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(); } }
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; }
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); }
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; }