using System;
using System.Collections.ObjectModel;
using Artemis.Core.Modules;
namespace Artemis.Core;
///
/// Represents a data binding that binds a certain to a value inside a
///
///
public interface IDataBinding : IStorageModel, IDisposable, IPluginFeatureDependent
{
///
/// Gets the layer property the data binding is applied to
///
ILayerProperty BaseLayerProperty { get; }
///
/// Gets the script used to populate the data binding
///
INodeScript Script { get; }
///
/// Gets a list of sub-properties this data binding applies to
///
ReadOnlyCollection Properties { get; }
///
/// Gets a boolean indicating whether the data binding is enabled or not
///
bool IsEnabled { get; set; }
///
/// Applies the pending value of the data binding to the property
///
void Apply();
///
/// If the data binding is enabled, loads the node script for that data binding
///
void LoadNodeScript();
///
/// Occurs when a data binding property has been added
///
public event EventHandler? DataBindingPropertyRegistered;
///
/// Occurs when all data binding properties have been removed
///
public event EventHandler? DataBindingPropertiesCleared;
///
/// Occurs when a data binding has been enabled
///
public event EventHandler? DataBindingEnabled;
///
/// Occurs when a data binding has been disabled
///
public event EventHandler? DataBindingDisabled;
}