1 /* 2 * This file is part of the Echo Web Application Framework (hereinafter "Echo"). 3 * Copyright (C) 2002-2005 NextApp, Inc. 4 * 5 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 6 * 7 * The contents of this file are subject to the Mozilla Public License Version 8 * 1.1 (the "License"); you may not use this file except in compliance with 9 * the License. You may obtain a copy of the License at 10 * http://www.mozilla.org/MPL/ 11 * 12 * Software distributed under the License is distributed on an "AS IS" basis, 13 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 14 * for the specific language governing rights and limitations under the 15 * License. 16 * 17 * Alternatively, the contents of this file may be used under the terms of 18 * either the GNU General Public License Version 2 or later (the "GPL"), or 19 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), 20 * in which case the provisions of the GPL or the LGPL are applicable instead 21 * of those above. If you wish to allow use of your version of this file only 22 * under the terms of either the GPL or the LGPL, and not to allow others to 23 * use your version of this file under the terms of the MPL, indicate your 24 * decision by deleting the provisions above and replace them with the notice 25 * and other provisions required by the GPL or the LGPL. If you do not delete 26 * the provisions above, a recipient may use your version of this file under 27 * the terms of any one of the MPL, the GPL or the LGPL. 28 */ 29 30 package nextapp.echo2.webcontainer; 31 32 import nextapp.echo2.app.Component; 33 import nextapp.echo2.app.update.ServerComponentUpdate; 34 35 import org.w3c.dom.Node; 36 37 /** 38 * An optional interface which may be implemented by 39 * <code>ComponentSynchronizePeer</code>s that support rendering directly 40 * to HTML. 41 */ 42 public interface DomUpdateSupport { 43 44 /** 45 * Renders the component in its entirety as a child of the provided 46 * parent <code>Element</code>. The implementation should additionally 47 * render any child components, either by invoking their 48 * <code>renderHtml()</code> methods if their peers also implement 49 * <code>DomUpdateSupport</code> or by invoking their 50 * <code>ComponentSynchronizePeer.renderAdd()</code> methods if they do 51 * not. 52 * <p> 53 * The implementation must also perform any non-HTML-rendering operations 54 * which are performed in the <code>ComponentSynchronizePeer.renderAdd()</code> 55 * method, e.g., adding message parts that registering event listeners on 56 * the client. 57 * 58 * @param rc the relevant <code>RenderContext</code> 59 * @param update the <code>ServerComponentUpdate</code> for which this 60 * rendering is being performed 61 * @param parentNode the parent DOM node to which this child should 62 * add HTML code 63 * @param component the <code>Component</code> to be rendered 64 */ 65 public void renderHtml(RenderContext rc, ServerComponentUpdate update, Node parentNode, Component component); 66 } 67