using Cryville.Crtr.Browsing.UI; using System; namespace Cryville.Crtr.Browsing.Actions { internal class UseSkinAction : ResourceAction { readonly RulesetConfigBrowser _destination; public UseSkinAction() : this(null) { } public UseSkinAction(RulesetConfigBrowser destination) { _destination = destination; } public override string Name { get { return "Use"; } } public override int Priority { get { return -100; } } public override bool CanInvoke(Uri uri, ISkinDetail resource) { if (_destination == null) { return !OpenConfigAction.HasTab(resource.RulesetId); } return _destination.RulesetName == resource.RulesetId; } public override void Invoke(Uri uri, ISkinDetail resource) { if (_destination == null) { OpenConfigAction.Invoke(resource.RulesetId, config => config.generic.Skin = resource.Name); } else { _destination.SetSkin(resource.Name); OpenConfigAction.Invoke(resource.RulesetId, null); } } } }