All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.gwt.dom.builder.shared.AbstractElementBuilderBase Maven / Gradle / Ivy

/*
 * 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.shared;

import com.google.gwt.dom.client.AnchorElement;
import com.google.gwt.dom.client.AreaElement;
import com.google.gwt.dom.client.AudioElement;
import com.google.gwt.dom.client.BRElement;
import com.google.gwt.dom.client.BaseElement;
import com.google.gwt.dom.client.BodyElement;
import com.google.gwt.dom.client.ButtonElement;
import com.google.gwt.dom.client.CanvasElement;
import com.google.gwt.dom.client.DListElement;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.FieldSetElement;
import com.google.gwt.dom.client.FormElement;
import com.google.gwt.dom.client.FrameElement;
import com.google.gwt.dom.client.FrameSetElement;
import com.google.gwt.dom.client.HRElement;
import com.google.gwt.dom.client.HeadElement;
import com.google.gwt.dom.client.HeadingElement;
import com.google.gwt.dom.client.IFrameElement;
import com.google.gwt.dom.client.ImageElement;
import com.google.gwt.dom.client.InputElement;
import com.google.gwt.dom.client.LIElement;
import com.google.gwt.dom.client.LabelElement;
import com.google.gwt.dom.client.LegendElement;
import com.google.gwt.dom.client.LinkElement;
import com.google.gwt.dom.client.MapElement;
import com.google.gwt.dom.client.MetaElement;
import com.google.gwt.dom.client.OListElement;
import com.google.gwt.dom.client.OptGroupElement;
import com.google.gwt.dom.client.OptionElement;
import com.google.gwt.dom.client.ParagraphElement;
import com.google.gwt.dom.client.ParamElement;
import com.google.gwt.dom.client.PreElement;
import com.google.gwt.dom.client.QuoteElement;
import com.google.gwt.dom.client.ScriptElement;
import com.google.gwt.dom.client.SelectElement;
import com.google.gwt.dom.client.SourceElement;
import com.google.gwt.dom.client.SpanElement;
import com.google.gwt.dom.client.StyleElement;
import com.google.gwt.dom.client.TableCaptionElement;
import com.google.gwt.dom.client.TableCellElement;
import com.google.gwt.dom.client.TableColElement;
import com.google.gwt.dom.client.TableElement;
import com.google.gwt.dom.client.TableRowElement;
import com.google.gwt.dom.client.TableSectionElement;
import com.google.gwt.dom.client.TextAreaElement;
import com.google.gwt.dom.client.UListElement;
import com.google.gwt.dom.client.VideoElement;
import com.google.gwt.safehtml.shared.SafeHtml;

/**
 * Abstract base class for implementations of {@link ElementBuilderBase}.
 * 
 * 

* Subclasses of {@link AbstractElementBuilderBase} act as typed wrappers around * a shared implementation that handles the actual building. The wrappers merely * delegate to the shared implementation, so wrapper instances can be reused, * avoiding object creation. This approach is necessary so that the return value * of common methods, such as {@link #id(String)}, return a typed builder * instead of the generic {@link ElementBuilderBase}. *

* * @param the builder type returned from build methods */ public abstract class AbstractElementBuilderBase> implements ElementBuilderBase { private final ElementBuilderImpl delegate; private final boolean isEndTagForbidden; private final R returnBuilder; @SuppressWarnings("unchecked") protected AbstractElementBuilderBase(ElementBuilderImpl delegate, boolean isEndTagForbidden) { this.delegate = delegate; this.isEndTagForbidden = isEndTagForbidden; // Cache the return builder to avoid repeated cast checks. this.returnBuilder = (R) this; } @Override public void end() { delegate.end(); } @Override public void end(String tagName) { delegate.end(tagName); } @Override public void endAnchor() { end(AnchorElement.TAG); } @Override public void endArea() { end(AreaElement.TAG); } @Override public void endAudio() { end(AudioElement.TAG); } @Override public void endBase() { end(BaseElement.TAG); } @Override public void endBlockQuote() { end(QuoteElement.TAG_BLOCKQUOTE); } @Override public void endBody() { end(BodyElement.TAG); } @Override public void endBR() { end(BRElement.TAG); } @Override public void endButton() { end(ButtonElement.TAG); } @Override public void endCanvas() { end(CanvasElement.TAG); } @Override public void endCol() { end(TableColElement.TAG_COL); } @Override public void endColGroup() { end(TableColElement.TAG_COLGROUP); } @Override public void endDiv() { end(DivElement.TAG); } @Override public void endDList() { end(DListElement.TAG); } @Override public void endFieldSet() { end(FieldSetElement.TAG); } @Override public void endForm() { end(FormElement.TAG); } @Override public void endFrame() { end(FrameElement.TAG); } @Override public void endFrameSet() { end(FrameSetElement.TAG); } @Override public void endH1() { end(HeadingElement.TAG_H1); } @Override public void endH2() { end(HeadingElement.TAG_H2); } @Override public void endH3() { end(HeadingElement.TAG_H3); } @Override public void endH4() { end(HeadingElement.TAG_H4); } @Override public void endH5() { end(HeadingElement.TAG_H5); } @Override public void endH6() { end(HeadingElement.TAG_H6); } @Override public void endHead() { end(HeadElement.TAG); } @Override public void endHR() { end(HRElement.TAG); } @Override public void endIFrame() { end(IFrameElement.TAG); } @Override public void endImage() { end(ImageElement.TAG); } @Override public void endInput() { end(InputElement.TAG); } @Override public void endLabel() { end(LabelElement.TAG); } @Override public void endLegend() { end(LegendElement.TAG); } @Override public void endLI() { end(LIElement.TAG); } @Override public void endLink() { end(LinkElement.TAG); } @Override public void endMap() { end(MapElement.TAG); } @Override public void endMeta() { end(MetaElement.TAG); } @Override public void endOList() { end(OListElement.TAG); } @Override public void endOptGroup() { end(OptGroupElement.TAG); } @Override public void endOption() { end(OptionElement.TAG); } @Override public void endParagraph() { end(ParagraphElement.TAG); } @Override public void endParam() { end(ParamElement.TAG); } @Override public void endPre() { end(PreElement.TAG); } @Override public void endQuote() { end(QuoteElement.TAG_Q); } @Override public void endScript() { end(ScriptElement.TAG); } @Override public void endSelect() { end(SelectElement.TAG); } @Override public void endSource() { end(SourceElement.TAG); } @Override public void endSpan() { end(SpanElement.TAG); } @Override public void endStyle() { end(StyleElement.TAG); } @Override public void endTable() { end(TableElement.TAG); } @Override public void endTableCaption() { end(TableCaptionElement.TAG); } @Override public void endTBody() { end(TableSectionElement.TAG_TBODY); } @Override public void endTD() { end(TableCellElement.TAG_TD); } @Override public void endTextArea() { end(TextAreaElement.TAG); } @Override public void endTFoot() { end(TableSectionElement.TAG_TFOOT); } @Override public void endTH() { end(TableCellElement.TAG_TH); } @Override public void endTHead() { end(TableSectionElement.TAG_THEAD); } @Override public void endTR() { end(TableRowElement.TAG); } @Override public void endUList() { end(UListElement.TAG); } @Override public void endVideo() { end(VideoElement.TAG); } @Override public Element finish() { return delegate.finish(); } @Override public int getDepth() { return delegate.getDepth(); } @Override public R html(SafeHtml html) { delegate.html(html); return getReturnBuilder(); } @Override public boolean isChildElementSupported() { return !isEndTagForbidden; } @Override public boolean isEndTagForbidden() { return isEndTagForbidden; } @Override public StylesBuilder style() { return delegate.style(); } @Override public R text(String text) { delegate.text(text); return getReturnBuilder(); } /** * Get the builder to return from build methods. * * @return the return builder */ protected R getReturnBuilder() { return returnBuilder; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy