private static IResource CloneActionRule(string newName, IResource from) { #region Preconditions IResource res = Core.ResourceStore.FindUniqueResource(FilterManagerProps.RuleResName, "Name", newName); if (res != null) { throw new AmbiguousMatchException("Can not assigned a name which is already in use for a cloned rule."); } #endregion Preconditions IResource[][] conditionGroups; IResource[] exceptions; FilterRegistry.CloneConditionTypeLinks(from, out conditionGroups, out exceptions); IResourceList actionsList = FMan.GetActions(from); IResource[] actions = new IResource[actionsList.Count]; for (int i = 0; i < actionsList.Count; i++) { actions[i] = FMan.CloneAction(actionsList[i]); } string[] formTypes = FilterRegistry.CompoundType(from); string eventName = from.GetStringProp("EventName"); IResource newRule = FMan.RegisterRule(eventName, newName, formTypes, conditionGroups, exceptions, actions); return(newRule); }
public void Execute(IActionContext context) { IResource view = context.SelectedResources[0]; IResource[][] conditions; IResource[] exceptions; FilterRegistry.CloneConditionTypeLinks(view, out conditions, out exceptions); string[] types = FilterRegistry.CompoundType(view); Core.FilteringFormsManager.ShowEditActionRuleForm(view.GetStringProp(Core.Props.Name), types, conditions, exceptions, null); }