blob: 9cf49a7590ed790dcdd32145dbe6e51374252c1f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008 Innoopract Informationssysteme GmbH.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Innoopract Informationssysteme GmbH - initial API and implementation
******************************************************************************/
package org.eclipse.rwt.internal.theme.css;
import org.w3c.css.sac.CombinatorCondition;
import org.w3c.css.sac.Condition;
public class AndConditionImpl
implements CombinatorCondition, ConditionExt
{
private final Condition first;
private final Condition second;
public AndConditionImpl( final Condition first, final Condition second ) {
this.first = first;
this.second = second;
}
public Condition getFirstCondition() {
return first;
}
public Condition getSecondCondition() {
return second;
}
public short getConditionType() {
return SAC_AND_CONDITION;
}
public boolean matches( final Element element ) {
ElementMatcher firstMatcher = ( ElementMatcher )first;
ElementMatcher secondMatcher = ( ElementMatcher )second;
return firstMatcher.matches( element ) && secondMatcher.matches( element );
}
public int getSpecificity() {
Specific specificFirst = ( Specific )first;
Specific specificSecond = ( Specific )second;
return specificFirst.getSpecificity() + specificSecond.getSpecificity();
}
public String[] getClasses() {
String[] classes1 = ( ( ConditionExt )first ).getClasses();
String[] classes2 = ( ( ConditionExt )second ).getClasses();
String[] result = null;
if( classes1 == null ) {
result = classes2;
} else if( classes2 == null ) {
result = classes1;
} else {
result = new String[ classes1.length + classes2.length ];
System.arraycopy( classes1, 0, result, 0, classes1.length );
System.arraycopy( classes2, 0, result, classes1.length, classes2.length );
}
return result;
}
public String toString() {
return first.toString() + second.toString();
}
}