001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one
003     * or more contributor license agreements.  See the NOTICE file
004     * distributed with this work for additional information
005     * regarding copyright ownership.  The ASF licenses this file
006     * to you under the Apache License, Version 2.0 (the
007     * "License"); you may not use this file except in compliance
008     * with the License.  You may obtain a copy of the License at
009     *
010     *   http://www.apache.org/licenses/LICENSE-2.0
011     *
012     * Unless required by applicable law or agreed to in writing,
013     * software distributed under the License is distributed on an
014     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015     * KIND, either express or implied.  See the License for the
016     * specific language governing permissions and limitations
017     * under the License.
018     */
019    
020    package org.apache.myfaces.tobago.taglib.component;
021    
022    import org.apache.myfaces.tobago.apt.annotation.Facet;
023    import org.apache.myfaces.tobago.apt.annotation.Tag;
024    import org.apache.myfaces.tobago.apt.annotation.TagAttribute;
025    import org.apache.myfaces.tobago.apt.annotation.UIComponentTag;
026    import org.apache.myfaces.tobago.apt.annotation.UIComponentTagAttribute;
027    import org.apache.myfaces.tobago.taglib.decl.HasBinding;
028    import org.apache.myfaces.tobago.taglib.decl.HasDimension;
029    import org.apache.myfaces.tobago.taglib.decl.HasId;
030    import org.apache.myfaces.tobago.taglib.decl.HasLabel;
031    import org.apache.myfaces.tobago.taglib.decl.HasState;
032    
033    /**
034     * Renders a page element.
035     */
036    @Tag(name = "page")
037    @UIComponentTag(
038        uiComponent = "org.apache.myfaces.tobago.component.UIPage",
039        rendererType = "Page",
040        facets =
041            {@Facet(name = "action", description = "Contains an instance of UICommand (tc:command) for an auto-action",
042                    allowedChildComponenents = "org.apache.myfaces.tobago.Command"),
043             @Facet(name = "resizeAction", 
044                    description ="Contains an instance of UICommand (tc:command) or a UIForm (tc:form) with a UICommand" 
045                        + " for a resize-action",
046                    allowedChildComponenents = {"org.apache.myfaces.tobago.Command", "org.apache.myfaces.tobago.Form"}),
047             @Facet(name = "menuBar", description = "Menubar"),
048             @Facet(name = "layout", description = "Contains an instance of UILayout")})
049    
050    public interface PageTagDeclaration extends TobagoBodyTagDeclaration, HasLabel, HasId, HasDimension, HasBinding,
051        HasState {
052      /**
053       * Possible values for doctype are:
054       * <dl>
055       * <dt>strict</dt><dd>HTML 4.01 Strict DTD</dd>
056       * <dt>loose</dt><dd>HTML 4.01 Transitional DTD</dd>
057       * <dt>frameset</dt><dd>HTML 4.01 Frameset DTD</dd>
058       * </dl>
059       * All other values are ignored and no DOCTYPE is set.
060       */
061      @TagAttribute
062      @UIComponentTagAttribute(defaultValue = "loose")
063      @Deprecated
064      void setDoctype(String doctype);
065    
066      /**
067       * Contains the id of the component wich should have the focus after
068       * loading the page.
069       * Set to emtpy string for disabling setting of focus.
070       * Default (null) enables the "auto focus" feature.
071       */
072      @TagAttribute
073      @UIComponentTagAttribute()
074      void setFocusId(String focusId);
075    
076      /**
077       * Absolute URL to an image or image name to lookup in tobago resource path
078       * representing the application. In HTML it is used as a favicon.
079       */
080      @TagAttribute
081      @UIComponentTagAttribute()
082      void setApplicationIcon(String icon);
083    
084    }