Team:WITS-CSIR SA/js/lib/jlayout.border.js

From 2011.igem.org

Revision as of 08:13, 3 September 2011 by Nkruger (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

/*!

* jLayout Border Layout - JavaScript Layout Algorithms v0.4
*
* Licensed under the new BSD License.
* Copyright 2008-2009, Bram Stein
* All rights reserved.
*/

/*global jLayout */ (function () { jLayout = typeof jLayout === 'undefined' ? {} : jLayout;

jLayout.border = function (spec) { var my = {}, that = {}, east = spec.east, west = spec.west, north = spec.north, south = spec.south, center = spec.center;

my.hgap = spec.hgap || 0; my.vgap = spec.vgap || 0;

that.items = function () { var items = []; if (east) { items.push(east); }

if (west) { items.push(west); }

if (north) { items.push(north); }

if (south) { items.push(south); }

if (center) { items.push(center); } return items; };

that.layout = function (container) { var size = container.bounds(), insets = container.insets(), top = insets.top, bottom = size.height - insets.bottom, left = insets.left, right = size.width - insets.right, tmp;

if (north && north.isVisible()) { tmp = north.preferredSize(); north.bounds({'x': left, 'y': top, 'width': right - left, 'height': tmp.height}); north.doLayout();

top += tmp.height + my.vgap; } if (south && south.isVisible()) { tmp = south.preferredSize(); south.bounds({'x': left, 'y': bottom - tmp.height, 'width': right - left, 'height': tmp.height}); south.doLayout();

bottom -= tmp.height + my.vgap; } if (east && east.isVisible()) { tmp = east.preferredSize(); east.bounds({'x': right - tmp.width, 'y': top, 'width': tmp.width, 'height': bottom - top}); east.doLayout();

right -= tmp.width + my.hgap; } if (west && west.isVisible()) { tmp = west.preferredSize(); west.bounds({'x': left, 'y': top, 'width': tmp.width, 'height': bottom - top}); west.doLayout();

left += tmp.width + my.hgap; } if (center && center.isVisible()) { center.bounds({'x': left, 'y': top, 'width': right - left, 'height': bottom - top}); center.doLayout(); } return container; };

function typeLayout(type) { return function (container) { var insets = container.insets(), width = 0, height = 0, type_size;

if (east && east.isVisible()) { type_size = east[type + 'Size'](); width += type_size.width + my.hgap; height = type_size.height; } if (west && west.isVisible()) { type_size = west[type + 'Size'](); width += type_size.width + my.hgap; height = Math.max(type_size.height, height); } if (center && center.isVisible()) { type_size = center[type + 'Size'](); width += type_size.width; height = Math.max(type_size.height, height); } if (north && north.isVisible()) { type_size = north[type + 'Size'](); width = Math.max(type_size.width, width); height += type_size.height + my.vgap; } if (south && south.isVisible()) { type_size = south[type + 'Size'](); width = Math.max(type_size.width, width); height += type_size.height + my.vgap; }

return { 'width': width + insets.left + insets.right, 'height': height + insets.top + insets.bottom }; }; } that.preferred = typeLayout('preferred'); that.minimum = typeLayout('minimum'); that.maximum = typeLayout('maximum'); return that; }; })();