| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 | using Newtonsoft.Json;using System;using System.Collections.Generic;using System.ComponentModel;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;namespace InABox.Wpf.Dashboard;public interface IDynamicDashboardDataPresenter{    /// <summary>    /// The desired height for this presenter while previewing in design mode.    /// </summary>    int PreviewHeight { get; }    /// <summary>    /// Sets whether this dashboard is in preview mode.    /// </summary>    bool IsPreview { get; set; }    object Properties { get; set; }    /// <summary>    /// Component for the data of this presenter; can be safely assumed to be non-<see langword="null"/> when <see cref="Setup"/> is called.    /// This may be set later, if the user changes the data they've selected, so the setter should be used to manage data refreshes.    /// </summary>    DynamicDashboardDataComponent DataComponent { get; set; }    /// <summary>    /// Sets up the data presenter; returns the UI element to be rendered to the user.    /// </summary>    /// <returns>    /// <see langword="null"/> if some error occurred and the data cannot be presented; otherwise, returns the control.    /// </returns>    FrameworkElement? Setup();    /// <summary>    /// Update the dashboard with <paramref name="data"/>.    /// </summary>    /// <param name="data">The data to be rendered.</param>    void Refresh(DynamicDashboardData data);    void Shutdown(CancelEventArgs? cancel);}public interface IDynamicDashboardDataPresenter<TProperties> : IDynamicDashboardDataPresenter    where TProperties: class, new(){    /// <summary>    /// The properties for the presenter; can be safely assumed to be non-<see langword="null"/> when <see cref="IDynamicDashboardDataPresenter.Setup"/>    /// is called. This may be modified by the presenter, and any changes made will be persisted.    /// </summary>    new TProperties Properties { get; set; }    object IDynamicDashboardDataPresenter.Properties    {        get => Properties;        set => Properties = (value as TProperties)!;    }}
 |