/******************************************************************************* * Copyright (c) 2005, 2006 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.jface.layout; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.rwt.graphics.Graphics; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Point; /** * Contains various layout constants * * @since 1.0 */ public final class LayoutConstants { private static Point dialogMargins = null; private static Point dialogSpacing = null; private static Point minButtonSize = null; private static void initializeConstants() { if (dialogMargins != null) { return; } dialogFont = JFaceResources.getDialogFont(); // GC gc = new GC(Display.getCurrent()); // gc.setFont(JFaceResources.getDialogFont()); // FontMetrics fontMetrics = gc.getFontMetrics(); dialogMargins = new Point(convertHorizontalDLUsToPixels(/*fontMetrics,*/ IDialogConstants.HORIZONTAL_MARGIN), convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN)); dialogSpacing = new Point(convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING), convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING)); minButtonSize = new Point(convertHorizontalDLUsToPixels( IDialogConstants.BUTTON_WIDTH), 0); // gc.dispose(); } /** * Returns the default dialog margins, in pixels * * @return the default dialog margins, in pixels */ public static final Point getMargins() { initializeConstants(); return dialogMargins; } /** * Returns the default dialog spacing, in pixels * * @return the default dialog spacing, in pixels */ public static final Point getSpacing() { initializeConstants(); return dialogSpacing; } /** * Returns the default minimum button size, in pixels * * @return the default minimum button size, in pixels */ public static final Point getMinButtonSize() { initializeConstants(); return minButtonSize; } // copied from DialogPage private static Font dialogFont; /** * Number of horizontal dialog units per character, value <code>4</code>. */ private static final int HORIZONTAL_DIALOG_UNIT_PER_CHAR = 4; /** * Number of vertical dialog units per character, value <code>8</code>. */ private static final int VERTICAL_DIALOG_UNITS_PER_CHAR = 8; private static int convertHorizontalDLUsToPixels(int dlus) { // test for failure to initialize for backward compatibility // if (fontMetrics == null) { // return 0; // } // return Dialog.convertHorizontalDLUsToPixels(fontMetrics, dlus); int avgCharWidth = Math.round( Graphics.getAvgCharWidth( dialogFont ) ); int result = ( avgCharWidth * dlus + HORIZONTAL_DIALOG_UNIT_PER_CHAR / 2 ) / HORIZONTAL_DIALOG_UNIT_PER_CHAR; return result; } private static int convertVerticalDLUsToPixels(int dlus) { // test for failure to initialize for backward compatibility // if (fontMetrics == null) { // return 0; // } // return Dialog.convertVerticalDLUsToPixels(fontMetrics, dlus); int charHeight = Graphics.getCharHeight( dialogFont ); int result = ( charHeight * dlus + VERTICAL_DIALOG_UNITS_PER_CHAR / 2 ) / VERTICAL_DIALOG_UNITS_PER_CHAR; return result; } }