/* * Ext GWT 2.2.4 - Ext for GWT * Copyright(c) 2007-2010, Ext JS, LLC. * licensing@extjs.com * * http://extjs.com/license */ package com.extjs.gxt.ui.client.core.impl; import java.util.List; import com.extjs.gxt.ui.client.core.El; import com.extjs.gxt.ui.client.core.FastMap; import com.google.gwt.user.client.Element; public class ComputedStyleImplIE extends ComputedStyleImpl { @Override public FastMap<String> getStyleAttribute(Element elem, List<String> names) { return getComputedStyle(elem, names, checkCamelCache(names), null, null); } @Override public void setStyleAttribute(Element elem, String name, Object value) { if ("opacity".equals(name)) { setOpacity(elem, Double.valueOf((String.valueOf(value)))); } else { super.setStyleAttribute(elem, name, value); } } @Override protected String getPropertyName(String name) { if ("float".equals(name)) { return "styleFloat"; } return name; } @Override protected native FastMap<String> getComputedStyle(Element elem, List<String> orginals, List<String> names, List<String> names2, String pseudo) /*-{ var map = @com.extjs.gxt.ui.client.core.FastMap::new()(); var size = orginals.@java.util.List::size()() for(var i = 0;i<size;i++){ var name = names.@java.util.List::get(I)(i); var orginal = orginals.@java.util.List::get(I)(i); if(name == "opacity"){ if(typeof elem.style.filter == "string"){ var m = elem.style.filter.match(/alpha\(opacity=(.*)\)/i); if(m){ var fv = parseFloat(m[1]); if(!isNaN(fv)){ map.@com.extjs.gxt.ui.client.core.FastMap::put(Ljava/lang/String;Ljava/lang/Object;)(orginal,String(fv ? fv / 100 : 0)); continue; } } } map.@com.extjs.gxt.ui.client.core.FastMap::put(Ljava/lang/String;Ljava/lang/Object;)(orginal,String(1)); continue; } var v, cs; if(v = elem.style[name]){ map.@com.extjs.gxt.ui.client.core.FastMap::put(Ljava/lang/String;Ljava/lang/Object;)(orginal,String(v)); } else if(cs = elem.currentStyle) { map.@com.extjs.gxt.ui.client.core.FastMap::put(Ljava/lang/String;Ljava/lang/Object;)(orginal, cs[name] ? String(cs[name]) : null); } else { map.@com.extjs.gxt.ui.client.core.FastMap::put(Ljava/lang/String;Ljava/lang/Object;)(orginal,null); } } return map; }-*/; protected native El setOpacity(Element dom, double opacity)/*-{ dom.style.zoom = 1; dom.style.filter = (dom.style.filter || '').replace(/alpha\([^\)]*\)/gi,"") + (opacity == 1 ? "" : " alpha(opacity=" + opacity * 100 + ")"); }-*/; }