public void Child_conditions_can_be_removed()
        {
            var parent = new AnyCondition {
                ID = ConditionID.Parse(0)
            };
            var childOne = new EnabledCondition {
                ID = ConditionID.Parse(1)
            };
            var childTwo = new DisabledCondition {
                ID = ConditionID.Parse(2)
            };

            _collection.Add(parent);
            _collection.Add(childOne, parent.ID);
            _collection.Add(childTwo, parent.ID);

            _collection.Remove(conditionID: childOne.ID);

            _collection
            .All
            .ShouldHaveSingleItem()
            .ShouldBeOfType <AnyCondition>();

            parent.Children.ShouldBe(new[] { childTwo });
        }
        public ButtonStateTemplate(ButtonState[] states, Template template, EnabledCondition enabledCondition, FocusCondition focusCondition)
            : base(states, enabledCondition, focusCondition)
        {
            // Setup initial conditions.
            if (Script.IsUndefined(template)) template = null;

            // Store values.
            this.template = template;
        }
        protected ButtonStateContent(ButtonState[] states, EnabledCondition enabledCondition, FocusCondition focusCondition)
        {
            if (Script.IsNullOrUndefined(enabledCondition)) enabledCondition =  EnabledCondition.Either;
            if (Script.IsNullOrUndefined(focusCondition)) focusCondition =  FocusCondition.Either;

            States = states;
            EnabledCondition = enabledCondition;
            FocusCondition = focusCondition;
        }
        public void Multiple_conditions_can_be_added()
        {
            var conditionOne = new EnabledCondition();
            var conditionTwo = new NotCondition();

            _collection.Add(conditionOne);
            _collection.Add(conditionTwo);

            _collection.All.ShouldBe(new Condition[] { conditionOne, conditionTwo });
        }
        public void Conditions_can_be_removed()
        {
            var one = new EnabledCondition {
                ID = ConditionID.Parse(0)
            };
            var two = new EnabledCondition {
                ID = ConditionID.Parse(1)
            };
            var three = new EnabledCondition {
                ID = ConditionID.Parse(2)
            };

            _collection.Add(one);
            _collection.Add(two);
            _collection.Add(three);

            _collection.Remove(two.ID);
            _collection.All.ShouldBe(new[] { one, three });
        }
 /// <summary>Creates a Template with the specified selector and adds it as content for the given state.</summary>
 /// <param name="layer">The layer the state is rendered on (0 lowest, higher values fall in front of lower values)</param>
 /// <param name="states">The states the template applies to.</param>
 /// <param name="templateSelector">The CSS selector where the template can be found.</param>
 /// <param name="enabledCondition">The enabled-related conditions for which button content applies.</param>
 /// <param name="focusCondition">The focus-related conditions for which button content applies.</param>
 public void TemplateForStates(int layer, ButtonState[] states, string templateSelector, EnabledCondition enabledCondition, FocusCondition focusCondition)
 {
     contentController.AddTemplate(layer, new ButtonStateTemplate(states, new Template(templateSelector), enabledCondition, focusCondition));
 }
 /// <summary>Creates a Template with the specified selector and adds it as content for the given state.</summary>
 /// <param name="layer">The layer the state is rendered on (0 lowest, higher values fall in front of lower values)</param>
 /// <param name="state">The state the template applies to.</param>
 /// <param name="templateSelector">The CSS selector where the template can be found.</param>
 /// <param name="enabledCondition">The enabled-related conditions for which button content applies.</param>
 /// <param name="focusCondition">The focus-related conditions for which button content applies.</param>
 public void TemplateForState(int layer, ButtonState state, string templateSelector, EnabledCondition enabledCondition, FocusCondition focusCondition)
 {
     TemplateForStates(layer, new ButtonState[] { state }, templateSelector, enabledCondition, focusCondition);
 }
 /// <summary>Sets the CSS class(es) to use for a given layer.</summary>
 /// <param name="layer">The layer the state is rendered on (0 lowest, higher values fall in front of lower values)</param>
 /// <param name="states">The state(s) the CSS classes apply to.</param>
 /// <param name="cssClasses">A string containing one or more CSS class names.</param>
 /// <param name="enabledCondition">The enabled-related conditions for which button content applies.</param>
 /// <param name="focusCondition">The focus-related conditions for which button content applies.</param>
 public void CssForStates(int layer, ButtonState[] states, string cssClasses, EnabledCondition enabledCondition, FocusCondition focusCondition)
 {
     contentController.AddCss(layer, new ButtonStateCss(states, cssClasses, enabledCondition, focusCondition));
 }
 /// <summary>Sets the CSS class(es) to use for a given layer.</summary>
 /// <param name="layer">The layer the state is rendered on (0 lowest, higher values fall in front of lower values)</param>
 /// <param name="state">The state the CSS classes apply to.</param>
 /// <param name="cssClasses">A string containing one or more CSS class names.</param>
 /// <param name="enabledCondition">The enabled-related conditions for which button content applies.</param>
 /// <param name="focusCondition">The focus-related conditions for which button content applies.</param>
 public void CssForState(int layer, ButtonState state, string cssClasses, EnabledCondition enabledCondition, FocusCondition focusCondition)
 {
     CssForStates(layer, new ButtonState[] { state }, cssClasses, enabledCondition, focusCondition);
 }
 public ButtonStateCss(ButtonState[] states, string cssClasses, EnabledCondition enabledCondition, FocusCondition focusCondition)
     : base(states, enabledCondition, focusCondition)
 {
     this.cssClasses = cssClasses;
 }