001    // Copyright Apr 21, 2006 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    package org.apache.tapestry.dojo;
015    
016    import org.apache.tapestry.IDirectEvent;
017    import org.apache.tapestry.IMarkupWriter;
018    import org.apache.tapestry.IRequestCycle;
019    
020    
021    /**
022     * Represents a tapestry component that delegates part of its
023     * functionality / UI to a corresponding browser <a href="http://dojotoolkit.org">dojo</a>
024     * widget instance.
025     * 
026     * @author jkuhnert
027     */
028    public interface IWidget extends IDirectEvent
029    {
030        /**
031         * Similar to the semantics involved with normal <code>AbstractComponent.renderComponent</code>
032         * method writing component state to the output stream.
033         * 
034         * @param writer
035         *          The markup writer used to write any output.
036         * @param cycle
037         *          The corresponding request.
038         */
039        void renderWidget(IMarkupWriter writer, IRequestCycle cycle);
040    }