public void RemoveSelector(Selector s) { if (s == this._rootSelector) { throw new ArgumentException("The root selector cannot be removed!"); } this._selectors.Remove(s); int count = this._selectors.Count; for (int i = 0; i < count; i++) { List <IQualifier> item = this._selectors[i].qualifiers; int num = item.Count; for (int j = 0; j < num; j++) { SelectorAction selectorAction = item[j].action as SelectorAction; if (selectorAction == null) { CompositeAction compositeAction = item[j].action as CompositeAction; if (compositeAction != null) { selectorAction = compositeAction.connectorAction as SelectorAction; } } if (selectorAction != null && selectorAction.selector == s) { item[j].action = null; } } } }
public void CloneFrom(object other) { IAction action = other as IAction; if (action == null) { return; } CompositeAction compositeAction = other as CompositeAction; if (compositeAction != null) { this.actions.AddRange <IAction>(compositeAction.actions); this.connectorAction = compositeAction.connectorAction; return; } if (action is IConnectorAction) { this.connectorAction = (IConnectorAction)action; return; } this.actions.Add(action); }
internal static bool IsConnectedTo(this Selector source, Selector target) { SelectorAction selectorAction; bool flag; using (IEnumerator <IQualifier> enumerator = BasicExtensions.AllQualifiers(source).GetEnumerator()) { do { Label1: if (enumerator.MoveNext()) { IQualifier current = enumerator.Current; selectorAction = current.action as SelectorAction; if (selectorAction != null) { break; } CompositeAction compositeAction = current.action as CompositeAction; if (compositeAction != null) { selectorAction = compositeAction.connectorAction as SelectorAction; } else { goto Label1; } } else { return(false); } }while (selectorAction == null); flag = (selectorAction.selector != target ? selectorAction.selector.IsConnectedTo(target) : true); } return(flag); }