001 // Copyright 2010, 2011 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.tapestry5.annotations;
016
017 import org.apache.tapestry5.ioc.annotations.UseWith;
018 import org.apache.tapestry5.services.javascript.JavaScriptStack;
019 import org.apache.tapestry5.services.javascript.JavaScriptSupport;
020
021 import java.lang.annotation.*;
022
023 import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
024
025 /**
026 * Annotations to control the importing of JavaScript stacks and libraries as well as stylesheets. This annotation may
027 * be placed on a class, in which case importing will occur as part of the {@link SetupRender} render phase.
028 * Alternately, the annotation maybe placed on any method (though typically it will be placed on a render phase
029 * method) and the import operations will be associated of that method.
030 * <p/>
031 * Assets are localized during the {@link org.apache.tapestry5.runtime.PageLifecycleAdapter#containingPageDidLoad()} lifecycle
032 * method.
033 *
034 * @see JavaScriptSupport
035 * @since 5.2.0
036 */
037 @Target(
038 {ElementType.TYPE, ElementType.METHOD})
039 @Retention(RetentionPolicy.RUNTIME)
040 @Documented
041 @UseWith(
042 {COMPONENT, MIXIN, PAGE})
043 public @interface Import
044 {
045 /**
046 * JavaScript Stacks to import. Stacks are imported before individual libraries. Note that
047 * stacks themselves may have {@linkplain JavaScriptStack#getStacks() dependencies on other
048 * stacks}.
049 *
050 * @see JavaScriptStack
051 * @see JavaScriptSupport#importStack(String)
052 */
053 String[] stack() default {};
054
055 /**
056 * JavaScript libraries to import. Each value is an asset path; symbols in each path are expanded. The library may
057 * be localized.
058 *
059 * @see JavaScriptSupport#importJavaScriptLibrary(org.apache.tapestry5.Asset)
060 */
061 String[] library() default {};
062
063 /**
064 * Stylesheets to import. Each value is an asset path; symbols in each path are expanded. The stylesheet may be
065 * localized. The stylesheet is imported with no options.
066 *
067 * @see JavaScriptSupport#importStylesheet(org.apache.tapestry5.Asset)
068 */
069 String[] stylesheet() default {};
070 }