paintableId = uidl.getId();
// Get all Child UIDLs and iterate through them
Iterator<Object> childUIDL = uidl.getChildIterator();
while (childUIDL.hasNext()) {
UIDL child = (UIDL) childUIDL.next();
if (child.getTag().equals("options")) {
width = child.getIntAttribute("width");
height = child.getIntAttribute("height");
// Percentual width
if (child.hasAttribute("widthpercentage")) {
width = getElement().getParentElement().getClientWidth();
wpercent = true;
} else {
wpercent = false;
}
// Percentual height
if (child.hasAttribute("heightpercentage")) {
height = getElement().getParentElement().getClientHeight();
hpercent = true;
} else {
hpercent = false;
}
if (child.hasAttribute("rows")) {
setRows(child.getIntAttribute("rows"));
}
if (child.hasAttribute("columns")) {
setColumns(child.getIntAttribute("columns"));
}
if (child.hasAttribute("moveFrom")) {
setDirection(child.getBooleanAttribute("moveFrom"));
}
if (child.hasAttribute("animate")) {
animate = child.getBooleanAttribute("animate");
}
if (child.hasAttribute("selected")) {
selected = child.getIntAttribute("selected");
}
if (child.hasAttribute("useArrows")) {
useArrows = child.getBooleanAttribute("useArrows");
if (!useArrows) {
if (getElement().isOrHasChild(left)) {
getElement().removeChild(left);
}
if (getElement().isOrHasChild(right)) {
getElement().removeChild(right);
}
} else {
if (!getElement().isOrHasChild(left)) {
getElement().appendChild(left);
}
if (!getElement().isOrHasChild(right)) {
getElement().appendChild(right);
}
}
}
// Set left/right arrow styles
if (child.hasAttribute("leftArrow")) {
left.setClassName(child.getStringAttribute("leftArrow"));
}
if (child.hasAttribute("rightArrow")) {
right.setClassName(child.getStringAttribute("rightArrow"));
}
} else if (child.getTag().equals("item")) {
UIDL item = child;
VMenuButton current = null;
String itemCaption = item.getStringAttribute("caption");
final int itemId = item.getIntAttribute("id");
boolean found = false;
for (VMenuButton button : items) {
if (button.getId() == itemId) {
found = true;
}
}
if (!found) {
final Command cmd;
if (item.hasAttribute("command")) {
cmd = new Command() {
public void execute() {
hostReference.onMenuClick(itemId);
}
};
} else {
cmd = null;
}
String icon = null;
if (item.hasAttribute("icon")) {
icon = client.translateVaadinUri(item
.getStringAttribute("icon"));
}
current = addMenuItem(itemCaption, icon, cmd, itemId);
if (item.hasAttribute("style")) {
String styleName = item.getStringAttribute("style");
current.setStyle(styleName);
}
current.setSize(item.getStringAttribute("buttonsize"));
}
}
if (child.getTag().equals("updateItem")) {
// Update item data
UIDL item = child;
VMenuButton current = null;
String itemCaption = item.getStringAttribute("caption");
final int itemId = item.getIntAttribute("id");
for (VMenuButton button : items) {
if (button.getId() == itemId) {
current = button;
break;
}
}
current.setCaption(itemCaption);
if (item.hasAttribute("icon")) {
current.setIcon(client.translateVaadinUri(item
.getStringAttribute("icon")));
}
if (item.hasAttribute("style")) {
current.setStyle(item.getStringAttribute("style"));
}
if (item.hasAttribute("buttonsize")) {
current.setSize(item.getStringAttribute("buttonsize"));
}
} else if (child.getTag().equals("removeItem")) {
removeButton(child.getIntAttribute("id"));
}
}