001 package net.sf.tacos.components.scriptaculous;
002
003 import java.util.HashMap;
004 import java.util.Map;
005
006 import org.apache.tapestry.BaseComponent;
007 import org.apache.tapestry.IMarkupWriter;
008 import org.apache.tapestry.IRequestCycle;
009 import org.apache.tapestry.IScript;
010 import org.apache.tapestry.TapestryUtils;
011 import org.apache.tapestry.components.Block;
012 import org.apache.tapestry.json.JSONObject;
013
014 /**
015 * Creates a diashow of provided {@link Block}s.
016 *
017 * @author Igor Drobiazko
018 *
019 */
020 public abstract class Glider extends BaseComponent {
021
022 /**
023 * {@inheritDoc}
024 */
025 protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle) {
026 writer.begin("div");
027 renderIdAttribute(writer, cycle);
028 renderInformalParameters(writer, cycle);
029 super.renderComponent(writer, cycle);
030
031 writer.end();
032
033 JSONObject json = new JSONObject();
034 json.put("duration", getDuration());
035
036 Map parms = new HashMap();
037 parms.put("props", json.toString());
038 parms.put("component", this);
039
040 getScript().execute(this, cycle, TapestryUtils.getPageRenderSupport(cycle, this), parms);
041 }
042
043 public String getSectionId(int index){
044 return "section"+(++index);
045 }
046
047 public abstract double getDuration();
048
049 /** Injected {@link IScript}. */
050 public abstract IScript getScript();
051
052 }