Files
ZuneShell.dll/UIX/Microsoft/Iris/Markup/MarkupDataQuerySchema.cs
T

102 lines
4.2 KiB
C#
Raw Normal View History

// Decompiled with JetBrains decompiler
// Type: Microsoft.Iris.Markup.MarkupDataQuerySchema
// Assembly: UIX, Version=4.8.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
// MVID: A56C6C9D-B7F6-46A9-8BDE-B3D9B8D60B11
// Assembly location: C:\Program Files\Zune\UIX.dll
using Microsoft.Iris.Library;
using Microsoft.Iris.Markup.UIX;
using Microsoft.Iris.Session;
using System;
namespace Microsoft.Iris.Markup
{
internal class MarkupDataQuerySchema : ClassTypeSchema
{
private TypeSchema _resultType;
private string _providerName;
private MarkupDataQueryPreDefinedPropertySchema _resultProperty;
private MarkupDataQueryPreDefinedPropertySchema[] _predefinedProperties;
private MarkupDataQueryRefreshMethodSchema _refreshMethod;
public MarkupDataQuerySchema(MarkupLoadResult owner, string name)
: base(owner, name)
{
}
protected override void OnDispose()
{
base.OnDispose();
if (this._predefinedProperties != null)
{
foreach (DisposableObject predefinedProperty in this._predefinedProperties)
2021-03-31 17:15:06 -05:00
predefinedProperty.Dispose(this);
}
if (this._refreshMethod == null)
return;
2021-03-31 17:15:06 -05:00
this._refreshMethod.Dispose(this);
}
public override void BuildProperties()
{
base.BuildProperties();
this._predefinedProperties = new MarkupDataQueryPreDefinedPropertySchema[3]
{
2021-03-31 17:20:20 -05:00
this._resultProperty = new MarkupDataQueryPreDefinedPropertySchema(this, this._resultType != null ? this._resultType : ObjectSchema.Type, "Result", new GetValueHandler(GetResultProperty), null),
new MarkupDataQueryPreDefinedPropertySchema(this, UIXLoadResultExports.DataQueryStatusType, "Status", new GetValueHandler(GetStatusProperty), null),
new MarkupDataQueryPreDefinedPropertySchema(this, BooleanSchema.Type, "Enabled", new GetValueHandler(GetEnabledProperty), new SetValueHandler(SetEnabledProperty))
};
this._refreshMethod = new MarkupDataQueryRefreshMethodSchema(this);
}
public override MarkupType MarkupType => MarkupType.DataQuery;
2021-03-31 17:15:06 -05:00
protected override TypeSchema DefaultBase => MarkupDataQueryInstanceSchema.Type;
public override Type RuntimeType => typeof(MarkupDataQuery);
public override object ConstructDefault()
{
IDataProvider dataProvider = MarkupDataProvider.GetDataProvider(this._providerName);
if (dataProvider != null)
2021-03-31 17:15:06 -05:00
return dataProvider.Build(this);
ErrorManager.ReportError("Could not find provider '{0}'; verify that it has been registered", _providerName);
return null;
}
public override PropertySchema FindProperty(string name)
{
foreach (PropertySchema predefinedProperty in this._predefinedProperties)
{
if (name == predefinedProperty.Name)
return predefinedProperty;
}
return base.FindProperty(name);
}
2021-03-31 17:15:06 -05:00
public override MethodSchema FindMethod(string name, TypeSchema[] parameters) => this._refreshMethod.Name == name && parameters.Length == 0 ? _refreshMethod : base.FindMethod(name, parameters);
public string ProviderName
{
get => this._providerName;
set => this._providerName = value;
}
public TypeSchema ResultType
{
get => this._resultType;
set => this._resultType = value;
}
public bool InvalidatesQuery(string propertyName) => this.FindPropertyDeep(propertyName) is MarkupDataQueryPropertySchema propertyDeep && propertyDeep.InvalidatesQuery;
private static object GetResultProperty(object instance) => ((MarkupDataQuery)instance).Result;
2021-03-31 17:15:06 -05:00
private static object GetStatusProperty(object instance) => ((MarkupDataQuery)instance).Status;
2021-03-31 17:15:06 -05:00
private static object GetEnabledProperty(object instance) => ((MarkupDataQuery)instance).Enabled;
private static void SetEnabledProperty(ref object instance, object value) => ((MarkupDataQuery)instance).Enabled = (bool)value;
}
}