/******************************************************************************* * Copyright (c) 2013 EclipseSource 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: * EclipseSource - initial API and implementation ******************************************************************************/ package org.eclipse.swt.internal.widgets; import org.eclipse.rap.rwt.internal.textsize.TextSizeUtil; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Control; @SuppressWarnings("restriction") public class LayoutUtil { private final static int HORIZONTAL_DIALOG_UNIT_PER_CHAR = 4; private final static int BUTTON_WIDTH = 61; public static GridLayout createGridLayout( int columns, int margin, int spacing ) { GridLayout layout = new GridLayout( columns, false ); layout.marginWidth = margin; layout.marginHeight = margin; layout.horizontalSpacing = spacing; layout.verticalSpacing = spacing; return layout; } public static GridData createHorizontalFillData() { return new GridData( SWT.FILL, GridData.CENTER, true, false ); } public static GridData createFillData() { return new GridData( SWT.FILL, SWT.FILL, true, true ); } public static GridData createButtonLayoutData( Control control ) { GridData layoutData = new GridData( GridData.HORIZONTAL_ALIGN_FILL ); int minWidth = getButtonMinWidth( control.getFont() ); Point preferedSize = control.computeSize( SWT.DEFAULT, SWT.DEFAULT, true ); layoutData.widthHint = Math.max( minWidth, preferedSize.x ); return layoutData; } private static int getButtonMinWidth( Font font ) { float charWidth = TextSizeUtil.getAvgCharWidth( font ); float width = charWidth * BUTTON_WIDTH + HORIZONTAL_DIALOG_UNIT_PER_CHAR / 2; return ( int )( width / HORIZONTAL_DIALOG_UNIT_PER_CHAR ); } private LayoutUtil() { // prevent instantiation } }