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.spec;
016    
017    import java.util.Collection;
018    
019    import org.apache.hivemind.Locatable;
020    import org.apache.hivemind.LocationHolder;
021    import org.apache.tapestry.util.IPropertyHolder;
022    
023    /**
024     * Defines a contained component.  This includes the information needed to
025     * get the contained component's specification, as well as any bindings
026     * for the component.
027    
028     * @author glongman@intelligentworks.com
029     */
030    public interface IContainedComponent extends IPropertyHolder, LocationHolder, Locatable, PropertyInjectable
031    {
032        /**
033         *  Returns the named binding, or null if the binding does not
034         *  exist.
035         *
036         **/
037        public abstract IBindingSpecification getBinding(String name);
038        /**
039         *  Returns an umodifiable <code>Collection</code>
040         *  of Strings, each the name of one binding
041         *  for the component.
042         *
043         **/
044        public abstract Collection getBindingNames();
045        public abstract String getType();
046        public abstract void setBinding(String name, IBindingSpecification spec);
047        public abstract void setType(String value);
048        /**
049         *  Sets the String Id of the component being copied from.
050         *  For use by IDE tools like Spindle.
051         * 
052         *  @since 1.0.9
053         **/
054        public abstract void setCopyOf(String id);
055        /**
056         *  Returns the id of the component being copied from.
057         *  For use by IDE tools like Spindle.
058         * 
059         *  @since 1.0.9
060         **/
061        public abstract String getCopyOf();
062    
063        /**
064         * Returns whether the contained component will inherit 
065         * the informal parameters of its parent. 
066         * 
067         * @since 3.0
068         **/
069        public abstract boolean getInheritInformalParameters();
070    
071        /**
072         * Sets whether the contained component will inherit 
073         * the informal parameters of its parent. 
074         * 
075         * @since 3.0
076         */
077        public abstract void setInheritInformalParameters(boolean value);
078        
079        /**
080         * Returns the name of the property to be created for this component,
081         * or null if no property should be created.
082         * 
083         * @since 4.0
084         */
085        public String getPropertyName();
086        
087        /**
088         * 
089         * @since 4.0 
090         */
091        
092        public void setPropertyName(String propertyName);
093    }