using System; using System.Collections.Generic; using Artemis.Core; using Artemis.Core.DataModelExpansions; namespace Artemis.UI.Shared.Services { public interface IDataModelUIService : IArtemisSharedUIService { IReadOnlyCollection RegisteredDataModelEditors { get; } IReadOnlyCollection RegisteredDataModelDisplays { get; } DataModelPropertiesViewModel GetMainDataModelVisualization(); DataModelPropertiesViewModel GetPluginDataModelVisualization(Plugin plugin); /// /// Determines whether the given plugin expands the main data model /// /// /// bool GetPluginExtendsDataModel(Plugin plugin); DataModelVisualizationRegistration RegisterDataModelInput(PluginInfo pluginInfo, IReadOnlyCollection compatibleConversionTypes) where T : DataModelInputViewModel; DataModelVisualizationRegistration RegisterDataModelDisplay(PluginInfo pluginInfo) where T : DataModelDisplayViewModel; void RemoveDataModelInput(DataModelVisualizationRegistration registration); void RemoveDataModelDisplay(DataModelVisualizationRegistration registration); DataModelDisplayViewModel GetDataModelDisplayViewModel(Type propertyType); DataModelInputViewModel GetDataModelInputViewModel(Type propertyType, DataModelPropertyAttribute description, object initialValue, Action updateCallback); } }