blob: 8c4230ace425e1c97c611e1dd56d056ec1067d73 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012 VMware Inc.
* 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:
* VMware Inc. - initial contribution
*******************************************************************************/
package org.eclipse.virgo.management.console.stubs.types;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.virgo.management.console.stubs.objects.Util;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Function;
import org.mozilla.javascript.ScriptableObject;
/**
*/
public class Element extends ParentStub {
private static final long serialVersionUID = 1L;
private static List<String> CONSTRUCTOR_ARGUMENT_TRACE = new ArrayList<String>();
private static Element LAST_REPLACEMENT;
private static Element LAST_APPENDED;
private static Function READY;
private final String constructorArgument;
private List<String> CLASSES = new ArrayList<String>();
private Map<String, String> CSS = new HashMap<String, String>();
private boolean isSubmitted;
private static int CLICK_COUNT = 0;
private Element contentDocument;
/**
* Prototype constructor
*/
public Element() {
this.constructorArgument = null;
}
/**
* JavaScript Constructor
*/
public Element(ScriptableObject constructorArgument) {
this.constructorArgument = ((String) Context.jsToJava(constructorArgument, String.class));
CONSTRUCTOR_ARGUMENT_TRACE.add(this.constructorArgument);
}
public void jsFunction_empty(){
}
public void jsFunction_ready(Function readyFunction){
READY = readyFunction;
}
public ScriptableObject jsFunction_replaceWith(Element replacement){
LAST_REPLACEMENT = replacement;
return this;
}
public ScriptableObject jsFunction_append(Element toAppend){
LAST_APPENDED = toAppend;
return this;
}
public ScriptableObject jsFunction_addClass(String newClass){
CLASSES.add(newClass);
return this;
}
public boolean jsFunction_hasClass(String className){
return CLASSES.contains(className);
}
public ScriptableObject jsFunction_removeClass(String className) {
CLASSES.remove(className);
return this;
}
public ScriptableObject jsFunction_text(String text) {
return this;
}
public void jsFunction_attr(String attr) {
}
public void jsFunction_prop(String prop){
}
public void jsFunction_data(String name, String value){
}
public void jsFunction_click() {
CLICK_COUNT++;
}
public void jsFunction_load() {
}
public void jsFunction_submit() {
this.isSubmitted = true;
}
public ScriptableObject jsFunction_children(String filter) {
return this;
}
public ScriptableObject jsFunction_css(String key, String value) {
CSS.put(key, value);
return this;
}
public void jsFunction_slideToggle(int time){
assertEquals(Util.fxTime, time);
}
public Element jsFunction_contentDocument(){
return this.contentDocument;
}
// Test helper methods
public static Function getReadyFunction(){
return READY;
}
public List<String> getClasses(){
return CLASSES;
}
public static List<String> getConstructorArgumentTrace() {
return CONSTRUCTOR_ARGUMENT_TRACE;
}
public static Element getLastReplacement() {
return LAST_REPLACEMENT;
}
public static Element getLastAppended() {
return LAST_APPENDED;
}
public String getConstructorArgument() {
return this.constructorArgument;
}
public boolean isSubmitted() {
return this.isSubmitted;
}
public static int isClicked() {
return CLICK_COUNT;
}
public static void resetClicked() {
CLICK_COUNT = 0;
}
public void setContentDocument(Element contentDocument){
this.contentDocument = contentDocument;
}
}