X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/ui/wizards/dialogfields/LayoutUtil.java b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/ui/wizards/dialogfields/LayoutUtil.java new file mode 100644 index 0000000..baee413 --- /dev/null +++ b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/ui/wizards/dialogfields/LayoutUtil.java @@ -0,0 +1,159 @@ +/******************************************************************************* + * Copyright (c) 2000, 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package net.sourceforge.phpdt.internal.ui.wizards.dialogfields; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; + +public class LayoutUtil { + + /** + * Calculates the number of columns needed by field editors + */ + public static int getNumberOfColumns(DialogField[] editors) { + int nCulumns = 0; + for (int i = 0; i < editors.length; i++) { + nCulumns = Math.max(editors[i].getNumberOfControls(), nCulumns); + } + return nCulumns; + } + + /** + * Creates a composite and fills in the given editors. + * + * @param labelOnTop + * Defines if the label of all fields should be on top of the + * fields + */ + public static void doDefaultLayout(Composite parent, DialogField[] editors, + boolean labelOnTop) { + doDefaultLayout(parent, editors, labelOnTop, 0, 0, 0, 0); + } + + /** + * Creates a composite and fills in the given editors. + * + * @param labelOnTop + * Defines if the label of all fields should be on top of the + * fields + * @param minWidth + * The minimal width of the composite + * @param minHeight + * The minimal height of the composite + */ + public static void doDefaultLayout(Composite parent, DialogField[] editors, + boolean labelOnTop, int minWidth, int minHeight) { + doDefaultLayout(parent, editors, labelOnTop, minWidth, minHeight, 0, 0); + } + + /** + * Creates a composite and fills in the given editors. + * + * @param labelOnTop + * Defines if the label of all fields should be on top of the + * fields + * @param minWidth + * The minimal width of the composite + * @param minHeight + * The minimal height of the composite + * @param marginWidth + * The margin width to be used by the composite + * @param marginHeight + * The margin height to be used by the composite + * @deprecated + */ + public static void doDefaultLayout(Composite parent, DialogField[] editors, + boolean labelOnTop, int minWidth, int minHeight, int marginWidth, + int marginHeight) { + int nCulumns = getNumberOfColumns(editors); + Control[][] controls = new Control[editors.length][]; + for (int i = 0; i < editors.length; i++) { + controls[i] = editors[i].doFillIntoGrid(parent, nCulumns); + } + if (labelOnTop) { + nCulumns--; + modifyLabelSpans(controls, nCulumns); + } + GridLayout layout = new GridLayout(); + if (marginWidth != SWT.DEFAULT) { + layout.marginWidth = marginWidth; + } + if (marginHeight != SWT.DEFAULT) { + layout.marginHeight = marginHeight; + } + layout.numColumns = nCulumns; + parent.setLayout(layout); + } + + private static void modifyLabelSpans(Control[][] controls, int nCulumns) { + for (int i = 0; i < controls.length; i++) { + setHorizontalSpan(controls[i][0], nCulumns); + } + } + + /** + * Sets the span of a control. Assumes that GridData is used. + */ + public static void setHorizontalSpan(Control control, int span) { + Object ld = control.getLayoutData(); + if (ld instanceof GridData) { + ((GridData) ld).horizontalSpan = span; + } else if (span != 1) { + GridData gd = new GridData(); + gd.horizontalSpan = span; + control.setLayoutData(gd); + } + } + + /** + * Sets the width hint of a control. Assumes that GridData is used. + */ + public static void setWidthHint(Control control, int widthHint) { + Object ld = control.getLayoutData(); + if (ld instanceof GridData) { + ((GridData) ld).widthHint = widthHint; + } + } + + /** + * Sets the heigthHint hint of a control. Assumes that GridData is used. + */ + public static void setHeigthHint(Control control, int heigthHint) { + Object ld = control.getLayoutData(); + if (ld instanceof GridData) { + ((GridData) ld).heightHint = heigthHint; + } + } + + /** + * Sets the horizontal indent of a control. Assumes that GridData is used. + */ + public static void setHorizontalIndent(Control control, int horizontalIndent) { + Object ld = control.getLayoutData(); + if (ld instanceof GridData) { + ((GridData) ld).horizontalIndent = horizontalIndent; + } + } + + /** + * Sets the horizontal indent of a control. Assumes that GridData is used. + */ + public static void setHorizontalGrabbing(Control control) { + Object ld = control.getLayoutData(); + if (ld instanceof GridData) { + ((GridData) ld).grabExcessHorizontalSpace = true; + } + } + +}