001    package net.sf.tacos.seam;
002    
003    import java.util.Iterator;
004    import java.util.List;
005    
006    import org.apache.tapestry.AbstractComponent;
007    import org.apache.tapestry.IMarkupWriter;
008    import org.apache.tapestry.IRequestCycle;
009    import org.apache.tapestry.html.Shell;
010    
011    public abstract class Remoting extends AbstractComponent {
012            /**
013             * {@inheritDoc}
014             */
015            protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle) {
016            writer.begin(getTemplateTagName());
017            renderIdAttribute(writer, cycle);
018            renderInformalParameters(writer, cycle);
019            renderBody(writer, cycle);
020            writer.end();
021            }
022            
023            protected void prepareForRender(IRequestCycle cycle) {
024                    super.prepareForRender(cycle);
025                    if (!cycle.isRewinding()){
026                            Shell shell = Shell.get(cycle);
027                            shell.includeAdditionalContent(
028                                            "<script src=\"seam/resource/remoting/resource/remote.js\" type=\"text/javascript\"></script>");
029                            StringBuffer include = new StringBuffer();
030                            Iterator<String> it = getInclude().iterator();
031                            while (it.hasNext()) {
032                                    include.append(it.next());
033                                    if(it.hasNext())
034                                            include.append("&");
035                                    
036                            }
037                            shell.includeAdditionalContent(
038                                            "<script src=\"seam/resource/remoting/interface.js?"+include+"\" type=\"text/javascript\"></script>");
039                    }
040            }
041            
042            public abstract List<String> getInclude();
043    
044    }