/* * Copyright 2013 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.google.gwt.resources.rg; import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.core.ext.UnableToCompleteException; import com.google.gwt.core.ext.typeinfo.JClassType; import com.google.gwt.core.ext.typeinfo.JMethod; import com.google.gwt.dom.client.StyleInjector; import com.google.gwt.resources.ext.AbstractResourceGenerator; import com.google.gwt.resources.ext.ResourceContext; import com.google.gwt.user.rebind.SourceWriter; /** * Base class for CSS resource generators. */ public abstract class AbstractCssResourceGenerator extends AbstractResourceGenerator { /** * Returns the java expression that contains the compiled CSS. * * @throws UnableToCompleteException */ protected abstract String getCssExpression(TreeLogger logger, ResourceContext context, JMethod method) throws UnableToCompleteException; protected boolean isReturnTypeString(JClassType classReturnType) { return (classReturnType != null && String.class.getName().equals(classReturnType.getQualifiedSourceName())); } protected void writeEnsureInjected(SourceWriter sw) { sw.println("private boolean injected;"); sw.println("public boolean ensureInjected() {"); sw.indent(); sw.println("if (!injected) {"); sw.indentln("injected = true;"); sw.indentln(StyleInjector.class.getName() + ".inject(getText());"); sw.indentln("return true;"); sw.println("}"); sw.println("return false;"); sw.outdent(); sw.println("}"); } protected void writeGetName(JMethod method, SourceWriter sw) { sw.println("public String getName() {"); sw.indentln("return \"" + method.getName() + "\";"); sw.println("}"); } protected void writeGetText(TreeLogger logger, ResourceContext context, JMethod method, SourceWriter sw) throws UnableToCompleteException { String cssExpression = getCssExpression(logger, context, method); sw.println("public String getText() {"); sw.indentln("return " + cssExpression + ";"); sw.println("}"); } protected void writeSimpleGetter(JMethod methodToImplement, String toReturn, SourceWriter sw) { sw.print(methodToImplement.getReadableDeclaration(false, true, true, true, true)); sw.println(" {"); sw.indentln("return " + toReturn + ";"); sw.println("}"); } }