package com.googlecode.gwt.test.uibinder.widget;
import com.google.gwt.dom.client.Element;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.ListBox;
import com.googlecode.gwt.test.uibinder.UiBinderXmlUtils;
import com.googlecode.gwt.test.uibinder.UiObjectTag;
import com.googlecode.gwt.test.uibinder.UiObjectTagFactory;
import java.util.List;
import java.util.Map;
public class UiListBoxTagFactory implements UiObjectTagFactory<ListBox> {
private static class UiListBoxTag extends UiObjectTag<ListBox> {
@Override
protected void appendElement(ListBox wrapped, Element element, String namespaceURI,
List<IsWidget> childWidgets) {
if (!ITEM_TAG.equals(element.getTagName())
|| !UiBinderXmlUtils.CLIENTUI_NSURI.equals(namespaceURI)) {
super.appendElement(wrapped, element, namespaceURI, childWidgets);
} else {
// handle <g:item> tag
String item = element.getInnerHTML();
String value = element.getAttribute("value");
wrapped.addItem(item, value);
}
}
@Override
protected void finalizeObject(ListBox uiObject) {
// nothing to do
}
@Override
protected void initializeObject(ListBox wrapped, Map<String, Object> attributes, Object owner) {
// nothing to do
}
}
private static final String ITEM_TAG = "item";
public UiObjectTag<ListBox> createUiObjectTag(Class<?> clazz, Map<String, Object> attributes) {
if (!ListBox.class.isAssignableFrom(clazz)) {
return null;
}
return new UiListBoxTag();
}
}