Eclipse Platform
Release 3.1

org.eclipse.ui
Interface ISizeProvider

All Known Implementing Classes:
StackPresentation

public interface ISizeProvider

Interface implemented by objects that are capable of computing a preferred size

Since:
3.1

Field Summary
static int INFINITE
          Constant used to indicate infinite size.
 
Method Summary
 int computePreferredSize(boolean width, int availableParallel, int availablePerpendicular, int preferredResult)
           Returns the best size for this part, given the available width and height and the workbench's preferred size for the part.
 int getSizeFlags(boolean width)
          Returns a bitwise combination of flags indicating how and when computePreferredSize should be used.
 

Field Detail

INFINITE

public static final int INFINITE
Constant used to indicate infinite size. This is equal to Integer.MAX_VALUE, ensuring that it is greater than any other integer.

See Also:
Constant Field Values
Method Detail

getSizeFlags

public int getSizeFlags(boolean width)
Returns a bitwise combination of flags indicating how and when computePreferredSize should be used. When called with horizontal=true, this indicates the usage of computePreferredSize(true,...) for computing widths. When called with horizontal=false, this indicates the usage of computeSize(false,...) for computing heights. These flags are used for optimization. Each flag gives the part more control over its preferred size but slows down the layout algorithm. Parts should return the minimum set of flags necessary to specify their constraints.

If the return value of this function ever changes, the part must call flushLayout before the changes will take effect.

Parameters:
width - a value of true or false determines whether the return value applies when computing widths or heights respectively. That is, getSizeFlags(true) will be used when calling computePreferredSize(true,...)
Returns:
any bitwise combination of SWT.MAX, SWT.MIN, SWT.WRAP, and SWT.FILL

computePreferredSize

public int computePreferredSize(boolean width,
                                int availableParallel,
                                int availablePerpendicular,
                                int preferredResult)

Returns the best size for this part, given the available width and height and the workbench's preferred size for the part. Parts can overload this to enforce a minimum size, maximum size, or a quantized set of preferred sizes. If width == true, this method computes a width in pixels. If width == false, this method computes a height. availableParallel and availablePerpendicular contain the space available, and preferredParallel contains the preferred result.

This method returns an answer that is less than or equal to availableParallel and as close to preferredParallel as possible. Return values larger than availableParallel will be truncated.

Most presentations will define a minimum size at all times, and a maximum size that only applies when maximized.

The getSizeFlags method controls how frequently this method will be called and what information will be available when it is. Any subclass that specializes this method should also specialize getSizeFlags. computePreferredSize(width, INFINITE, someSize, 0) returns the minimum size of the control (if any). computePreferredSize(width, INFINITE, someSize, INFINITE) returns the maximum size of the control.

Examples:

  • To maintain a minimum area of 100000 pixels: {return availablePerpendicular < 100 ? 1000 : 100000 / availablePerpendicular;} getSizeFlags(boolean width) must return SWT.WRAP | SWT.MIN;
  • Parameters:
    width - indicates whether a width (=true) or a height (=false) is being computed
    availableParallel - available space. This is a width (pixels) if width == true, and a height (pixels) if width == false. A return value larger than this will be ignored.
    availablePerpendicular - available space perpendicular to the direction being measured or INFINITE if unbounded (pixels). This is a height if width == true, or a height if width == false. Implementations will generally ignore this argument unless they contain wrapping widgets. Note this argument will only contain meaningful information if the part returns the SWT.WRAP flag from getSizeFlags(width)
    preferredResult - preferred size of the control (pixels, <= availableParallel). Set to INFINITE if unknown or unbounded.
    Returns:
    returns the preferred size of the control (pixels). This is a width if width == true or a height if width == false. Callers are responsible for rounding down the return value if it is larger than availableParallel. If availableParallel is INFINITE, then a return value of INFINITE is permitted, indicating that the preferred size of the control is unbounded.
    See Also:
    getSizeFlags(boolean)

    Eclipse Platform
    Release 3.1

    Guidelines for using Eclipse APIs.

    Copyright (c) IBM Corp. and others 2000, 2005. All rights reserved.