Exemplo n.º 1
0
        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;
                    }
                }
            }
        }
Exemplo n.º 2
0
        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);
        }