/* AuAppendChild.java
Purpose:
Description:
History:
Thu Oct 13 11:33:16 2005, Created by tomyeh
Copyright (C) 2005 Potix Corporation. All Rights Reserved.
{{IS_RIGHT
This program is distributed under LGPL Version 2.1 in the hope that
it will be useful, but WITHOUT ANY WARRANTY.
}}IS_RIGHT
*/
package org.zkoss.zk.au.out;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import org.zkoss.json.JavaScriptValue;
import org.zkoss.zk.au.AuResponse;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Page;
/**
* A response to insert an unparsed HTML as the last child of
* the specified component at the client.
*
* <p>data[0]: the uuid of the component/page as the parent<br>
* data[1]: the unparsed HTML (a.k.a., content)
*
* @author tomyeh
* @since 3.0.0
*/
public class AuAppendChild extends AuResponse {
/**
* @param contents a collection of contents (in String objects).
* Each content is the output of a component.
* @since 5.0.7
*/
public AuAppendChild(Component comp, Collection<String> contents) {
super("addChd", comp, toArray(comp.getUuid(), contents));
}
/**
* @param contents a collection of contents (in String objects).
* Each content is the output of a component or a page.
* @since 5.0.7
*/
public AuAppendChild(Page page, Collection<String> contents) {
super("addChd", page, toArray(page.getUuid(), contents));
}
/** Converts the contents (a collection of strings) to an array of JavaScriptValue. */
/*package*/ static Object[] toArray(String uuid, Collection<String> contents) {
final List<Object> list = new LinkedList<Object>();
list.add(uuid);
stringToJS(contents, list);
return list.toArray(new Object[list.size()]);
}
/** Converts the contents (a collection of strings) to an array of JavaScriptValue. */
private static void stringToJS(Collection<String> contents, Collection<Object> result) {
for (String content : contents)
result.add(new JavaScriptValue(content));
}
}