/*******************************************************************************
* Copyright (c) 2009, 2014 EclipseSource and others. 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:
* EclipseSource - initial API and implementation
* Stefan Winkler <stefan@winklerweb.net> - Bug 419482, 419377
* Jeanderson Candido <http://jeandersonbc.github.io> - Bug 444070
******************************************************************************/
package org.eclipse.e4.ui.tests.css.core.util;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.e4.ui.css.core.dom.ElementAdapter;
import org.eclipse.e4.ui.css.core.engine.CSSEngine;
import org.w3c.dom.DOMException;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
/**
* Dummy DOM Element implementation for testing.
*/
public class TestElement extends ElementAdapter {
private final String typeName;
private String className;
private String id;
private Map<String, String> attrs = new HashMap<String, String>();
private Node parentNode = null;
private List<Node> children = null;
public TestElement(String type, CSSEngine engine) {
super(null, engine);
this.typeName = type;
}
public TestElement(String type, TestElement parent, CSSEngine engine) {
this(type, engine);
this.parentNode = parent;
parent.appendChild(this);
}
public void setClass(String className) {
this.className = className;
}
public void setId(String id) {
this.id = id;
}
@Override
public void setAttribute(String name, String value) {
attrs.put(name, value);
}
@Override
public String getAttribute(String name) {
String value = attrs.get(name);
return value == null ? "" : value;
}
@Override
public boolean hasAttribute(String name) {
return attrs.containsKey(name);
}
@Override
public String getLocalName() {
return typeName;
}
@Override
public NodeList getChildNodes() {
if (children == null) {
return null;
}
return new NodeList() {
@Override
public int getLength() {
return children.size();
}
@Override
public Node item(int index) {
return children.get(index);
}
};
}
@Override
public String getNamespaceURI() {
return null;
}
@Override
public Node getParentNode() {
return parentNode;
}
@Override
public String getCSSClass() {
return className;
}
@Override
public String getCSSId() {
return id;
}
@Override
public String getCSSStyle() {
return null;
}
@Override
public Node appendChild(Node newChild) throws DOMException {
if (children == null) {
children = new ArrayList<Node>();
}
children.add(newChild);
return newChild;
}
}