コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        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);
        }