All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.jface.layout.RowDataFactory Maven / Gradle / Ivy

The newest version!
/*******************************************************************************
 * Copyright (c) 2008 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:
 *     Stefan Xenos, IBM Corporation - initial API and implementation
 ******************************************************************************/

package org.eclipse.jface.layout;

import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.RowData;
import org.eclipse.swt.widgets.Control;

/**
 * This class provides a convenient shorthand for creating and initialising
 * RowData. This offers several benefits over creating RowData the normal way:
 * 
 * 
    *
  • The same factory can be used many times to create several RowData * instances
  • *
  • The setters on RowDataFactory all return "this", allowing them to be * chained
  • *
* * @since 3.5 */ public final class RowDataFactory { private RowData data; /** * Creates a RowDataFactory that creates copies of the given RowData. * * @param data * object to be copied */ private RowDataFactory(RowData data) { this.data = data; } /** * Creates a new RowDataFactory initialized with the SWT defaults. * *

* Initial values are: *

* *
    *
  • exclude(false)
  • *
  • hint(SWT.DEFAULT, SWT.DEFAULT)
  • *
* * @return a new GridDataFactory instance */ public static RowDataFactory swtDefaults() { return new RowDataFactory(new RowData()); } /** * Creates a new RowDataFactory that creates copies of the given RowData by * default. * * @param data * RowData to copy * @return a new RowDataFactory that creates copies of the argument by * default */ public static RowDataFactory createFrom(RowData data) { return new RowDataFactory(copyData(data)); } /** * Returns a copy of the given RowData * * @param data * RowData to copy * @return a copy of the argument */ public static RowData copyData(RowData data) { RowData newData = new RowData(data.width, data.height); newData.exclude = data.exclude; return newData; } /** * Instructs the GridLayout to ignore this control when performing layouts. * * @param shouldExclude * true iff the control should be excluded from layouts * @return this */ public RowDataFactory exclude(boolean shouldExclude) { data.exclude = shouldExclude; return this; } /** * Creates a new GridData instance. All attributes of the GridData instance * will be initialised by the factory. * * @return a new GridData instance */ public RowData create() { return copyData(data); } /** * Creates a copy of the receiver. * * @return a copy of the receiver */ public RowDataFactory copy() { return new RowDataFactory(create()); } /** * Sets the layout data on the given control. Creates a new RowData instance * and assigns it to the control by calling control.setLayoutData. * * @param control * control whose layout data will be initialised */ public void applyTo(Control control) { control.setLayoutData(create()); } /** * Sets the width and height hints. The width and height hints override the * control's preferred size. If either hint is set to SWT.DEFAULT, the * control's preferred size is used. * * @param xHint * horizontal hint (pixels), or SWT.DEFAULT to use the control's * preferred size * @param yHint * vertical hint (pixels), or SWT.DEFAULT to use the control's * preferred size * @return this */ public RowDataFactory hint(int xHint, int yHint) { data.width = xHint; data.height = yHint; return this; } /** * Sets the width and height hints. The width and height hints override the * control's preferred size. If either hint is set to SWT.DEFAULT, the * control's preferred size is used. * * @param hint * size (pixels) to be used instead of the control's preferred * size. If the x or y values are set to SWT.DEFAULT, the * control's computeSize() method will be used to obtain that * dimension of the preferred size. * @return this */ public RowDataFactory hint(Point hint) { data.width = hint.x; data.height = hint.y; return this; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy