/*
* Ext GWT - Ext for GWT
* Copyright(c) 2007-2009, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
package com.extjs.gxt.ui.client.core.impl;
import com.extjs.gxt.ui.client.core.El;
import com.extjs.gxt.ui.client.util.Format;
import com.google.gwt.user.client.Element;
public class ComputedStyleImplIE extends ComputedStyleImpl {
@Override
public String getStyleAttribute(Element elem, String name) {
return getComputedStyle(elem, Format.camelize(getPropertyName(name)), null);
}
@Override
protected String getPropertyName(String name) {
if ("float".equals(name)) {
return "styleFloat";
} else if ("class".equals(name)) {
return "className";
} else if ("for".equals(name)) {
return "htmlFor";
}
return name;
}
@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 native String getComputedStyle(Element elem, String name, String pseudo) /*-{
if(name == "opacity"){
if(typeof el.style.filter == "string"){
var m = el.style.filter.match(/alpha\(opacity=(.*)\)/i);
if(m){
var fv = parseFloat(m[1]);
if(!isNaN(fv)){
return fv ? fv / 100 : 0;
}
}
}
return 1;
}
var v, cs;
if(v = elem.style[name]){
return String(v);
} else if(cs = elem.currentStyle) {
var ret = cs[name];
return String(ret);
}
return null;
}-*/;
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 + ")");
}-*/;
}