/*
* Bibliothek - DockingFrames
* Library built on Java/Swing, allows the user to "drag and drop"
* panels containing any Swing-Component the developer likes to add.
*
* Copyright (C) 2007 Benjamin Sigg
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* Benjamin Sigg
* benjamin_sigg@gmx.ch
* CH - Switzerland
*/
package bibliothek.gui.dock.common.location;
import bibliothek.gui.dock.common.CContentArea;
import bibliothek.gui.dock.common.CLocation;
import bibliothek.gui.dock.common.mode.ExtendedMode;
import bibliothek.gui.dock.layout.DockableProperty;
/**
* A location based on a {@link CContentArea}.
* @author Benjamin Sigg
*/
public class CBaseLocation extends CLocation{
/** the contentarea to which this location relates, can be <code>null</code> */
private CContentArea content;
public CBaseLocation( CContentArea center ){
this.content = center;
}
public CBaseLocation(){
// do nothing
}
/**
* Gets the contentarea to which this location relates.
* @return the center or <code>null</code> if the default center is meant.
*/
public CContentArea getContentArea(){
return content;
}
@Override
public CLocation getParent(){
return null;
}
/**
* Gets a location that points to the center of the {@link CContentArea}.
* @return the location pointing to the center where normalized
* dockables are shown
*/
public CContentAreaCenterLocation normal(){
return new CContentAreaCenterLocation( this );
}
/**
* Creates a location describing a normalized element at a given location.
* Note that the normalized area is seen as a rectangle of size 1/1.
* @param x the x-coordinate, a value between 0 and 1
* @param y the y-coordinate, a value between 0 and 1
* @param width the width, <code>x + width</code> should be less or equal to 1
* @param height the height, <code>y + height</code> should be less or equal to 1
* @return the new location
*/
public CRectangleLocation normalRectangle( double x, double y, double width, double height ){
return normal().rectangle( x, y, width, height );
}
/**
* Creates a location describing a normalized element at the north of
* the normalized-area.
* @param size the relative size of the element, a value between 0 (no space)
* and 1 (all space).
* @return the new location
*/
public TreeLocationRoot normalNorth( double size ){
return normal().north( size );
}
/**
* Creates a location describing a normalized element at the south of
* the normalized-area.
* @param size the relative size of the element, a value between 0 (no space)
* and 1 (all space).
* @return the new location
*/
public TreeLocationRoot normalSouth( double size ){
return normal().south( size );
}
/**
* Creates a location describing a normalized element at the east of
* the normalized-area.
* @param size the relative size of the element, a value between 0 (no space)
* and 1 (all space).
* @return the new location
*/
public TreeLocationRoot normalEast( double size ){
return normal().east( size );
}
/**
* Creates a location describing a normalized element at the west of
* the normalized-area.
* @param size the relative size of the element, a value between 0 (no space)
* and 1 (all space).
* @return the new location
*/
public TreeLocationRoot normalWest( double size ){
return normal().west( size );
}
/**
* Creates a location describing a minimized element at the top.
* @return the new location
*/
public CFlapIndexLocation minimalNorth(){
return new CMinimizedLocation( this, Side.NORTH ).append();
}
/**
* Creates a location describing a minimized element at the top.
* @param index the location in the list of minimized elements
* @return the new location
*/
public CFlapIndexLocation minimalNorth( int index ){
return new CMinimizedLocation( this, Side.NORTH ).insert( index );
}
/**
* Creates a location describing a minimized element at the bottom.
* @return the new location
*/
public CFlapIndexLocation minimalSouth(){
return new CMinimizedLocation( this, Side.SOUTH ).append();
}
/**
* Creates a location describing a minimized element at the bottom.
* @param index the location in the list of minimized elements
* @return the new location
*/
public CFlapIndexLocation minimalSouth( int index ){
return new CMinimizedLocation( this, Side.SOUTH ).insert( index );
}
/**
* Creates a location describing a minimized element at the right.
* @return the new location
*/
public CFlapIndexLocation minimalEast(){
return new CMinimizedLocation( this, Side.EAST ).append();
}
/**
* Creates a location describing a minimized element at the right.
* @param index the location in the list of minimized elements
* @return the new location
*/
public CFlapIndexLocation minimalEast( int index ){
return new CMinimizedLocation( this, Side.EAST ).insert( index );
}
/**
* Creates a location describing a minimized element at the left.
* @return the new location
*/
public CFlapIndexLocation minimalWest(){
return new CMinimizedLocation( this, Side.WEST ).append();
}
/**
* Creates a location describing a minimized element at the left.
* @param index the location in the list of minimized elements
* @return the new location
*/
public CFlapIndexLocation minimalWest( int index ){
return new CMinimizedLocation( this, Side.WEST ).insert( index );
}
@Override
public DockableProperty findProperty( DockableProperty successor ){
return successor;
}
@Override
public ExtendedMode findMode(){
return null;
}
@Override
public CLocation expandProperty( DockableProperty property, CLocationExpandStrategy strategy ){
return null;
}
@Override
public String findRoot(){
return null;
}
/**
* @deprecated see {@link CLocation#aside()} for an explanation.
*/
@Deprecated
@Override
public CLocation aside() {
return this;
}
@Override
public String toString() {
if( content == null )
return "[base]";
return "[base " + content.getUniqueId() + "]";
}
}