/******************************************************************************* * Copyright (c) 2008, 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.help.ui.internal.util; import org.eclipse.core.runtime.Platform; import org.eclipse.osgi.service.environment.Constants; import org.eclipse.swt.widgets.Display; public class FontUtils { private static final int TRAY_FONT_HEIGHT_LIMIT = 17; /* * Determine whether the font is suitable for use in a tray dialog * @return true if the font is so large that the tray would look bad. */ static public boolean isFontTooLargeForTray() { try { int height = Display.getDefault().getSystemFont().getFontData()[0].getHeight(); return height > TRAY_FONT_HEIGHT_LIMIT; } catch (RuntimeException e) { return true; } } /* * Get a sequence of JavaScript which will scale the embedded browser contents * @param percent The percentage scaling relative to the default size * @return Javascript to perform the scaling or null if we cannot create scaling script for this OS/browser */ static public String getRescaleScript(int percent) { String scaleString = percent/100 + "." + (percent % 100) / 10; //$NON-NLS-1$ String os = Platform.getOS(); if (Constants.WS_WIN32.equalsIgnoreCase(os) || Constants.OS_MACOSX.equalsIgnoreCase(os)) { return "document.body.style.zoom = " + scaleString; //$NON-NLS-1$ } return null; // No rescale in Mozilla browsers } /* * Function to determine whether the browser in the help view supports a zoom command */ static public boolean canRescaleHelpView() { String os = Platform.getOS(); if (Constants.WS_WIN32.equalsIgnoreCase(os) || Constants.OS_MACOSX.equalsIgnoreCase(os)) { return true; } // No rescale in Mozilla browsers, see Bug 227198 return false; } }