/* * 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.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; import com.extjs.gxt.ui.client.core.El; import com.extjs.gxt.ui.client.core.FastMap; import com.extjs.gxt.ui.client.util.Format; import com.google.gwt.user.client.Element; public class ComputedStyleImpl { public FastMap<String> getStyleAttribute(El elem, List<String> names) { return getStyleAttribute(elem.dom, names); } protected Map<String, String> camelCache = new FastMap<String>(); protected Map<String, String> hyphenCache = new FastMap<String>(); public FastMap<String> getStyleAttribute(Element elem, List<String> names) { return getComputedStyle(elem, names, checkHyphenCache(names), checkCamelCache(names), null); } public void setStyleAttribute(Element elem, String name, Object value) { elem.getStyle().setProperty(checkCamelCache(Arrays.asList(name)).get(0), value == null ? "" : String.valueOf(value)); } protected List<String> checkCamelCache(List<String> l) { List<String> list = new ArrayList<String>(l); for (int i = 0; i < list.size(); i++) { String s = list.get(i); String t = camelCache.get(s); if (t == null) { t = Format.camelize(getPropertyName(s)); camelCache.put(s, t); } list.set(i, t); } return list; } protected List<String> checkHyphenCache(List<String> l) { List<String> list = new ArrayList<String>(l); for (int i = 0; i < list.size(); i++) { String s = list.get(i); String t = hyphenCache.get(s); if (t == null) { t = Format.hyphenize(getPropertyName(s)); hyphenCache.put(s, t); } list.set(i, t); } return list; } protected String getPropertyName(String name) { if ("float".equals(name)) { return "cssFloat"; } return name; } protected native FastMap<String> getComputedStyle(Element elem, List<String> orginals, List<String> names, List<String> names2, String pseudo) /*-{ var cStyle; 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 orginal = orginals.@java.util.List::get(I)(i); var name2 = names2.@java.util.List::get(I)(i); var v = elem.style[name2]; if(v){ map.@com.extjs.gxt.ui.client.core.FastMap::put(Ljava/lang/String;Ljava/lang/Object;)(orginal,String(v)); continue; } var name = names.@java.util.List::get(I)(i); if(!cStyle){ cStyle = $doc.defaultView.getComputedStyle(elem, pseudo); } map.@com.extjs.gxt.ui.client.core.FastMap::put(Ljava/lang/String;Ljava/lang/Object;)(orginal,cStyle ? String(cStyle.getPropertyValue(name)) : null); } return map; }-*/; }