public WidgetViewModelProxy(IWidgetPlugin plugin, IWidgetTemplate widgetTemplate, IDataSourceAnalyser analyser) { _plugin = plugin; _widgetTemplate = widgetTemplate; _analyser = analyser; _deleteCommand = new DelegateCommand(Delete); try { InnerViewModel = plugin.CreateViewModel(widgetTemplate, analyser); } catch (Exception e) { var type = plugin.GetType(); Log.ErrorFormat("{0}.CreateViewModel() threw exception:\r\n{1}", type.FullName, e); } if (InnerViewModel != null) { InnerViewModel.PropertyChanged += ViewModelOnPropertyChanged; InnerViewModel.TemplateModified += ViewModelOnTemplateModified; try { Content = plugin.CreateContentPresenterFor(InnerViewModel); } catch (Exception e) { var type = plugin.GetType(); Log.ErrorFormat("{0}.CreateContentPresenterFor() threw exception:\r\n{1}", type.FullName, e); } } }
private void LayoutOnRequestAddWidget(IWidgetPlugin plugin) { var viewConfiguration = CreateViewConfiguration(plugin); var configuration = plugin.DefaultAnalyserConfiguration?.Clone() as ILogAnalyserConfiguration; var analyser = CreateAnalyser(plugin.AnalyserId, configuration); var widgetTemplate = new WidgetTemplate { Id = WidgetId.CreateNew(), AnalyserId = analyser.Id, Configuration = viewConfiguration }; var widget = plugin.CreateViewModel(widgetTemplate, analyser); _analysersPerWidget.Add(widget, analyser); _template.Add(widgetTemplate); Add(widget); }