/*
* Ext GWT - Ext for GWT
* Copyright(c) 2007-2009, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
package com.extjs.gxt.ui.client.widget.layout;
import com.extjs.gxt.ui.client.Style.LayoutRegion;
import com.extjs.gxt.ui.client.util.Margins;
import com.extjs.gxt.ui.client.widget.SplitBar;
/**
* Layout data describing a "region" in a border panel.
*/
public class BorderLayoutData extends LayoutData {
private int minSize = 50;
private boolean floatable = true;
private int maxSize = 500;
private float size = 200;
private boolean collapsible;
private Margins margins = new Margins();
private boolean split;
private boolean hidden = false;
private boolean hideCollapseTool = false;
/**
* The region the mapped content panel will be placed.
*/
private LayoutRegion region;
/**
* Creates a new border layout data.
*
* @param region the region
*/
public BorderLayoutData(LayoutRegion region) {
this.setRegion(region);
}
/**
* Creates a new border layout data.
*
* @param region the region
* @param size the region's size
*/
public BorderLayoutData(LayoutRegion region, float size) {
this.setRegion(region);
this.setSize(size);
}
public BorderLayoutData(LayoutRegion region, float size, int min, int max) {
this(region, size);
this.setMinSize(min);
this.setMaxSize(max);
setSplit(true);
}
/**
* Returns the margins.
*
* @return the margins
*/
public Margins getMargins() {
return margins;
}
/**
* Returns the region's max size.
*
* @return the max size
*/
public int getMaxSize() {
return maxSize;
}
/**
* Returns the region's min size.
*
* @return the min size
*/
public int getMinSize() {
return minSize;
}
/**
* Returns the layout region.
*
* @return the region
*/
public LayoutRegion getRegion() {
return region;
}
/**
* Returns the region's size.
*
* @return the region size
*/
public float getSize() {
return size;
}
/**
* Returns true if the collapse tool is hidden.
*
* @return the hide collapse tool state
*/
public boolean getHideCollapseTool() {
return hideCollapseTool;
}
/**
* Returns true if collapsing is enabled.
*
* @return the collapse state
*/
public boolean isCollapsible() {
return collapsible;
}
/**
* Returns true if the region is floatable.
*
* @return the float state
*/
public boolean isFloatable() {
return floatable;
}
/**
* Returns true if the component is hidden.
*
* @return the hidden state
*/
public boolean isHidden() {
return hidden;
}
/**
* Returns true if the region is split.
*
* @return the split state
*/
public boolean isSplit() {
return split;
}
/**
* True to allow the user to collapse this region (defaults to false). If
* true, an expand/collapse tool button will automatically be rendered into
* the title bar of the region, otherwise the button will not be shown.
*
* @param collapsible true to enable collapsing
*/
public void setCollapsible(boolean collapsible) {
this.collapsible = collapsible;
}
/**
* True to allow clicking a collapsed region's bar to display the region's
* panel floated above the layout, false to force the user to fully expand a
* collapsed region by clicking the expand button to see it again (defaults to
* true).
*
* @param floatable true to enable floating
*/
public void setFloatable(boolean floatable) {
this.floatable = floatable;
}
/**
* True to hide the component.
*
* @param hidden true to hide
*/
public void setHidden(boolean hidden) {
this.hidden = hidden;
}
/**
* Sets the margins to apply to the region.
*
* @param margins the margins
*/
public void setMargins(Margins margins) {
this.margins = margins;
}
/**
* Sets the maximum allowable size in pixels for this region (defaults to
* 500).
*
* @param maxSize the max size
*/
public void setMaxSize(int maxSize) {
this.maxSize = maxSize;
}
/**
* Sets the minimum allowable size in pixels for this region (defaults to 50).
*
* @param minSize the min size
*/
public void setMinSize(int minSize) {
this.minSize = minSize;
}
/**
* Sets the region the mapped content panel will be placed.
*
* @param region the region
*/
public void setRegion(LayoutRegion region) {
this.region = region;
}
/**
* The region's preferred size. Values of 1 or less are treated as percentages
* (defaults to 200).
*
* @param size the region size
*/
public void setSize(float size) {
this.size = size;
}
/**
* True to display a {@link SplitBar} between this region and its neighbor,
* allowing the user to resize the regions dynamically (defaults to false).
* When split = true, it is common to specify a {@link #minSize} and
* {@link #maxSize} for the region.
*
* @param split true to enable a split bar
*/
public void setSplit(boolean split) {
this.split = split;
}
/**
* True to hide the contained panel's collapse toggle buttons, false to
* display it (defaults to false).
*
* @param hideCollapseTool true to hide
*/
public void setHideCollapseTool(boolean hideCollapseTool) {
this.hideCollapseTool = hideCollapseTool;
}
}