
org.eclipse.draw2d.OrderedLayout Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of draw2d-rwt Show documentation
Show all versions of draw2d-rwt Show documentation
NetXMS fork of Draw2D for RAP
The newest version!
/*******************************************************************************
* Copyright (c) 2011 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.draw2d;
import org.eclipse.draw2d.geometry.Transposer;
/**
* Abstract superclass for layout managers that arrange their children in
* columns/rows.
*
* @since 3.7
*/
public abstract class OrderedLayout extends AbstractHintLayout {
/** Constant to specify components to be aligned in the center */
public static final int ALIGN_CENTER = 0;
/** Constant to specify components to be aligned on the left/top */
public static final int ALIGN_TOPLEFT = 1;
/** Constant to specify components to be aligned on the right/bottom */
public static final int ALIGN_BOTTOMRIGHT = 2;
/**
* Constant to specify components should be layed out horizontally
*
* @deprecated Pulled up from derived layout manager and deprecated here
* because unused.
*/
public static final boolean HORIZONTAL = true;
/**
* Constant to specify components should be layed out vertically
*
* @deprecated Pulled up from derived layout manager and deprecated here
* because unused.
*/
public static final boolean VERTICAL = false;
/**
* The horizontal property.
*
* @deprecated Use {@link #setHorizontal(boolean)} and
* {@link #isHorizontal()} instead.
*/
protected boolean horizontal;
/**
* The alignment along the minor axis.
*
* @deprecated Use {@link #getMinorAlignment()} and
* {@link #setMinorAlignment(int)} instead.
*/
protected int minorAlignment;
/**
* Transposer object that may be used in layout calculations. Will be
* automatically enabled/disabled dependent on the default and the actual
* orientation.
*
* @noreference This field is not intended to be referenced by clients.
*/
protected Transposer transposer = new Transposer();
/**
* Constructs a new {@link OrderedLayout} with the default orientation and a
* minor alignment of {@link #ALIGN_TOPLEFT}.
*/
public OrderedLayout() {
setHorizontal(getDefaultOrientation() == PositionConstants.HORIZONTAL);
setMinorAlignment(ALIGN_TOPLEFT);
}
/**
* Returns the default orientation of this layout.
*
* @return one of {@link PositionConstants#HORIZONTAL} or
* {@link PositionConstants#VERTICAL}
*/
protected abstract int getDefaultOrientation();
/**
* Returns the minor alignment of the layout. Minor minor axis is the axis
* perpendicular to the overall orientation set in the constructor.
*
* @return the minor alignment
*/
public int getMinorAlignment() {
return minorAlignment;
}
/**
* Returns true
if the orientation of the layout is horizontal.
*
* @return true
if the orientation of the layout is horizontal
*/
public boolean isHorizontal() {
return horizontal;
}
/**
* Returns whether figures should obtain the same height/width in the minor
* axis.
*
* @return whether children are to be stretched in the minor axis.
*
* TODO: Made abstract here, so that derived layout managers can guarantee
* backwards compatibility for their exposed fields. Can be made
* concrete in the next major release, removing implementations in
* the derived layout managers.
*/
public abstract boolean isStretchMinorAxis();
/**
* Sets the orientation of the layout.
*
* @param flag
* true
if this layout should be horizontal,
* false
otherwise.
*/
public void setHorizontal(boolean flag) {
if (horizontal == flag)
return;
invalidate();
horizontal = flag;
updateTransposerEnabledState();
}
/**
* Sets the alignment of the children contained in the layout. Possible
* values are {@link #ALIGN_CENTER}, {@link #ALIGN_BOTTOMRIGHT} and
* {@link #ALIGN_TOPLEFT}.
*
* @param align
* the minor alignment
*/
public void setMinorAlignment(int align) {
minorAlignment = align;
}
/**
* Causes children that are smaller in the dimension of the minor axis to be
* stretched to fill the minor axis. The minor axis is the opposite of the
* orientation. That is, in horizontal orientation, all figures will have
* the same height. If in vertical orientation, all figures will have the
* same width.
*
* @param value
* whether children should be stretched in the minor axis.
* TODO: Made abstract here, so that derived layout managers can guarantee
* backwards compatibility for their exposed fields. Can be made
* concrete in the next major release, removing implementations in
* the derived layout managers.
*/
public abstract void setStretchMinorAxis(boolean value);
/**
* Updates the enabled state of the {@link #transposer} in case the layout
* has a different orientation that its default one.
*/
private void updateTransposerEnabledState() {
// enable transposer if the current orientation differs from the default
// orientation, disable it otherwise
transposer.setEnabled(isHorizontal()
&& getDefaultOrientation() == PositionConstants.VERTICAL
|| !isHorizontal()
&& getDefaultOrientation() == PositionConstants.HORIZONTAL);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy