001package org.gwtbootstrap3.client.ui.base;
002
003/*
004 * #%L
005 * GwtBootstrap3
006 * %%
007 * Copyright (C) 2013 GwtBootstrap3
008 * %%
009 * Licensed under the Apache License, Version 2.0 (the "License");
010 * you may not use this file except in compliance with the License.
011 * You may obtain a copy of the License at
012 * 
013 *      http://www.apache.org/licenses/LICENSE-2.0
014 * 
015 * Unless required by applicable law or agreed to in writing, software
016 * distributed under the License is distributed on an "AS IS" BASIS,
017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
018 * See the License for the specific language governing permissions and
019 * limitations under the License.
020 * #L%
021 */
022
023import org.gwtbootstrap3.client.ui.base.helper.StyleHelper;
024import org.gwtbootstrap3.client.ui.base.mixin.IdMixin;
025import org.gwtbootstrap3.client.ui.base.mixin.PullMixin;
026import org.gwtbootstrap3.client.ui.constants.DeviceSize;
027import org.gwtbootstrap3.client.ui.constants.Pull;
028
029import com.google.gwt.dom.client.Element;
030import com.google.gwt.dom.client.Style;
031import com.google.gwt.editor.client.IsEditor;
032import com.google.gwt.editor.client.LeafValueEditor;
033import com.google.gwt.editor.ui.client.adapters.HasTextEditor;
034import com.google.gwt.user.client.ui.HasHTML;
035import com.google.gwt.user.client.ui.Widget;
036
037/**
038 * Base class for {@link Widget} that just contains text.
039 *
040 * @author Sven Jacobs
041 * @author Joshua Godi
042 */
043public abstract class AbstractTextWidget extends Widget implements HasId, HasHTML, HasResponsiveness, HasInlineStyle, IsEditor<LeafValueEditor<String>>, HasPull {
044    private final PullMixin<AbstractTextWidget> pullMixin = new PullMixin<AbstractTextWidget>(this);
045    private final IdMixin<AbstractTextWidget> idMixin = new IdMixin<AbstractTextWidget>(this);
046    private LeafValueEditor<String> editor;
047
048    protected AbstractTextWidget(final Element element) {
049        setElement(element);
050    }
051
052    @Override
053    public void setId(final String id) {
054        idMixin.setId(id);
055    }
056
057    @Override
058    public String getId() {
059        return idMixin.getId();
060    }
061
062    @Override
063    public void setText(final String text) {
064        getElement().setInnerText(text);
065    }
066
067    @Override
068    public String getText() {
069        return getElement().getInnerText();
070    }
071
072    @Override
073    public String getHTML() {
074        return getElement().getInnerHTML();
075    }
076
077    @Override
078    public void setHTML(final String html) {
079        getElement().setInnerHTML(html);
080    }
081
082    @Override
083    public void setVisibleOn(final DeviceSize deviceSize) {
084        StyleHelper.setVisibleOn(this, deviceSize);
085    }
086
087    @Override
088    public void setHiddenOn(final DeviceSize deviceSize) {
089        StyleHelper.setHiddenOn(this, deviceSize);
090    }
091
092    @Override
093    public void setMarginTop(final double margin) {
094        getElement().getStyle().setMarginTop(margin, Style.Unit.PX);
095    }
096
097    @Override
098    public void setMarginLeft(final double margin) {
099        getElement().getStyle().setMarginLeft(margin, Style.Unit.PX);
100    }
101
102    @Override
103    public void setMarginRight(final double margin) {
104        getElement().getStyle().setMarginRight(margin, Style.Unit.PX);
105    }
106
107    @Override
108    public void setMarginBottom(final double margin) {
109        getElement().getStyle().setMarginBottom(margin, Style.Unit.PX);
110    }
111
112    @Override
113    public void setPaddingTop(final double padding) {
114        getElement().getStyle().setPaddingTop(padding, Style.Unit.PX);
115    }
116
117    @Override
118    public void setPaddingLeft(final double padding) {
119        getElement().getStyle().setPaddingLeft(padding, Style.Unit.PX);
120    }
121
122    @Override
123    public void setPaddingRight(final double padding) {
124        getElement().getStyle().setPaddingRight(padding, Style.Unit.PX);
125    }
126
127    @Override
128    public void setPaddingBottom(final double padding) {
129        getElement().getStyle().setPaddingBottom(padding, Style.Unit.PX);
130    }
131
132    /**
133     * {@inheritDoc}
134     */
135    @Override
136    public void setColor(String color) {
137        getElement().getStyle().setColor(color);
138    }
139
140    @Override
141    public LeafValueEditor<String> asEditor() {
142        if (editor == null) {
143            editor = HasTextEditor.of(this);
144        }
145        return editor;
146    }
147
148    /**
149     * {@inheritDoc}
150     */
151    @Override
152    public void setPull(final Pull pull) {
153        pullMixin.setPull(pull);
154    }
155
156    /**
157     * {@inheritDoc}
158     */
159    @Override
160    public Pull getPull() {
161        return pullMixin.getPull();
162    }
163}