/* * Copyright 2011 cruxframework.org. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package org.cruxframework.crux.core.client.screen; import org.cruxframework.crux.core.client.utils.DeviceAdaptiveUtils; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.StyleElement; /** * @author Samuel Almeida Cardoso (samuel@cruxframework.org) * */ public class ViewPortHandlerIEMobileImpl extends AbstractViewPortHandler { @Override public void createViewport(String content, JavaScriptObject wnd) { if(!DeviceAdaptiveUtils.isInternetExplorerMobile()) { new ViewPortHandlerImpl().createViewport(content, wnd); return; } Document document = getWindowDocument(wnd); Element header = document.getElementsByTagName("head").getItem(0); StyleElement viewPortStyleElement = document.createStyleElement(); String newProperties = handlePropertiesToCSS(content); viewPortStyleElement.appendChild(document.createTextNode("@-ms-viewport{" + newProperties + "}")); header.appendChild(viewPortStyleElement); JavaScriptObject parentWindow = getParentWindow(wnd); if (parentWindow != null && isCruxWindow(parentWindow)) { createViewport(content, parentWindow); } } private String handlePropertiesToCSS(String content) { if(content == null) { return ""; } return content.replaceAll("\\s",""). replace("=", ":"). replace(",", ";"). replace("minimum-scale", "min-zoom"). replace("maximum-scale", "max-zoom"). replace("user-scalable:no", "user-zoom:fixed"). concat(";"); } }