package com.applang; import java.io.StringWriter; import java.io.Writer; import org.apache.velocity.context.InternalContextAdapter; import org.apache.velocity.runtime.parser.node.ASTBlock; import org.apache.velocity.runtime.parser.node.Node; import static com.applang.Util.*; public class SpinnerDirective extends PromptDirective { public SpinnerDirective() { super(); } public String getName() { return "spinner"; } public int getType() { return BLOCK; } public boolean render(InternalContextAdapter context, Writer writer, Node node) { if (!getArguments(context, node)) { return false; } if (notAvailable(0, values)) { values = getBlockContent(context, node); } return getAnswer(context, Dialogs.DIALOG_LIST); } private String[] getBlockContent(InternalContextAdapter context, Node node) { for(int i=0; i<node.jjtGetNumChildren(); i++) { if (node.jjtGetChild(i) != null ) { if(node.jjtGetChild(i) instanceof ASTBlock) { try { //reading block content and rendering it StringWriter blockContent = new StringWriter(); node.jjtGetChild(i).render(context, blockContent); return blockContent.toString().split("\n"); } catch (Exception e) { log.error(TAG, e); } break; } } } return null; } }