001
002package org.opencms.ui.client;
003
004import com.google.gwt.dom.client.Element;
005import com.google.gwt.user.client.DOM;
006import com.google.gwt.user.client.ui.SimplePanel;
007import com.google.gwt.user.client.ui.Widget;
008
009/**
010 * Client-side implementation for the ExternalLayout addon. A simple, single-component panel
011 * that renders the contained component in the given element.<p>
012 *
013 * @author Risto Yrjänä / Vaadin Ltd.
014 */
015public class CmsExternalLayout extends SimplePanel {
016
017    /** The CSS class name. */
018    private static final String CLASSNAME = "v-externallayout";
019
020    /** The target element. */
021    private Element m_renderTargetElement;
022
023    /**
024     * Constructor.<p>
025     */
026    public CmsExternalLayout() {
027
028        m_renderTargetElement = getElement();
029    }
030
031    /**
032     * Returns the target element.<p>
033     *
034     * @return the target element
035     */
036    public Element getRenderTargetElement() {
037
038        return m_renderTargetElement;
039    }
040
041    /**
042     * Sets the target element.<p>
043     *
044     * @param renderTargetElement the target element
045     */
046    public void setRenderTargetElement(Element renderTargetElement) {
047
048        this.m_renderTargetElement = renderTargetElement;
049        renderTargetElement.setClassName(CLASSNAME);
050    }
051
052    /**
053     * This is overridden so that {@link #setWidget(Widget)} uses the specified
054     * external element.
055     */
056    @Override
057    @SuppressWarnings("deprecation")
058    //have to use old Element here because of superclass
059    protected com.google.gwt.user.client.Element getContainerElement() {
060
061        return DOM.asOld(getRenderTargetElement());
062    }
063}