List of usage examples for com.google.gwt.user.rebind StringSourceWriter println
public void println(String s)
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("}));"); } } }