Comment by a.revolution.ultra.blue:

Guys, check the other post on client bundle, {...@nenchev / @shahidzaman}, I  
answered both your questions there. @whoever-asked-about-resetting-rules, I  
have some custom implementation that allows for dynamic / updateable rules.  
Remember that all IE browsers only allow a max of 31 stylesheets {inline or  
link}, even in IE8 {would 63 kill them, honestly?}. Also, there is no  
reliable way to remove style elements properly in all browsers, so instead  
I store and clear StyleElements?? manually. My implementation uses a few  
custom data classes and whatnot, but you can get the important bits you'll  
need from it.
{{{
String id, rule;
//Styles is a JS object that stores StyleElements like HashMap
if (styles.xHas( id )){ //If the rule named id already has an element, get  
it StyleElement el = styles.xCast( id );
try{ //We start with a text node.
     Text txt = Document.get().createTextNode( "."+id+"{" +rule+ "}" );
//Next, clear the style elements. Rules are text nodes
for(int o = el.getChildCount();o-->0;el.removeChild( el.getChild( o ) ));
//xRNA is my own js <--> java overlay type.
xRNA asRna = el.cast();
//If the style element does NOT have a styleSheet property
if (asRna.xFalse( "styleSheet" ))
//Just append the text node to create rule
     el.appendChild( txt );
else
//Otherwise, we set use the browser <style/>.styleSheet object's cssText  
property
     asRna.xGetRna( "styleSheet" ).xSetStr( "cssText" , txt.getNodeValue() );
//Note, I actually use deferred binding, just modified this for 'clarity'
}catch(Throwable e){GWT.log( "ack" , e );} }
//If there is no style element yet
else{
//Make one using the deprecated injectStylesheet method
     styles.xSet( id , StyleInjector.injectStylesheet( "."+id+"{"
+rule+ "}" ) ); }
}}}
If anyone finds this confusing, I can make a jar and upload somewhere. Or  
you can wait a month when I release my full API in case I didn't test well  
enough.

It would be very nice to StyleElement extended with a setStyle() method  
that does all this internally instead of my haxored static classes, but...  
What're you gonna do?




For more information:
http://code.google.com/p/google-web-toolkit/wiki/CssResource

-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to