Example usage for com.google.gwt.uibinder.rebind.model OwnerClass getOwnerType

List of usage examples for com.google.gwt.uibinder.rebind.model OwnerClass getOwnerType

Introduction

In this page you can find the example usage for com.google.gwt.uibinder.rebind.model OwnerClass getOwnerType.

Prototype

public JClassType getOwnerType() 

Source Link

Usage

From source file:com.jhickman.web.gwt.gxtuibinder.rebind.GxtHandlerEvaluator.java

License:Apache License

public void run(IndentedWriter writer, FieldManager fieldManager, String uiOwner, OwnerClass ownerClass,
        MortalLogger logger, TypeOracle oracle) throws UnableToCompleteException {

    for (JMethod method : getUiHandlers(ownerClass.getOwnerType())) {
        String boundMethod = method.getName();
        if (method.isPrivate()) {
            logger.die("Method '%s' cannot be private.", boundMethod);
        }/*from   w  w w.j  a  v a 2 s  .c om*/

        // Retrieves both event and handler types.
        JParameter[] parameters = method.getParameters();
        if (parameters.length != 1) {
            logger.die("Method '%s' must have a single event parameter defined.", boundMethod);
        }
        JClassType eventType = parameters[0].getType().isClass();

        GxtUiHandler annotation = method.getAnnotation(GxtUiHandler.class);
        String eventTypeName = annotation.eventType().toString();
        if (eventTypeName == null) {
            logger.die("Parameter '%s' cannot be null.", "eventType");
        }

        String handlerVarName = HANDLER_BASE_NAME + (++varCounter);
        writeHandler(writer, uiOwner, handlerVarName, eventType, boundMethod, oracle);

        JClassType events = oracle.findType(GxtClassnameConstants.EVENTS);
        for (String objectName : annotation.uiField()) {
            writer.write("%s.addListener(%s.%s, %s);", objectName, events.getQualifiedSourceName(),
                    eventTypeName, handlerVarName);
        }
    }
}