blob: 94e03e61d2fb474bf5786e6319bf30f380106eef [file] [log] [blame]
/*
* Copyright 2011 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.gwt.dom.builder.client;
import com.google.gwt.dom.builder.shared.AbstractElementBuilderBase;
import com.google.gwt.dom.builder.shared.AnchorBuilder;
import com.google.gwt.dom.builder.shared.AreaBuilder;
import com.google.gwt.dom.builder.shared.AudioBuilder;
import com.google.gwt.dom.builder.shared.BRBuilder;
import com.google.gwt.dom.builder.shared.BaseBuilder;
import com.google.gwt.dom.builder.shared.BodyBuilder;
import com.google.gwt.dom.builder.shared.ButtonBuilder;
import com.google.gwt.dom.builder.shared.CanvasBuilder;
import com.google.gwt.dom.builder.shared.DListBuilder;
import com.google.gwt.dom.builder.shared.DivBuilder;
import com.google.gwt.dom.builder.shared.ElementBuilder;
import com.google.gwt.dom.builder.shared.ElementBuilderBase;
import com.google.gwt.dom.builder.shared.FieldSetBuilder;
import com.google.gwt.dom.builder.shared.FormBuilder;
import com.google.gwt.dom.builder.shared.FrameBuilder;
import com.google.gwt.dom.builder.shared.FrameSetBuilder;
import com.google.gwt.dom.builder.shared.HRBuilder;
import com.google.gwt.dom.builder.shared.HeadBuilder;
import com.google.gwt.dom.builder.shared.HeadingBuilder;
import com.google.gwt.dom.builder.shared.IFrameBuilder;
import com.google.gwt.dom.builder.shared.ImageBuilder;
import com.google.gwt.dom.builder.shared.InputBuilder;
import com.google.gwt.dom.builder.shared.LIBuilder;
import com.google.gwt.dom.builder.shared.LabelBuilder;
import com.google.gwt.dom.builder.shared.LegendBuilder;
import com.google.gwt.dom.builder.shared.LinkBuilder;
import com.google.gwt.dom.builder.shared.MapBuilder;
import com.google.gwt.dom.builder.shared.MetaBuilder;
import com.google.gwt.dom.builder.shared.OListBuilder;
import com.google.gwt.dom.builder.shared.OptGroupBuilder;
import com.google.gwt.dom.builder.shared.OptionBuilder;
import com.google.gwt.dom.builder.shared.ParagraphBuilder;
import com.google.gwt.dom.builder.shared.ParamBuilder;
import com.google.gwt.dom.builder.shared.PreBuilder;
import com.google.gwt.dom.builder.shared.QuoteBuilder;
import com.google.gwt.dom.builder.shared.ScriptBuilder;
import com.google.gwt.dom.builder.shared.SelectBuilder;
import com.google.gwt.dom.builder.shared.SourceBuilder;
import com.google.gwt.dom.builder.shared.SpanBuilder;
import com.google.gwt.dom.builder.shared.StyleBuilder;
import com.google.gwt.dom.builder.shared.TableBuilder;
import com.google.gwt.dom.builder.shared.TableCaptionBuilder;
import com.google.gwt.dom.builder.shared.TableCellBuilder;
import com.google.gwt.dom.builder.shared.TableColBuilder;
import com.google.gwt.dom.builder.shared.TableRowBuilder;
import com.google.gwt.dom.builder.shared.TableSectionBuilder;
import com.google.gwt.dom.builder.shared.TextAreaBuilder;
import com.google.gwt.dom.builder.shared.UListBuilder;
import com.google.gwt.dom.builder.shared.VideoBuilder;
import com.google.gwt.dom.client.Element;
/**
* Implementation of {@link ElementBuilderBase} that delegates to a
* {@link DomBuilderImpl}.
*
* <p>
* Subclasses of {@link DomElementBuilderBase} operate directly on the
* {@link Element} being built.
* </p>
*
* @param <R> the builder type returned from build methods
* @param <E> the {@link Element} type
*/
public class DomElementBuilderBase<R extends ElementBuilderBase<?>, E extends Element> extends
AbstractElementBuilderBase<R> {
private final DomBuilderImpl delegate;
/**
* Construct a new {@link DomElementBuilderBase}.
*
* @param delegate the delegate that builds the element
*/
DomElementBuilderBase(DomBuilderImpl delegate) {
this(delegate, false);
}
/**
* Construct a new {@link DomElementBuilderBase}.
*
* @param delegate the delegate that builds the element
* @param isEndTagForbidden true if the end tag is forbidden for this element
*/
DomElementBuilderBase(DomBuilderImpl delegate, boolean isEndTagForbidden) {
super(delegate, isEndTagForbidden);
this.delegate = delegate;
}
@Override
public R attribute(String name, int value) {
assertCanAddAttribute().setAttribute(name, String.valueOf(value));
return getReturnBuilder();
}
@Override
public R attribute(String name, String value) {
assertCanAddAttribute().setAttribute(name, value);
return getReturnBuilder();
}
@Override
public R className(String className) {
assertCanAddAttribute().setClassName(className);
return getReturnBuilder();
}
@Override
public R dir(String dir) {
assertCanAddAttribute().setDir(dir);
return getReturnBuilder();
}
@Override
public R draggable(String draggable) {
assertCanAddAttribute().setDraggable(draggable);
return getReturnBuilder();
}
@Override
public R id(String id) {
assertCanAddAttribute().setId(id);
return getReturnBuilder();
}
@Override
public R lang(String lang) {
assertCanAddAttribute().setLang(lang);
return getReturnBuilder();
}
@Override
public AnchorBuilder startAnchor() {
return delegate.startAnchor();
}
@Override
public AreaBuilder startArea() {
return delegate.startArea();
}
@Override
public AudioBuilder startAudio() {
return delegate.startAudio();
}
@Override
public BaseBuilder startBase() {
return delegate.startBase();
}
@Override
public QuoteBuilder startBlockQuote() {
return delegate.startBlockQuote();
}
@Override
public BodyBuilder startBody() {
return delegate.startBody();
}
@Override
public BRBuilder startBR() {
return delegate.startBR();
}
@Override
public InputBuilder startButtonInput() {
return delegate.startButtonInput();
}
@Override
public CanvasBuilder startCanvas() {
return delegate.startCanvas();
}
@Override
public InputBuilder startCheckboxInput() {
return delegate.startCheckboxInput();
}
@Override
public TableColBuilder startCol() {
return delegate.startCol();
}
@Override
public TableColBuilder startColGroup() {
return delegate.startColGroup();
}
@Override
public DivBuilder startDiv() {
return delegate.startDiv();
}
@Override
public DListBuilder startDList() {
return delegate.startDList();
}
@Override
public FieldSetBuilder startFieldSet() {
return delegate.startFieldSet();
}
@Override
public InputBuilder startFileInput() {
return delegate.startFileInput();
}
@Override
public FormBuilder startForm() {
return delegate.startForm();
}
@Override
public FrameBuilder startFrame() {
return delegate.startFrame();
}
@Override
public FrameSetBuilder startFrameSet() {
return delegate.startFrameSet();
}
@Override
public HeadingBuilder startH1() {
return delegate.startH1();
}
@Override
public HeadingBuilder startH2() {
return delegate.startH2();
}
@Override
public HeadingBuilder startH3() {
return delegate.startH3();
}
@Override
public HeadingBuilder startH4() {
return delegate.startH4();
}
@Override
public HeadingBuilder startH5() {
return delegate.startH5();
}
@Override
public HeadingBuilder startH6() {
return delegate.startH6();
}
@Override
public HeadBuilder startHead() {
return delegate.startHead();
}
@Override
public InputBuilder startHiddenInput() {
return delegate.startHiddenInput();
}
@Override
public HRBuilder startHR() {
return delegate.startHR();
}
@Override
public IFrameBuilder startIFrame() {
return delegate.startIFrame();
}
@Override
public ImageBuilder startImage() {
return delegate.startImage();
}
@Override
public InputBuilder startImageInput() {
return delegate.startImageInput();
}
@Override
public LabelBuilder startLabel() {
return delegate.startLabel();
}
@Override
public LegendBuilder startLegend() {
return delegate.startLegend();
}
@Override
public LIBuilder startLI() {
return delegate.startLI();
}
@Override
public LinkBuilder startLink() {
return delegate.startLink();
}
@Override
public MapBuilder startMap() {
return delegate.startMap();
}
@Override
public MetaBuilder startMeta() {
return delegate.startMeta();
}
@Override
public OListBuilder startOList() {
return delegate.startOList();
}
@Override
public OptGroupBuilder startOptGroup() {
return delegate.startOptGroup();
}
@Override
public OptionBuilder startOption() {
return delegate.startOption();
}
@Override
public ParagraphBuilder startParagraph() {
return delegate.startParagraph();
}
@Override
public ParamBuilder startParam() {
return delegate.startParam();
}
@Override
public InputBuilder startPasswordInput() {
return delegate.startPasswordInput();
}
@Override
public PreBuilder startPre() {
return delegate.startPre();
}
@Override
public ButtonBuilder startPushButton() {
return delegate.startPushButton();
}
@Override
public QuoteBuilder startQuote() {
return delegate.startQuote();
}
@Override
public InputBuilder startRadioInput(String name) {
return delegate.startRadioInput(name);
}
@Override
public ButtonBuilder startResetButton() {
return delegate.startResetButton();
}
@Override
public InputBuilder startResetInput() {
return delegate.startResetInput();
}
@Override
public ScriptBuilder startScript() {
return delegate.startScript();
}
@Override
public SelectBuilder startSelect() {
return delegate.startSelect();
}
@Override
public SourceBuilder startSource() {
return delegate.startSource();
}
@Override
public SpanBuilder startSpan() {
return delegate.startSpan();
}
@Override
public StyleBuilder startStyle() {
return delegate.startStyle();
}
@Override
public ButtonBuilder startSubmitButton() {
return delegate.startSubmitButton();
}
@Override
public InputBuilder startSubmitInput() {
return delegate.startSubmitInput();
}
@Override
public TableBuilder startTable() {
return delegate.startTable();
}
@Override
public TableCaptionBuilder startTableCaption() {
return delegate.startTableCaption();
}
@Override
public TableSectionBuilder startTBody() {
return delegate.startTBody();
}
@Override
public TableCellBuilder startTD() {
return delegate.startTD();
}
@Override
public TextAreaBuilder startTextArea() {
return delegate.startTextArea();
}
@Override
public InputBuilder startTextInput() {
return delegate.startTextInput();
}
@Override
public TableSectionBuilder startTFoot() {
return delegate.startTFoot();
}
@Override
public TableCellBuilder startTH() {
return delegate.startTH();
}
@Override
public TableSectionBuilder startTHead() {
return delegate.startTHead();
}
@Override
public TableRowBuilder startTR() {
return delegate.startTR();
}
@Override
public UListBuilder startUList() {
return delegate.startUList();
}
@Override
public VideoBuilder startVideo() {
return delegate.startVideo();
}
@Override
public R tabIndex(int tabIndex) {
assertCanAddAttribute().setTabIndex(tabIndex);
return getReturnBuilder();
}
@Override
public R title(String title) {
assertCanAddAttribute().setTitle(title);
return getReturnBuilder();
}
@Override
public ElementBuilder trustedStart(String tagName) {
return delegate.trustedStart(tagName);
}
/**
* Assert that the builder is in a state where an attribute can be added.
*
* @return the element on which the attribute can be set
*/
protected E assertCanAddAttribute() {
/*
* An explicit parameterized return type on cast() is required by some javac
* compilers.
*/
return delegate.assertCanAddAttribute().<E> cast();
}
DomBuilderImpl getDelegate() {
return delegate;
}
}