echopointng.able.Positionable Maven / Gradle / Ivy
Show all versions of ibis-echo2 Show documentation
/*
* This file is part of the Echo Point Project. This project is a collection
* of Components that have extended the Echo Web Application Framework.
*
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*/
package echopointng.able;
import nextapp.echo2.app.Extent;
/**
* A Positionable
is one that can be postioned anywhere on the
* screen, regardless of the flow layout of other components.
*
* By default the it acts like a normal component, and will be rendered with the
* flow of its parent and siblings. The component has its Positioning property
* set to POSITIONING_FLOW.
*
*
POSITIONING
*
* However if the Positioning property is POSITIONING_ABSOLUTE or
* POSITIONING_RELATIVE then the component will break out of the normal flow
* layout and position themselves directly on the screen.
*
* If the Positioning is POSITIONING_RELATIVE, then the component is positioned
* at an at a point on the screen relative to its first positioned parent
* component. If it has no parents that are positioned, then it will be
* positioned relative to the origins of the client window.
*
* If the Positioning is POSITIONING_ABSOLUTE, then the component is positioned
* at an absolute point outside the normal flow of layout. The left, top, right
* and bottom properties can be used to position the component.
*
* If the Positioning is POSITIONING_FIXED, then the component is positioned at
* an absolute point from the origin of the client window. The left, top, right
* and bottom properties can be used to position the component.
*
*
Left, Top, Right, Bottom
* Typically you would set the Left and Top properties in order to get a
* Positionable to a specified location. However you can also use the Right and
* Bottom properties.
*
* For example you could position a component to 100 pixels in from the bottom
* and 10 pixels if from the right by only settting the bottom and right
* properties to 100 and 10 respectively. The width of the component will be
* determined by the content.
*
* A convenience method called clearPositioning() is provided to clear
* all positioning and have the component acts like a normal flow component.
*
*
Z-INDEX
*
* A Positionable
also supports a z-idex, which controls how it
* is layered over other components, especially other Positionable
* 's.
*
* If no zIndex is to apply then the Integer.MIN_VALUE can be used in which case
* no zIndex will be set.
*/
public interface Positionable extends Delegateable {
/**
* The Positionable is a normal Positionable, laid out according to the
* normal flow.
*/
public static final int STATIC = 1;
/**
* The Positionable's position (and possibly size) is specified with the
* 'top', 'right', 'bottom', and 'left' properties. These properties specify
* offsets with respect to the Positionable's containing Positionable.
* Absolutely positioned Positionables are taken out of the normal flow.
* This means they have no impact on the layout of later siblings.
*/
public static final int ABSOLUTE = 2;
/**
* The Positionable's position is calculated according to the normal flow.
* Then the Positionable is offset relative to its normal position.
*/
public static final int RELATIVE = 4;
/**
* The Positionable's position is calculated according to the 'absolute'
* model, but in addition, the Positionable is fixed with respect to the
* viewport and doesn't move when scrolled.
*/
public static final int FIXED = 8;
public static final String PROPERTY_BOTTOM = "bottom";
public static final String PROPERTY_LEFT = "left";
public static final String PROPERTY_POSITION = "position";
public static final String PROPERTY_RIGHT = "right";
public static final String PROPERTY_TOP = "top";
public static final String PROPERTY_Z_INDEX = "zIndex";
/**
* This sets all the positioning attributes (left,top,right,bottom,z-index)
* to null or zero.
*/
public void clear();
/**
* Returns the bottom Y position of the component
*/
public Extent getBottom();
/**
* Returns the left X position of the component
*/
public Extent getLeft();
/**
* This can be one of :
*
* - POSITIONING_STATIC
* - POSITIONING_RELATIVE
* - POSITIONING_ABSOLUTE
* - POSITIONING_FIXED
*
*/
public int getPosition();
/**
* Returns the right X position of the component
*/
public Extent getRight();
/**
* Returns the top Y position of the component
*/
public Extent getTop();
/**
* Returns the z-index of the component
*/
public int getZIndex();
/**
* This returns true if any positioning is in place other than
* normal flow ie. STATIC.
*
*/
public boolean isPositioned();
/**
* Sets the bottom Y position of the component
*/
public void setBottom(Extent newValue);
/**
* Set the left X position of the component
*/
public void setLeft(Extent newValue);
/**
* Sets the position of the component
*
* This can be one of :
*
* - POSITIONING_STATIC
* - POSITIONING_RELATIVE
* - POSITIONING_ABSOLUTE
* - POSITIONING_FIXED
*
*/
public void setPosition(int newPositioning);
/**
* Sets the right X position of the component
*/
public void setRight(Extent newValue);
/**
* Sets the top Y position of the component
*/
public void setTop(Extent newValue);
/**
* Sets the z-index of the component
*/
public void setZIndex(int newValue);
}