Package org.eclipse.jface.layout

Source Code of org.eclipse.jface.layout.RowDataFactory

/*******************************************************************************
* 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:
*
* <ul>
* <li>The same factory can be used many times to create several RowData
* instances</li>
* <li>The setters on RowDataFactory all return "this", allowing them to be
* chained</li>
* </ul>
*
* @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.
   *
   * <p>
   * Initial values are:
   * </p>
   *
   * <ul>
   * <li>exclude(false)</li>
   * <li>hint(SWT.DEFAULT, SWT.DEFAULT)</li>
   * </ul>
   *
   * @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;
  }
}
TOP

Related Classes of org.eclipse.jface.layout.RowDataFactory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.