blob: c95af6da0356142ac2b1f43f3dce28db07635caf [file] [log] [blame]
/*******************************************************************************
* 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
}
}