using System;
using JD.Kernel.StaticHelpers;
namespace JD.TeaBoxAddinSystem.Addins.Internal
{
///
/// An forms the identity of an .
///
///
/// All fields are optional.
///
public class AddinManifest
{
#region Variables
private readonly Addin m_owner;
private readonly string m_id;
private string m_name;
private Version m_version = new Version();
private string m_author;
private string m_url;
private string m_description;
private string m_category;
private bool m_x86only;
private static int m_nextAutogeneratedId = 1;
#endregion
#region Constructor
///
/// Constructor. Id is generated.
///
///
public AddinManifest(Addin addin)
: this(addin, null)
{
}
///
/// Constructor.
///
///
/// Id of the addin. If null or empty, it will be autogenerated.
public AddinManifest(Addin addin, string id)
{
Throw.IfNull(addin, "addin");
m_owner = addin;
m_id = string.IsNullOrEmpty(id) ? AutogenerateId() : id;
m_name = id;
}
#endregion
#region Properties
///
/// Id of the addin.
///
public string Id
{
get { return m_id; }
}
///
/// Name of the addin.
///
public string Name
{
get { return m_name; }
set
{
m_owner.ThrowIfLoaded();
m_name = value;
}
}
///
/// Version of the addin.
///
public Version Version
{
get { return m_version; }
set
{
Throw.IfNull(value, "Version");
m_owner.ThrowIfLoaded();
m_version = value;
}
}
///
/// Author of the addin.
///
public string Author
{
get { return m_author; }
set
{
m_owner.ThrowIfLoaded();
m_author = value;
}
}
///
/// Url of the addin.
///
public string Url
{
get { return m_url; }
set
{
m_owner.ThrowIfLoaded();
m_url = value;
}
}
///
/// Description of the addin.
///
public string Description
{
get { return m_description; }
set
{
m_owner.ThrowIfLoaded();
m_description = value;
}
}
///
/// Category of the addin.
///
public string Category
{
get { return m_category; }
set
{
m_owner.ThrowIfLoaded();
m_category = value;
}
}
public bool X86Only
{
get { return m_x86only; }
set
{
m_owner.ThrowIfLoaded();
m_x86only = value;
}
}
///
/// Full Id.
///
public string FullId
{
get
{
return Id;
}
}
#endregion
#region Methods
private static string AutogenerateId()
{
const string AutogeneratedIdPrefix = "__autoid__";
return AutogeneratedIdPrefix + m_nextAutogeneratedId++;
}
#endregion
}
}