Widgetset Optimization

Hello,

I would like to optimize my widgetset according to
this
wiki entry.

So I added this to widgetset file

<generate-with class="com.abc.base.sys.webapp.DemoConnectorBundleLoaderFactory">
        <when-type-assignable class="com.vaadin.client.metadata.ConnectorBundleLoader" />
    </generate-with>

and created my own factory


package com.abc.base.sys.webapp;

import com.google.gwt.core.ext.typeinfo.JClassType;
import com.vaadin.server.widgetsetutils.ConnectorBundleLoaderFactory;
import com.vaadin.shared.ui.Connect;
import com.vaadin.shared.ui.Connect.LoadStyle;
...

public class DemoConnectorBundleLoaderFactory
    extends ConnectorBundleLoaderFactory
{

    private static final List<Class> eagerComponents = new LinkedList<Class>();

    // add all components needed for the initial screen
    static
    {
        eagerComponents.add(Alignment.class);
        eagerComponents.add(Component.class);
        eagerComponents.add(CssLayout.class);
        eagerComponents.add(Embedded.class);
        eagerComponents.add(HorizontalLayout.class);
        eagerComponents.add(Label.class);
        eagerComponents.add(Layout.class);
        eagerComponents.add(VerticalLayout.class);
    }


    @Override
    protected LoadStyle getLoadStyle(JClassType connectorType)
    {
        Connect annotation = connectorType.getAnnotation(Connect.class);
        Class componentClass = annotation.value();

        // Load eagerly marked connectors eagerly
        if (eagerComponents.contains(componentClass))
        {
            return LoadStyle.EAGER;
        }

        return LoadStyle.DEFERRED ;
    }
}

Unfortunately when I load the application initially my first screen is not shown. The application is loading forever while showing the progress icon. Any idea what is wrong?

I think you need to have the UI.class as eager or it won’t work.

That’s it! Thank you.