Example usage for com.google.gwt.uibinder.rebind IndentedWriter indent

List of usage examples for com.google.gwt.uibinder.rebind IndentedWriter indent

Introduction

In this page you can find the example usage for com.google.gwt.uibinder.rebind IndentedWriter indent.

Prototype

int indent

To view the source code for com.google.gwt.uibinder.rebind IndentedWriter indent.

Click Source Link

Usage

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

License:Apache License

protected void writeHandler(IndentedWriter writer, String uiOwner, String handlerVarName, JClassType eventType,
        String boundMethod, TypeOracle oracle) throws UnableToCompleteException {

    JClassType handlerType = oracle.findType(GxtClassnameConstants.LISTENER);

    writer.newline();/*from w  ww.  j  a va2 s  .  co m*/
    writer.write("final %1$s<%2$s> %3$s = new %1$s<%2$s>() {", handlerType.getQualifiedSourceName(),
            eventType.getQualifiedSourceName(), handlerVarName);
    writer.indent();

    writer.write("public void handleEvent(%s event) {", eventType.getQualifiedSourceName());
    writer.indent();
    writer.write("%s.%s(event);", uiOwner, boundMethod);
    writer.outdent();
    writer.write("}");
    writer.outdent();
    writer.write("};");
}

From source file:com.nabla.wapp.client.rebind.GenericCommandSetGenerator.java

License:Apache License

private void writeClass(final TreeLogger logger, final IndentedWriter writer, final String packageName,
        final String className, final JClassType interfaceType) throws UnableToCompleteException {
    final List<JMethod> methods = new LinkedList<JMethod>();
    getAllMethods(interfaceType, methods);
    final Set<String> returnTypes = new HashSet<String>();
    final Map<String, String[]> commandRequiredRoles = new HashMap<String, String[]>();
    final Set<String> requiredRoles = new HashSet<String>();
    final Set<String> rootCommands = new HashSet<String>();
    int maxRoleCountPerMethod = 0;
    boolean singleRolePerMethod = false; // true if at least one command needs a unique role
    for (final JMethod method : methods) {
        if (method.getParameters().length > 0) {
            logger.log(TreeLogger.ERROR, "unsupported parameters for method '" + method.getName() + "'", null);
            throw new UnableToCompleteException();
        }/*from   www  .j av  a  2  s.c o m*/
        returnTypes.add(method.getReturnType().getQualifiedSourceName());
        final IRequiredRole role = method.getAnnotation(IRequiredRole.class);
        if (role != null) {
            final String[] roles = role.value();
            logger.log(TreeLogger.INFO,
                    "method '" + method.getName() + "' restricted to roles " + Arrays.asList(roles).toString());
            requiredRoles.addAll(Arrays.asList(roles));
            commandRequiredRoles.put(method.getName(), roles);
            if (maxRoleCountPerMethod < roles.length)
                maxRoleCountPerMethod = roles.length;
            if (roles.length == 1)
                singleRolePerMethod = true;
        }
        final IRequireRootRole rootRole = method.getAnnotation(IRequireRootRole.class);
        if (rootRole != null) {
            logger.log(TreeLogger.INFO, "method '" + method.getName() + "' restricted to root only");
            rootCommands.add(method.getName());
        }
    }
    writer.write(PACKAGE, packageName);
    writer.newline();
    for (final String type : returnTypes)
        writer.write(IMPORT, type);
    writer.write(IMPORT, "java.util.HashMap");
    writer.write(IMPORT, "java.util.Map");
    writer.write(IMPORT, "java.util.Set");
    writer.write(IMPORT, "java.util.HashSet");
    writer.write(IMPORT, "java.util.Collections");
    writer.write(IMPORT, "com.smartgwt.client.data.Record");
    writer.write(IMPORT, "com.nabla.wapp.shared.slot.ISlot1");
    writer.write(IMPORT, "com.nabla.wapp.shared.general.StringSet");
    writer.write(IMPORT, "com.nabla.wapp.client.auth.IAuthSessionManager");
    writer.write(IMPORT, "com.nabla.wapp.client.general.Application");
    writer.write(IMPORT, "com.nabla.wapp.client.command.ICurrentRecordProvider");
    writer.newline();
    writer.write("public class %1$s implements %2$s {", className, interfaceType.getName());
    writer.indent();
    for (final JMethod method : methods)
        writer.write("private final %1$s m_%2$s = new %1$s();", method.getReturnType().getSimpleSourceName(),
                method.getName());
    writer.newline();
    writer.write("private static final StringSet roles = new StringSet();");
    for (final Map.Entry<String, String[]> e : commandRequiredRoles.entrySet()) {
        if (e.getValue().length < 2)
            continue;
        writer.write("private static final String[] %1$s_Roles = {", e.getKey());
        writer.indent();
        final String[] roles = e.getValue();
        writer.write("\"%1$s\"", roles[0]);
        for (int i = 1; i < roles.length; ++i)
            writer.write(",\"%1$s\"", roles[i]);
        writer.outdent();
        writer.write("});");
    }

    writer.newline();
    writer.write("static {");
    writer.indent();
    for (final String role : requiredRoles)
        writer.write("roles.add(\"%1$s\");", role);
    writer.outdent();
    writer.write("}"); // static

    writer.newline();
    writer.write("private Integer objectId;");
    writer.write("public %1$s() {}", className);
    // constructor

    writer.newline();
    writer.write("public void setObjectId(final Integer objectId) {");
    writer.indent();
    writer.write("this.objectId = objectId;");
    writer.outdent();
    writer.write("}");

    writer.newline();
    for (final JMethod method : methods)
        writer.write("@Override public %1$s %2$s() { return m_%2$s; }",
                method.getReturnType().getSimpleSourceName(), method.getName());

    writer.newline();
    writer.write("@Override public StringSet getRequiredRoles() { return roles; }");

    writer.newline();
    writer.write("@Override public void applyRoles(final Set<String> userRoles, boolean isRoot) {");
    writer.indent();
    if (requiredRoles.isEmpty()) {
        for (final JMethod method : methods) {
            if (rootCommands.contains(method.getName()))
                writer.write("m_%1$s.setEnabled(isRoot);", method.getName());
            else
                writer.write("m_%1$s.setEnabled(true);", method.getName());
        }
    } else {
        for (final JMethod method : methods) {
            if (rootCommands.contains(method.getName()))
                writer.write("m_%1$s.setEnabled(isRoot);", method.getName());
            else {
                final String[] commandRoles = commandRequiredRoles.get(method.getName());
                if (commandRoles == null)
                    writer.write("m_%1$s.setEnabled(true);", method.getName());
                else if (commandRoles.length == 1)
                    writer.write("m_%1$s.setEnabled(isEnabled(\"%2$s\", userRoles));", method.getName(),
                            commandRoles[0]);
                else
                    writer.write("m_%1$s.setEnabled(isEnabled(%1$s_Roles, userRoles));", method.getName());
            }
        }
    }
    writer.outdent();
    writer.write("}"); // applyRoles

    writer.newline();
    writer.write("@Override public void updateUi(final IAuthSessionManager sessionManager) {");
    writer.indent();
    writer.write("sessionManager.IsUserInRole(objectId, getRequiredRoles(), new ISlot1<Set<String>>() {");
    writer.indent();
    writer.write("@Override public void invoke(final Set<String> roles) {");
    writer.indent();
    writer.write("applyRoles(roles, sessionManager.isRoot());");
    writer.outdent();
    writer.write("}");
    writer.outdent();
    writer.write("});");
    writer.outdent();
    writer.write("}"); // updateUi

    writer.newline();
    writer.write("@Override public void updateUi() {");
    writer.indent();
    writer.write("updateUi(Application.getInstance().getUserSessionManager());");
    writer.outdent();
    writer.write("}"); // updateUi

    if (maxRoleCountPerMethod > 1) {
        writer.newline();
        writer.write("private boolean isEnabled(final String[] requiredRoles, final Set<String> userRoles) {");
        writer.indent();
        writer.write("if (userRoles == null || userRoles.isEmpty())");
        writer.indent();
        writer.write("return false;");
        writer.outdent();
        writer.write("for (String requiredRole : requiredRoles) {");
        writer.indent();
        writer.write("if (userRoles.contains(requiredRole))");
        writer.indent();
        writer.write("return true;");
        writer.outdent();
        writer.outdent();
        writer.write("}");
        writer.write("return false;");
        writer.outdent();
        writer.write("}"); // isEnabled
    }
    if (singleRolePerMethod) {
        writer.newline();
        writer.write("private boolean isEnabled(final String requiredRole, final Set<String> userRoles) {");
        writer.indent();
        writer.write("return userRoles != null && userRoles.contains(requiredRole);");
        writer.outdent();
        writer.write("}"); // isEnabled
    }
    writer.outdent();
    writer.write("}"); // class
}