001 // Copyright 2004, 2005 The Apache Software Foundation 002 // 003 // Licensed under the Apache License, Version 2.0 (the "License"); 004 // you may not use this file except in compliance with the License. 005 // You may obtain a copy of the License at 006 // 007 // http://www.apache.org/licenses/LICENSE-2.0 008 // 009 // Unless required by applicable law or agreed to in writing, software 010 // distributed under the License is distributed on an "AS IS" BASIS, 011 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 012 // See the License for the specific language governing permissions and 013 // limitations under the License. 014 015 package org.apache.tapestry.services; 016 017 import org.apache.tapestry.IComponent; 018 import org.apache.tapestry.IRequestCycle; 019 import org.apache.tapestry.parse.ComponentTemplate; 020 021 /** 022 * A source of localized HTML templates for components. 023 * The cache is the means of access for components to load thier templates, 024 * which they need not do until just before rendering. 025 * 026 * <p>The template cache must be able to locate and parse templates as needed. 027 * It may maintain templates in memory. 028 * 029 * @author Howard Ship 030 */ 031 032 public interface TemplateSource 033 { 034 /** 035 * Name of an {@link org.apache.tapestry.IAsset} of a component that provides the template 036 * for the asset. This overrides the default (that the template is in 037 * the same directory as the specification). This allows 038 * pages or component templates to be located properly, relative to static 039 * assets (such as images and stylesheets). 040 * 041 * @since 2.2 042 * 043 */ 044 045 String TEMPLATE_ASSET_NAME = "$template"; 046 047 /** 048 * Name of the component parameter that will be automatically bound to 049 * the HTML tag that is used to insert the component in the parent template. 050 * If the parent component does not have a template (i.e. it extends 051 * AbstractComponent, not BaseComponent), then this parameter is bound to null. 052 * 053 * @since 3.0 054 * @deprecated To be removed in 4.2. Use the new {@link IComponent#getTemplateTagName()} method 055 * instead. 056 */ 057 058 String TEMPLATE_TAG_PARAMETER_NAME = "templateTag"; 059 060 /** 061 * Locates the template for the component. 062 * 063 * @param cycle The request cycle loading the template; this is required 064 * in some cases when the template is loaded from an {@link org.apache.tapestry.IAsset}. 065 * @param component The component for which a template should be loaded. 066 */ 067 068 ComponentTemplate getTemplate(IRequestCycle cycle, IComponent component); 069 070 }