tutorial showcase example ejemplos gwt

showcase - GWT 2 CssResource cómo



gwt showcase (2)

Tengo una aplicación GWT 1.7 y quiero actualizarla a GWT 2 Milestone 2. La aplicación utiliza 2 grandes archivos CSS externos. En GWT 1.7 tuve una carpeta pública y puse los archivos CSS en la carpeta y mi aplicación compilada y funcionó bien. Ahora, para GWT 2, he creado una clase de ResourceBundle y puse todos los sprites de imagen y CSS de la siguiente manera:

public interface ResourceBundle extends ClientBundle { public static final ResourceBundle INSTANCE = GWT.create(ResourceBundle.class); @Source("com/web/tech/public/stylesheet1.css") public Css stylesheet1(); @Source("com/web/tech/public/stylesheet2.css") public Css stylesheet2(); @Source("com/docobo/keswick/keswickweb/public/images/organisnew.gif") public ImageResource add_org(); ..... }

La clase Css es una clase vacía que extiende CssResource:

public interface Css extends CssResource{ }

Entonces en mi onModuleLoad () uso:

StyleInjector.inject(ResourceBundle.INSTANCE.stylesheet1().getText()); StyleInjector.inject(ResourceBundle.INSTANCE.stylesheet2().getText());

Cuando compilo me sale el siguiente error:

Rebinding com.docobo.keswick.keswickweb.client.ClientResources.ResourceBundle Invoking <generate-with class=''com.google.gwt.resources.rebind.context.InlineClientBundleGenerator''/> Creating assignment for gxt_gray() Replacing CSS class names [ERROR] The following unobfuscated classes were present in a strict CssResource: [ERROR] x-tab-scroller-left [ERROR] x-tab-strip-disabled [ERROR] ......loads of other styles Fix by adding String accessor method(s) to the CssResource interface for obfuscated classes, or using an @external declaration for unobfuscated classes.

Siguiendo las instrucciones anteriores cuando uso @external sobre todas mis clases de estilo dentro del archivo CSS, obtengo el siguiente error:

[ERROR] Generator ''com.google.gwt.resources.rebind.context.InlineClientBundleGenerator'' threw threw an exception while rebinding ''com.docobo.keswick.keswickweb.client.ClientResources.ResourceBundle'' java.lang.StringIndexOutOfBoundsException: String index out of range: -2 at java.lang.String.substring(Unknown Source) at com.google.gwt.resources.css.GenerateCssAst$GenerationHandler.ignorableAtRule(GenerateCssAst.java:236) at org.w3c.flute.parser.Parser.atRuleDeclaration(Parser.java:1178) at org.w3c.flute.parser.Parser.ignoreStatement(Parser.java:622) at org.w3c.flute.parser.Parser.parserUnit(Parser.java:452) at org.w3c.flute.parser.Parser.parseStyleSheet(Parser.java:107) at org.w3c.flute.parser.Parser.parseStyleSheet(Parser.java:119) at com.google.gwt.resources.css.GenerateCssAst.exec(GenerateCssAst.java:663) at com.google.gwt.resources.rg.CssResourceGenerator.prepare(CssResourceGenerator.java:506) at com.google.gwt.resources.rebind.context.AbstractClientBundleGenerator.initAndPrepare(AbstractClientBundleGenerator.java:531) at com.google.gwt.resources.rebind.context.AbstractClientBundleGenerator.initAndPrepare(AbstractClientBundleGenerator.java:502) at com.google.gwt.resources.rebind.context.AbstractClientBundleGenerator.generate(AbstractClientBundleGenerator.java:179) at com.google.gwt.dev.cfg.RuleGenerateWith.realize(RuleGenerateWith.java:49) at com.google.gwt.dev.shell.StandardRebindOracle$Rebinder.tryRebind(StandardRebindOracle.java:108) at com.google.gwt.dev.shell.StandardRebindOracle$Rebinder.rebind(StandardRebindOracle.java:54) at com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:154) at com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:143) at com.google.gwt.dev.Precompile$DistillerRebindPermutationOracle.getAllPossibleRebindAnswers(Precompile.java:315) at com.google.gwt.dev.jdt.WebModeCompilerFrontEnd.doFindAdditionalTypesUsingRebinds(WebModeCompilerFrontEnd.java:107) at com.google.gwt.dev.jdt.AbstractCompiler$CompilerImpl.process(AbstractCompiler.java:161) at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:444) at com.google.gwt.dev.jdt.AbstractCompiler$CompilerImpl.compile(AbstractCompiler.java:84) at com.google.gwt.dev.jdt.AbstractCompiler$CompilerImpl.compile(AbstractCompiler.java:196) at com.google.gwt.dev.jdt.AbstractCompiler$CompilerImpl.access$300(AbstractCompiler.java:70) at com.google.gwt.dev.jdt.AbstractCompiler.compile(AbstractCompiler.java:481) at com.google.gwt.dev.jdt.BasicWebModeCompiler.getCompilationUnitDeclarations(BasicWebModeCompiler.java:113) at com.google.gwt.dev.jdt.WebModeCompilerFrontEnd.getCompilationUnitDeclarations(WebModeCompilerFrontEnd.java:49) at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.precompile(JavaToJavaScriptCompiler.java:415) at com.google.gwt.dev.jjs.JavaScriptCompiler.precompile(JavaScriptCompiler.java:32) at com.google.gwt.dev.Precompile.precompile(Precompile.java:507) at com.google.gwt.dev.Precompile.precompile(Precompile.java:408) at com.google.gwt.dev.Compiler.run(Compiler.java:194) at com.google.gwt.dev.Compiler$1.run(Compiler.java:145) at com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:89) at com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger(CompileTaskRunner.java:83) at com.google.gwt.dev.Compiler.main(Compiler.java:152)


Lo tengo resuelto. Como lo señala Thomas @ Google Groups -> El @external no debe ponerse "arriba" del estilo

http://code.google.com/p/google-web-toolkit/wiki/CssResource#External ...

El ejemplo de este enlace, el css se verá como:

@external .legacySelectorA, .legacySelectorB; .obfuscated .legacySelectorA { .... } .obfuscated .legacySelectorB { .... } /* @external also accepts tail-globs */ @external .myProject-*; .myProject-text {} .myProject-foo {}


Probar con @NotStrict . Ejemplo:

@NotStrict @Source("com/web/tech/public/stylesheet1.css") public Css stylesheet1();