package sk.stuba.fiit.perconik.ui; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.layout.PixelConverter; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import sk.stuba.fiit.perconik.eclipse.swt.widgets.WidgetListener; import static java.lang.Math.max; public final class Buttons { private Buttons() {} public static Button create(final Composite parent, final String text, final WidgetListener listener) { GridData data = new GridData(GridData.FILL, GridData.BEGINNING, false, false); return create(parent, text, data, listener); } public static Button create(final Composite parent, final String text, final GridData data, final WidgetListener listener) { Button button = new Button(parent, SWT.PUSH); button.setText(text); button.setLayoutData(data); button.addListener(SWT.Selection, listener); return button; } public static Button createCentering(final Composite parent, final String text, final WidgetListener listener) { return createCentering(parent, text, GridData.FILL_HORIZONTAL, listener); } public static Button createCentering(final Composite parent, final String text, final int style, final WidgetListener listener) { GridData data = new GridData(style); Button button = create(parent, text, data, listener); data.widthHint = computeWidthHint(button); return button; } public static int computeWidthHint(final Button button) { button.setFont(JFaceResources.getDialogFont()); int width = new PixelConverter(button).convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH); return max(width, button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x); } }