org.eclipse.jface.layout.RowDataFactory Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.eclipse.jface Show documentation
Show all versions of org.eclipse.jface Show documentation
This is org.eclipse.jface jar used by Scout SDK
The newest version!
/*******************************************************************************
* Copyright (c) 2008, 2015 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;
}
}