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 import java.util.Collections;
019 import java.util.HashMap;
020 import java.util.Map;
021
022 /**
023 * Defines a contained component. This includes the information needed to get the contained
024 * component's specification, as well as any bindings for the component.
025 *
026 * @author Howard Lewis Ship
027 */
028
029 public class ContainedComponent extends LocatablePropertyHolder implements IContainedComponent
030 {
031 private static final int MAP_SIZE = 3;
032
033 protected Map _bindings;
034
035 private String _type;
036
037 private String _copyOf;
038
039 private boolean _inheritInformalParameters;
040
041 /** @since 4.0 */
042 private String _propertyName;
043
044 /**
045 * Returns the named binding, or null if the binding does not exist.
046 */
047
048 public IBindingSpecification getBinding(String name)
049 {
050 if (_bindings == null)
051 return null;
052
053 return (IBindingSpecification) _bindings.get(name);
054 }
055
056 /**
057 * Returns an umodifiable <code>Collection</code> of Strings, each the name of one binding for
058 * the component.
059 */
060
061 public Collection getBindingNames()
062 {
063 if (_bindings == null)
064 return Collections.EMPTY_LIST;
065
066 return Collections.unmodifiableCollection(_bindings.keySet());
067 }
068
069 public String getType()
070 {
071 return _type;
072 }
073
074 public void setBinding(String name, IBindingSpecification spec)
075 {
076 if (_bindings == null)
077 _bindings = new HashMap(MAP_SIZE);
078
079 _bindings.put(name, spec);
080 }
081
082 public void setType(String value)
083 {
084 _type = value;
085 }
086
087 /**
088 * Sets the String Id of the component being copied from. For use by IDE tools like Spindle.
089 *
090 * @since 1.0.9
091 */
092
093 public void setCopyOf(String id)
094 {
095 _copyOf = id;
096 }
097
098 /**
099 * Returns the id of the component being copied from. For use by IDE tools like Spindle.
100 *
101 * @since 1.0.9
102 */
103
104 public String getCopyOf()
105 {
106 return _copyOf;
107 }
108
109 /**
110 * Returns whether the contained component will inherit the informal parameters of its parent.
111 *
112 * @since 3.0
113 */
114 public boolean getInheritInformalParameters()
115 {
116 return _inheritInformalParameters;
117 }
118
119 /**
120 * Sets whether the contained component will inherit the informal parameters of its parent.
121 *
122 * @since 3.0
123 */
124 public void setInheritInformalParameters(boolean value)
125 {
126 _inheritInformalParameters = value;
127 }
128
129 /** @since 4.0 */
130 public String getPropertyName()
131 {
132 return _propertyName;
133 }
134
135 /** @since 4.0 */
136 public void setPropertyName(String propertyName)
137 {
138 _propertyName = propertyName;
139 }
140 }