Example usage for com.google.gwt.user.rebind StringSourceWriter println

List of usage examples for com.google.gwt.user.rebind StringSourceWriter println

Introduction

In this page you can find the example usage for com.google.gwt.user.rebind StringSourceWriter println.

Prototype

public void println(String s) 

Source Link

Usage

From source file:com.bramosystems.oss.player.core.rebind.PlatformPropertyGenerator.java

License:Apache License

@Override
public String generate(TreeLogger logger, SortedSet<String> possibleValues, String fallback,
        SortedSet<ConfigurationProperty> configProperties) throws UnableToCompleteException {
    StringSourceWriter sw = new StringSourceWriter();
    sw.println("{");
    sw.indent();//from  w ww . j a v a  2 s .c  o  m
    sw.println("var pltf = navigator.platform.toLowerCase();");
    Iterator<String> it = possibleValues.iterator();
    if (it.hasNext()) {
        fillCode(sw, it.next());
        sw.print("else ");
        while (it.hasNext()) {
            fillCode(sw, it.next());
            sw.print("else ");
        }
        sw.println("{");
        sw.indent();
        sw.print("return 'other';");
        sw.outdent();
        sw.print("}");
    }
    sw.outdent();
    sw.println("}");
    return sw.toString();
}

From source file:com.bramosystems.oss.player.core.rebind.PlatformPropertyGenerator.java

License:Apache License

private void fillCode(StringSourceWriter sw, String val) {
    sw.print("if(pltf.indexOf('");
    sw.print(val);
    sw.println("')!=-1){");
    sw.indent();//from w  ww.  ja  v a  2  s .  c  o  m
    sw.print("return '");
    sw.print(val);
    sw.println("';");
    sw.outdent();
    sw.print("} ");
}

From source file:com.googlecode.mgwt.useragent.rebind.UserAgentPropertyGenerator.java

License:Apache License

@Override
public String generate(TreeLogger logger, SortedSet<String> possibleValues, String fallback,
        SortedSet<ConfigurationProperty> configProperties) {
    assertUserAgents(logger, possibleValues);

    StringSourceWriter body = new StringSourceWriter();
    body.println("{");
    body.indent();/*from  w  ww . ja  va  2  s  .  c  o  m*/
    writeUserAgentPropertyJavaScript(body, possibleValues, fallback);
    body.outdent();
    body.println("}");

    return body.toString();
}

From source file:com.guit.rebind.binder.contributor.HasAttributeContributor.java

License:Apache License

@Override
public void contribute(BinderContext binderContext, TreeLogger logger, GeneratorContext context)
        throws UnableToCompleteException {
    JMethod m = binderContext.getMethod();
    JClassType eventType = binderContext.getEventType();
    JClassType presenterType = binderContext.getPresenterType();
    if (!eventType.getPackage().getName().equals(domEventsPackage)) {
        logger.log(Type.ERROR,//from  w ww .  j a  v  a2s  .  co  m
                String.format("@HasAttribute annotation is only valid for dom events. Found: %s.%s",
                        presenterType.getQualifiedSourceName(), m.getName()));
        throw new UnableToCompleteException();
    }

    String[] attributes = binderContext.getMethod().getAnnotation(HasAttribute.class).value();

    StringSourceWriter writer = new StringSourceWriter();
    writer.println(elementName + " _has_attribute_element = (" + elementName
            + ")event.getNativeEvent().getEventTarget().cast();");
    writer.print("if (");
    for (int n = 0; n < attributes.length; n++) {
        if (n > 0) {
            writer.print(" || ");
        }
        writer.print("!_has_attribute_element.hasAttribute(\"" + attributes[n] + "\")");
    }
    writer.print(") {return;}");
    binderContext.addBeforeWrappers(writer);
}

From source file:com.guit.rebind.binder.contributor.HasClassContributor.java

License:Apache License

@Override
public void contribute(BinderContext binderContext, TreeLogger logger, GeneratorContext context)
        throws UnableToCompleteException {
    JMethod m = binderContext.getMethod();
    JClassType eventType = binderContext.getEventType();
    JClassType presenterType = binderContext.getPresenterType();
    if (!eventType.getPackage().getName().equals(domEventsPackage)) {
        logger.log(Type.ERROR, String.format("@HasClass annotation is only valid for dom events. Found: %s.%s",
                presenterType.getQualifiedSourceName(), m.getName()));
        throw new UnableToCompleteException();
    }// w w w  .j a v a 2 s. co  m

    String[] attributes = binderContext.getMethod().getAnnotation(HasClass.class).value();

    StringSourceWriter writer = new StringSourceWriter();
    writer.println(elementName + " _has_class_element = (" + elementName
            + ")event.getNativeEvent().getEventTarget().cast();");
    writer.print("if (");
    for (int n = 0; n < attributes.length; n++) {
        if (n > 0) {
            writer.print(" || ");
        }
        writer.print("!_has_class_element.getClassName().contains(\"" + attributes[n] + "\")");
    }
    writer.print(") {return;}");
    binderContext.addBeforeWrappers(writer);
}

From source file:com.guit.rebind.binder.contributor.KeyCodeContributor.java

License:Apache License

@Override
public void contribute(BinderContext binderContext, TreeLogger logger, GeneratorContext context)
        throws UnableToCompleteException {
    JClassType eventType = binderContext.getEventType();
    String eventName = eventType.getQualifiedSourceName();
    if (!eventName.equals(KeyPressEvent.class.getCanonicalName())
            && !eventName.equals(KeyDownEvent.class.getCanonicalName())
            && !eventName.equals(KeyUpEvent.class.getCanonicalName())) {
        logger.log(Type.ERROR,//from www  .  ja v a 2 s .c o  m
                String.format("The binder annotation %s is only valid in %s, %s or %s events. Found: %s.%s",
                        KeyCode.class.getCanonicalName(), KeyPressEvent.class.getCanonicalName(),
                        KeyDownEvent.class.getCanonicalName(), KeyUpEvent.class.getCanonicalName(),
                        binderContext.getPresenterType().getQualifiedSourceName(),
                        binderContext.getMethod().getName()));
        throw new UnableToCompleteException();
    }

    int[] keycodes = binderContext.getMethod().getAnnotation(KeyCode.class).value();
    StringBuilder condition = new StringBuilder();
    for (int keyCode : keycodes) {
        if (condition.length() > 0) {
            condition.append(" && ");
        }
        condition.append("_____keyCode != " + keyCode);
    }

    StringSourceWriter writer = new StringSourceWriter();
    writer.println("int _____keyCode = event.getNativeEvent().getKeyCode();");
    writer.println("if (" + condition.toString() + ") {");
    writer.indent();
    writer.println("return;");
    writer.outdent();
    writer.println("}");
    binderContext.addBeforeWrappers(writer);
}

From source file:com.guit.rebind.binder.contributor.MouseButtonContributor.java

License:Apache License

@Override
public void contribute(BinderContext binderContext, TreeLogger logger, GeneratorContext context)
        throws UnableToCompleteException {
    JClassType eventType = binderContext.getEventType();
    String eventName = eventType.getQualifiedSourceName();
    if (!eventName.equals(MouseDownEvent.class.getCanonicalName())
            && !eventName.equals(MouseUpEvent.class.getCanonicalName())) {
        logger.log(Type.ERROR,//from  w w w.  j  a va 2  s .  c  om
                String.format("The binder annotation %s is only valid in %s or %s events. Found: %s.%s",
                        MouseButton.class.getCanonicalName(), MouseDownEvent.class.getCanonicalName(),
                        MouseUpEvent.class.getCanonicalName(),
                        binderContext.getPresenterType().getQualifiedSourceName(),
                        binderContext.getMethod().getName()));
        throw new UnableToCompleteException();
    }

    MouseButtons[] keycodes = binderContext.getMethod().getAnnotation(MouseButton.class).value();
    StringBuilder condition = new StringBuilder();
    for (MouseButtons button : keycodes) {
        if (condition.length() > 0) {
            condition.append(" && ");
        }

        // LEFT by default
        int buttonNumber = 1;
        switch (button) {
        case MIDDLE:
            buttonNumber = 4;
            break;
        case RIGHT:
            buttonNumber = 2;
            break;
        default:
            break;
        }
        condition.append("_____mouseButton != " + buttonNumber);
    }

    StringSourceWriter writer = new StringSourceWriter();
    writer.println("int _____mouseButton = event.getNativeEvent().getButton();");
    writer.println("if (" + condition.toString() + ") {");
    writer.indent();
    writer.println("return;");
    writer.outdent();
    writer.println("}");
    binderContext.addBeforeWrappers(writer);
}

From source file:com.guit.rebind.binder.contributor.RunAsyncContributor.java

License:Apache License

@Override
public void contribute(BinderContext binderContext, TreeLogger logger, GeneratorContext context)
        throws UnableToCompleteException {

    StringSourceWriter before = new StringSourceWriter();
    before.println("GWT.runAsync(new " + AbstractRunAsyncCallback.class.getCanonicalName() + "() {");
    before.indent();//  w ww .j a  v  a2 s.  c om
    before.println("@Override");
    before.println("public void success() {");
    before.indent();

    StringSourceWriter after = new StringSourceWriter();
    after.outdent();
    after.println("}");
    after.outdent();
    after.println("});");

    binderContext.addWrapper(before, after);
}

From source file:com.guit.rebind.binder.contributor.UserActionContributor.java

License:Apache License

@Override
public void contribute(BinderContext binderContext, TreeLogger logger, GeneratorContext context)
        throws UnableToCompleteException {
    String userAction = binderContext.getMethod().getAnnotation(UserAction.class).value();

    StringSourceWriter writer = new StringSourceWriter();
    String component;/*ww  w .jav a2 s.c om*/
    JClassType presenterType = binderContext.getPresenterType();
    if (presenterType.isAnnotationPresent(Category.class)) {
        component = presenterType.getAnnotation(Category.class).value();
    } else {
        component = presenterType.getQualifiedSourceName();
    }

    writer.print("eventBus.fireEvent(new " + UserActionEvent.class.getCanonicalName() + "(\"" + component
            + "\", \"" + userAction + "\"");

    JClassType hasUserAction = context.getTypeOracle().findType(HasUserActionValue.class.getCanonicalName());
    if (!presenterType.isAssignableTo(hasUserAction)) {
        writer.println("));");
    } else {
        writer.println(", presenter.getUserActionText(), presenter.getUserActionNumber()));");
    }
    binderContext.addAfterHandler(writer);
}

From source file:com.guit.rebind.binder.GuitBinderGenerator.java

License:Apache License

/**
 * Finds the valid methods and check all the conventions.
 *//*from w  ww .j  a v  a 2 s  . co m*/
protected void printEventBusBindingMethods(SourceWriter writer, JClassType presenterType)
        throws UnableToCompleteException {
    JPackage contextEventsPackage = getPackage(presenterType.getPackage().getName() + ".event");
    for (JMethod m : presenterType.getMethods()) {
        if (m.isAnnotationPresent(EventBusHandler.class)) {

            EventBusHandler eventBusHandler = m.getAnnotation(EventBusHandler.class);

            String name = m.getName();
            String presenterName = presenterType.getQualifiedSourceName();

            validateHandler(m, name, presenterName);

            // Find the event type
            JParameter[] parameters = m.getParameters();

            if (!name.startsWith("$") && !name.startsWith("eventBus$")) {
                error("Bad method name: %s on class: %s, the method should start with '$' or 'eventBus$'", name,
                        presenterName);
            }

            // Clean the name
            if (name.startsWith("$")) {
                name = name.substring(1); // Cut off the $
            } else {
                name = name.substring(9); // Cut off the eventBus$
            }

            JClassType eventType = getType(eventBusHandler.value().getCanonicalName());
            if (eventType.equals(gwtEventType)) {
                eventType = getEventByName(name, contextEventsPackage);
                if (eventType == null) {
                    error("There is no context, dom or shared event with the name '%s'. Binding method: '%s' in class: '%s'",
                            name, m.getName(), presenterType.getQualifiedSourceName());
                }
            }

            StringBuilder bindingParameters = new StringBuilder();
            ArrayList<String> parameterStrings = new ArrayList<String>();
            for (JParameter p : parameters) {
                String parameter = p.getName();

                if (bindingParameters.length() > 0) {
                    bindingParameters.append(", ");
                }

                int initlenght = bindingParameters.length();

                // Implicit cast
                bindingParameters
                        .append("(" + p.getType().getErasedType().getParameterizedQualifiedSourceName() + ")");

                String getter = "get";

                // Check if it is a boolean then the getter is 'is' not
                // 'get'
                JPrimitiveType parameterTypeIsPrimitive = p.getType().isPrimitive();
                if (parameterTypeIsPrimitive != null
                        && parameterTypeIsPrimitive.equals(JPrimitiveType.BOOLEAN)) {
                    getter = "is";
                }

                // Event getter binding
                if (parameter.indexOf("$") == -1) {
                    // Event binding
                    bindingParameters.append("event.");
                    bindingParameters.append(getter);
                    bindingParameters.append(capitalize(parameter));
                    bindingParameters.append("()");
                } else {
                    // Event binding nested binding
                    String[] parameterParts = parameter.split("[$]");

                    bindingParameters.append("event");
                    for (int n = 0; n < parameterParts.length - 1; n++) {
                        bindingParameters.append(".get");
                        bindingParameters.append(capitalize(parameterParts[n]));
                        bindingParameters.append("()");
                    }

                    bindingParameters.append(".");
                    bindingParameters.append(getter);
                    bindingParameters.append(capitalize(parameterParts[parameterParts.length - 1]));
                    bindingParameters.append("()");
                }

                parameterStrings.add(bindingParameters.substring(initlenght, bindingParameters.length()));
            }

            // Find the event name
            String simpleName = eventType.getSimpleSourceName();
            if (!simpleName.endsWith("Event")) {
                error("The event %s does not use the event convention. It should end with 'Event'",
                        eventType.getQualifiedSourceName());
            }
            String eventName = eventClassNameToEventName(simpleName);

            // Check that the name of the event correspond to the method
            // name convention
            if (!eventName.equals(name)) {
                error("The method %s on class %s does not use the event bus handler method convention. "
                        + "It should start with '$' or 'eventBus$' "
                        + "and end with the event name. i.e ValueChangeEvent -> $valueChange. Solve it renaming it to '$%s'",
                        m.getName(), presenterName, eventName);
            }

            // Get event handler name
            JClassType handlerType = getHandlerForEvent(eventType);
            if (handlerType == null) {
                error("Parameter '%s' is not an event (subclass of GwtEvent).", eventType.getName());
            }

            // Retrieves the single method (usually 'onSomething') related
            // to all
            // handlers. Ex: onClick in ClickHandler, onBlur in BlurHandler
            // ...
            JMethod[] methods = handlerType.getMethods();
            if (methods.length != 1) {
                error("'%s' has more than one method defined.", handlerType.getName());
            }

            // 'onSomething' method
            JMethod handlerOnMethod = methods[0];

            // Checks if the method has an Event as parameter. Ex:
            // ClickEvent in onClick, BlurEvent in onBlur ...
            parameters = handlerOnMethod.getParameters();
            if (parameters.length != 1) {
                error("Method '%s' needs '%s' as parameter", handlerOnMethod.getName(), eventType.getName());
            }

            writer.println("eventBusBindings.add(eventBus.addHandler(");

            writer.println(eventType.getQualifiedSourceName() + ".");

            // getType or TYPE ?
            JField typeField = eventType.getField("TYPE");
            if (typeField != null && typeField.isStatic() && typeField.isPublic()) {
                writer.println("TYPE");
            } else {
                writer.println("getType()");
            }
            writer.println(", ");

            writer.println("new " + handlerType.getQualifiedSourceName() + "() {");
            writer.indent();
            writer.println("public void " + handlerOnMethod.getName() + "(final "
                    + eventType.getQualifiedSourceName() + " event) {");
            writer.indent();

            // Process contributors
            String bindingParametersString = bindingParameters.toString();
            BinderContextImpl binderContext = processMethodContributors(presenterType, null, null, null, m,
                    eventType, parameterStrings.toArray(new String[parameterStrings.size()]));

            StringSourceWriter handlerWriter = new StringSourceWriter();

            handlerWriter
                    .println("if (" + LogConfiguration.class.getCanonicalName() + ".loggingIsEnabled()) {");
            handlerWriter.println(Logger.class.getCanonicalName() + ".getLogger(\"Binder\").info(\""
                    + binderContext.getLog() + "\");");
            handlerWriter.println("}");

            handlerWriter.println("presenter." + m.getName() + "(" + bindingParametersString + ");");

            writer.println(binderContext.build(handlerWriter));

            writer.outdent();
            writer.println("}");
            writer.outdent();
            writer.println("}));");
        }
    }
}