blob: 625a84686327c7f3ea8237e60041aa921f0d8e77 [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.examples.dom.builder;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.dom.builder.shared.DivBuilder;
import com.google.gwt.dom.builder.shared.ElementBuilderFactory;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
/**
* Example of using {@link ElementBuilderFactory} to construct an element by
* chaining methods.
*/
public class ElementBuilderFactoryChainingExample implements EntryPoint {
@Override
public void onModuleLoad() {
/*
* Create a builder for the outermost element. The initial state of the
* builder is a started element ready for attributes (eg. "<div").
*/
DivBuilder divBuilder = ElementBuilderFactory.get().createDivBuilder();
/*
* Build the element.
*
* First, we set the element's id to "myId", then set its title to
* "This is a div". Next, we set the background-color style property to
* "red". Finally, we set some inner text to "Hello World!". When we are
* finished, we end the div.
*
* When building elements, the order of methods matters. Attributes and
* style properties must be added before setting inner html/text or
* appending children. This is because the string implementation cannot
* concatenate an attribute after child content has been added.
*
* Note that endStyle() takes the builder type that we want to return, which
* must be the "parent" builder. endDiv() does not need the optional
* argument because we are finished building the element.
*/
divBuilder.id("myId").title("This is a div");
divBuilder.style().trustedBackgroundColor("red").endStyle();
divBuilder.text("Hello World!").endDiv();
// Get the element out of the builder.
Element div = divBuilder.finish();
// Attach the element to the page.
Document.get().getBody().appendChild(div);
}
}