package com.abmash.core.jquery.command; /** * Reduce the set of matched elements to those that have the desired css values. */ public class FilterCSSCommand extends FilterCommand { public enum CSSAttributeComparator { GREATER_THAN, LESS_THAN, HAS_VALUE, CONTAINS, NOT_EQUAL, EQUAL, } /** * * @param attributeName the name of the css attribute * @param cssAttributeComparator * @param value a concrete value or jQuery command */ public FilterCSSCommand(String attributeName, CSSAttributeComparator cssAttributeComparator, String value) { super(null); String cssFilterSelector = ""; String sourceValue = "jQuery(this).css('" + attributeName + "')"; String comparisonOperator; String comparisonValue = value; switch (cssAttributeComparator) { case GREATER_THAN: comparisonOperator = ">"; sourceValue = "parseInt(" + sourceValue + ", 10)"; comparisonValue = "parseInt(" + comparisonValue + ", 10)"; break; case LESS_THAN: comparisonOperator = "<"; sourceValue = "parseInt(" + sourceValue + ", 10)"; comparisonValue = "parseInt(" + comparisonValue + ", 10)"; break; case HAS_VALUE: comparisonOperator = "!=="; comparisonValue = "''"; break; case CONTAINS: comparisonOperator = sourceValue + ".contains(" + comparisonValue + ")"; sourceValue = ""; comparisonValue = ""; break; case NOT_EQUAL: comparisonOperator = "!=="; break; case EQUAL: default: comparisonOperator = "=="; break; } cssFilterSelector += "function() {" + "return " + sourceValue + " " + comparisonOperator + " " + comparisonValue + ";" + "}"; selector = cssFilterSelector; } }