package org.mt4j.components.css.style;
/**
* The Class CSSStyleHierarchy: Adds hierarchical information to a CSSStyle (for prioritizing/sorting)
*/
public class CSSStyleHierarchy implements Comparable<Object>{
/** The constant NA. */
public final short NA = 0;
/** The constant Pos1. */
public final short POS1 = 1;
/** The constant Pos2. */
public final short POS2 = 2;
/** The constant Pos3. */
public final short POS3 = 3;
/** The constant Pos4. */
public final short POS4 = 4;
/**
* Instantiates a new CSS style hierarchy using a CSSStyle only -> Priority = 0, Type = NA
*
* @param style the style
*/
public CSSStyleHierarchy(CSSStyle style) {
this.style = style;
this.priority = 0;
this.type = NA;
}
/**
* Instantiates a new CSS style hierarchy using the type -> Priority = 0
*
* @param style the style
* @param type the type
*/
public CSSStyleHierarchy(CSSStyle style, short type) {
this.style = style;
this.priority = 0;
this.type = type;
}
/**
* Instantiates a new CSS style hierarchy, using a different CSSStyleHierarchy
*
* @param sh the CSSStyleHierarchy to start with
* @param priority the priority
* @param type the type
*/
public CSSStyleHierarchy(CSSStyleHierarchy sh, int priority, short type) {
this.style = sh.getStyle();
this.priority = priority;
this.type = type;
}
/** The priority. */
int priority;
/** The style. */
CSSStyle style;
/** The type. */
short type;
/**
* Instantiates a new CSS style hierarchy, using a CSSStyle and a priority
*
* @param style the style
* @param priority the priority
*/
public CSSStyleHierarchy(CSSStyle style, int priority) {
this.style = style;
this.priority = priority;
}
/**
* Gets the priority.
*
* @return the priority
*/
public int getPriority() {
return priority;
}
/**
* Sets the priority.
*
* @param priority the new priority
*/
public void setPriority(int priority) {
this.priority = priority;
}
/**
* Gets the style.
*
* @return the style
*/
public CSSStyle getStyle() {
return style;
}
/**
* Sets the style.
*
* @param style the new style
*/
public void setStyle(CSSStyle style) {
this.style = style;
}
/**
* Gets the type.
*
* @return the type
*/
public short getType() {
return type;
}
/**
* Sets the type.
*
* @param type the new type
*/
public void setType(short type) {
this.type = type;
}
/* (non-Javadoc)
* @see java.lang.Comparable#compareTo(java.lang.Object)
*/
public int compareTo(Object arg0) {
if (arg0 instanceof CSSStyleHierarchy) {
CSSStyleHierarchy cs = (CSSStyleHierarchy) arg0;
if (cs.getType() != (this.getType())) {
if ((this.getType()) < (cs.getType())) {
return -1;
} else if ((this.getType()) > (cs.getType())) {
return 1;
} else {
return 0;
}
} else {
if (this.getPriority() < cs.getPriority()) {
return -1;
} else if (this.getPriority() > cs.getPriority()) {
return 1;
} else {
return 0;
}
}
}
return 0;
}
}