Class Selector

java.lang.Object
com.openhtmltopdf.css.newmatch.Selector

public class Selector extends Object
A Selector is really a chain of CSS selectors that all need to be valid for the selector to match.
  • Field Details

    • _parent

      private Ruleset _parent
    • chainedSelector

      private Selector chainedSelector
    • siblingSelector

      private Selector siblingSelector
    • _axis

      private int _axis
    • _name

      private String _name
    • _namespaceURI

      private String _namespaceURI
    • _pc

      private int _pc
    • _pe

      private String _pe
    • _specificityB

      private int _specificityB
    • _specificityC

      private int _specificityC
    • _specificityD

      private int _specificityD
    • _pos

      private int _pos
    • conditions

      private List<Condition> conditions
    • DESCENDANT_AXIS

      public static final int DESCENDANT_AXIS
      See Also:
    • CHILD_AXIS

      public static final int CHILD_AXIS
      See Also:
    • IMMEDIATE_SIBLING_AXIS

      public static final int IMMEDIATE_SIBLING_AXIS
      See Also:
    • VISITED_PSEUDOCLASS

      public static final int VISITED_PSEUDOCLASS
      See Also:
    • HOVER_PSEUDOCLASS

      public static final int HOVER_PSEUDOCLASS
      See Also:
    • ACTIVE_PSEUDOCLASS

      public static final int ACTIVE_PSEUDOCLASS
      See Also:
    • FOCUS_PSEUDOCLASS

      public static final int FOCUS_PSEUDOCLASS
      See Also:
    • selectorID

      private int selectorID
      Give each a unique ID to be able to create a key to internalize Matcher.Mappers
    • _ancestorSelector

      private Selector _ancestorSelector
    • selectorCount

      private static int selectorCount
  • Constructor Details

    • Selector

      public Selector()
  • Method Details

    • matches

      public boolean matches(Object e, AttributeResolver attRes, TreeResolver treeRes)
      Check if the given Element matches this selector. Note: the parser should give all class
    • matchesDynamic

      public boolean matchesDynamic(Object e, AttributeResolver attRes, TreeResolver treeRes)
      Check if the given Element matches this selector's dynamic properties. Note: the parser should give all class
    • addUnsupportedCondition

      public void addUnsupportedCondition()
      for unsupported or invalid CSS
    • addLinkCondition

      public void addLinkCondition()
      the CSS condition that element has pseudo-class :link
    • addFirstChildCondition

      public void addFirstChildCondition()
      the CSS condition that element has pseudo-class :first-child
    • addLastChildCondition

      public void addLastChildCondition()
      the CSS condition that element has pseudo-class :last-child
    • addNthChildCondition

      public void addNthChildCondition(String number)
      the CSS condition that element has pseudo-class :nth-child(an+b)
    • addEvenChildCondition

      public void addEvenChildCondition()
      the CSS condition that element has pseudo-class :even
    • addOddChildCondition

      public void addOddChildCondition()
      the CSS condition that element has pseudo-class :odd
    • addLangCondition

      public void addLangCondition(String lang)
      the CSS condition :lang(Xx)
    • addIDCondition

      public void addIDCondition(String id)
      the CSS condition #ID
    • addClassCondition

      public void addClassCondition(String className)
      the CSS condition .class
    • addAttributeExistsCondition

      public void addAttributeExistsCondition(String namespaceURI, String name)
      the CSS condition [attribute]
    • addAttributeEqualsCondition

      public void addAttributeEqualsCondition(String namespaceURI, String name, String value)
      the CSS condition [attribute=value]
    • addAttributePrefixCondition

      public void addAttributePrefixCondition(String namespaceURI, String name, String value)
      the CSS condition [attribute^=value]
    • addAttributeSuffixCondition

      public void addAttributeSuffixCondition(String namespaceURI, String name, String value)
      the CSS condition [attribute$=value]
    • addAttributeSubstringCondition

      public void addAttributeSubstringCondition(String namespaceURI, String name, String value)
      the CSS condition [attribute*=value]
    • addAttributeMatchesListCondition

      public void addAttributeMatchesListCondition(String namespaceURI, String name, String value)
      the CSS condition [attribute~=value]
    • addAttributeMatchesFirstPartCondition

      public void addAttributeMatchesFirstPartCondition(String namespaceURI, String name, String value)
      the CSS condition [attribute|=value]
    • setPseudoClass

      public void setPseudoClass(int pc)
      set which pseudoclasses must apply for this selector
      Parameters:
      pc - the values from AttributeResolver should be used. Once set they cannot be unset. Note that the pseudo-classes should be set one at a time, otherwise specificity of declaration becomes wrong.
    • setPseudoElement

      public void setPseudoElement(String pseudoElement)
      check if selector queries for dynamic properties
      Parameters:
      pseudoElement - The new pseudoElement value
    • isPseudoClass

      public boolean isPseudoClass(int pc)
      query if a pseudoclass must apply for this selector
      Parameters:
      pc - the values from AttributeResolver should be used.
      Returns:
      The pseudoClass value
    • getPseudoElement

      public String getPseudoElement()
      Gets the pseudoElement attribute of the Selector object
      Returns:
      The pseudoElement value
    • getChainedSelector

      public Selector getChainedSelector()
      get the next selector in the chain, for matching against elements along the appropriate axis
      Returns:
      The chainedSelector value
    • getRuleset

      public Ruleset getRuleset()
      get the Ruleset that this Selector is part of
      Returns:
      The ruleset value
    • getAxis

      public int getAxis()
      get the axis that this selector should be evaluated on
      Returns:
      The axis value
    • getSpecificityB

      public int getSpecificityB()
      The correct specificity value for this selector and its sibling-axis selectors
    • getSpecificityD

      public int getSpecificityD()
      The correct specificity value for this selector and its sibling-axis selectors
    • getSpecificityC

      public int getSpecificityC()
      The correct specificity value for this selector and its sibling-axis selectors
    • getOrder

      String getOrder()
      returns "a number in a large base" with specificity and specification order of selector
      Returns:
      The order value
    • getAppropriateSibling

      Object getAppropriateSibling(Object e, TreeResolver treeRes)
      Gets the appropriateSibling attribute of the Selector object
      Parameters:
      e - PARAM
      treeRes -
      Returns:
      The appropriateSibling value
    • addCondition

      private void addCondition(Condition c)
      Adds a feature to the Condition attribute of the Selector object
      Parameters:
      c - The feature to be added to the Condition attribute
    • toCSS

      public void toCSS(StringBuilder sb, Set<Selector> stopAt)
      Prints the selector chain to a StringBuilder, stopping when it hits a selector in the stopAt set. For example, given the selector 'body svg rect' and the stop set contains 'svg' then this will print 'rect' to the builder. This method is used to recreate CSS selectors to pass to SVG or other plugins. FIXME: Does not handle sibling selector.
    • getElementStylingOrder

      static String getElementStylingOrder()
      Gets the elementStylingOrder attribute of the Selector class
      Returns:
      The elementStylingOrder value
    • getSelectorID

      public int getSelectorID()
    • setName

      public void setName(String name)
    • setPos

      public void setPos(int pos)
    • setParent

      public void setParent(Ruleset ruleset)
    • setAxis

      public void setAxis(int axis)
    • setSpecificityB

      public void setSpecificityB(int b)
    • setSpecificityC

      public void setSpecificityC(int c)
    • setSpecificityD

      public void setSpecificityD(int d)
    • setChainedSelector

      public void setChainedSelector(Selector selector)
    • setSiblingSelector

      public void setSiblingSelector(Selector selector)
    • setNamespaceURI

      public void setNamespaceURI(String namespaceURI)
    • setAncestorSelector

      public void setAncestorSelector(Selector ancestor)
    • getAncestorSelector

      public Selector getAncestorSelector()
    • toString

      public String toString()
      For debugging, prints the entire selector chain. FIXME: Does not handle sibling selectors.
      Overrides:
      toString in class Object