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

com.googlecode.gwt.test.uibinder.widget.UiMenuBarTagFactory Maven / Gradle / Ivy

There is a newer version: 0.63
Show newest version
package com.googlecode.gwt.test.uibinder.widget;

import com.google.gwt.user.client.ui.MenuBar;
import com.google.gwt.user.client.ui.MenuItem;
import com.google.gwt.user.client.ui.UIObject;
import com.googlecode.gwt.test.uibinder.UiObjectTag;
import com.googlecode.gwt.test.uibinder.UiObjectTagFactory;

import java.util.Map;

/**
 * Handles <g:MenuBar> tags.
 *
 * @author Gael Lazzari
 */
public class UiMenuBarTagFactory implements UiObjectTagFactory {

    private static class UiMenuBarTag extends UiObjectTag {

        @Override
        protected void addUIObject(MenuBar wrapped, UIObject uiObject) {
            if (uiObject instanceof MenuItem) {
                wrapped.addItem((MenuItem) uiObject);
            } else {
                super.addUIObject(wrapped, uiObject);
            }
        }

        @Override
        protected void finalizeObject(MenuBar widget) {
            // nothing to do
        }

        @Override
        protected void initializeObject(MenuBar wrapped, Map attributes, Object owner) {
            // nothing to do
        }

        @Override
        protected MenuBar instanciate(Class clazz, Map attributes,
                                      Object owner) {

            if (clazz != MenuBar.class) {
                // use default instanciation system
                return super.instanciate(clazz, attributes, owner);
            }

            String vertical = (String) attributes.get("vertical");
            boolean isVertical = vertical != null ? Boolean.valueOf(vertical) : false;

            return new MenuBar(isVertical);

        }

    }

    public UiObjectTag createUiObjectTag(Class clazz, Map attributes) {

        if (MenuBar.class.isAssignableFrom(clazz)) {
            return new UiMenuBarTag();
        }

        return null;

    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy