/*******************************************************************************
* 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 java.util.*;
public class StylableElement implements Element {
private Map attributes = new HashMap();
private List classes = new ArrayList();
private List pseudoClasses = new ArrayList();
private String name;
private Element parent;
public StylableElement( final String name ) {
this( null, name );
}
public StylableElement( final Element parent, final String name ) {
this.name = name;
this.parent = parent;
}
public boolean hasName( final String value ) {
return name == null || name.equals( value );
}
public Element getParent() {
return parent;
}
public boolean hasClass( final String value ) {
return value != null && classes.contains( value );
}
public boolean hasPseudoClass( final String value ) {
return value != null && pseudoClasses.contains( value );
}
public boolean hasAttribute( final String name ) {
String value = ( String )attributes.get( name );
return value != null && value.length() > 0;
}
public String getAttribute( final String name ) {
return ( String )attributes.get( name );
}
public void setClass( final String className ) {
if( className != null ) {
classes.add( className );
}
}
public void resetClass( final String className ) {
if( className != null && classes.contains( className ) ) {
classes.remove( className );
}
}
public void setPseudoClass( final String pseudoName ) {
if( pseudoName != null ) {
pseudoClasses.add( pseudoName );
}
}
public void resetPseudoClass( final String pseudoName ) {
if( pseudoName != null && pseudoClasses.contains( pseudoName ) ) {
pseudoClasses.remove( pseudoName );
}
}
public void setAttribute( final String name, final String value ) {
if( name != null ) {
if( value != null ) {
attributes.put( name, value );
} else {
attributes.remove( name );
}
}
}
public void setAttribute( final String name ) {
setAttribute( name, "true" );
}
public void resetAttribute( final String name ) {
setAttribute( name, null );
}
}