/// <summary> /// Advices the perspective to make the given <paramref name="dataView"/> visible at the <paramref name="viewPosition"/>. /// </summary> /// <param name="dataView">Data view to show</param> /// <param name="viewPosition">Target view position</param> public virtual void ShowView(IDataView dataView, EViewPosition viewPosition) { if (dataView == null) { return; } try { // Notify data view to init dataView.Init(); // Set up new view IWidgetFactory widgetFactory = FactoryProvider.Instance.GetWidgetFactory(); dataView.WidgetFactory = widgetFactory; // Make view visible OnShowDataView(dataView, viewPosition); // Update internal state and dispatch events ActiveDataViews.Add(dataView); PerspectiveEventManager.Dispatch(lstnr => lstnr.OnWorkbenchPartOpened(dataView), OnDispatchWorkbenchEventException); } catch (Exception ex) { _log.Error($"Error on showing data view '{dataView}' by perspective '{this}'.", ex); } }