001 /*
002 * Copyright 2012 GWT-Bootstrap
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package com.github.gwtbootstrap.client.ui.base;
017
018 import com.github.gwtbootstrap.client.ui.constants.Device;
019 import com.google.gwt.user.client.ui.HTMLPanel;
020
021 /**
022 * Widget with support for HTML.
023 *
024 * <p>
025 * When extendind this class, the child class should always expose a constructor
026 * with a String argument. This argument is HTML text. The constructor is used
027 * by the {@link com.google.gwt.uibinder.elementparsers.HTMLPanelParser
028 * HTMLPanelParser} to parse UiBinder XML.
029 * </p>
030 * <h3>Child Class Constructor Example</h3>
031 *
032 * <pre>
033 * public ChildPanel extends HtmlWidget {
034 * public ChildPanel(String html) {
035 * super("label", html); //"label" is the HTML tag used for the child class.
036 * }
037 * }
038 * </pre>
039 *
040 * @since 2.0.4.0
041 *
042 * @author ohashi keisuke
043 */
044 public class HtmlWidget extends HTMLPanel implements HasStyle, IsResponsive {
045
046 /**
047 * Creates an empty widget.
048 *
049 * @param tag
050 * the tag of the root element
051 */
052 protected HtmlWidget(String tag) {
053 super(tag, "");
054 }
055
056 /**
057 * Creates an HTML panel whose root element has the given tag, and with the
058 * specified HTML contents. Any element within this HTML that has a
059 * specified id can contain a child widget.
060 *
061 * @param tag
062 * the tag of the root element
063 * @param html
064 * the panel's HTML
065 */
066 public HtmlWidget(String tag, String html) {
067 super(tag, html);
068 }
069
070 /**
071 * {@inheritDoc}
072 */
073 public void setShowOn(Device device) {
074 ResponsiveHelper.setShowOn(this, device);
075 }
076
077 /**
078 * {@inheritDoc}
079 */
080 public void setHideOn(Device device) {
081 ResponsiveHelper.setHideOn(this, device);
082 }
083
084 /**
085 * {@inheritDoc}
086 */
087 public void setStyle(Style style) {
088 StyleHelper.setStyle(this, style);
089 }
090
091 /**
092 * {@inheritDoc}
093 */
094 public void addStyle(Style style) {
095 StyleHelper.addStyle(this, style);
096 }
097
098 /**
099 * {@inheritDoc}
100 */
101 public void removeStyle(Style style) {
102 StyleHelper.removeStyle(this, style);
103 }
104 }