layout.js
上传用户:kimgenplus
上传日期:2016-06-05
资源大小:20877k
文件大小:3k
源码类别:

OA系统

开发平台:

Java

  1. /*
  2. Copyright (c) 2004-2006, The Dojo Foundation
  3. All Rights Reserved.
  4. Licensed under the Academic Free License version 2.1 or above OR the
  5. modified BSD license. For more information on Dojo licensing, see:
  6. http://dojotoolkit.org/community/licensing.shtml
  7. */
  8. dojo.provide("dojo.widget.html.layout");
  9. dojo.require("dojo.lang.common");
  10. dojo.require("dojo.string.extras");
  11. dojo.require("dojo.html.style");
  12. dojo.require("dojo.html.layout");
  13. dojo.widget.html.layout = function (container, children, layoutPriority) {
  14. dojo.html.addClass(container, "dojoLayoutContainer");
  15. children = dojo.lang.filter(children, function (child, idx) {
  16. child.idx = idx;
  17. return dojo.lang.inArray(["top", "bottom", "left", "right", "client", "flood"], child.layoutAlign);
  18. });
  19. if (layoutPriority && layoutPriority != "none") {
  20. var rank = function (child) {
  21. switch (child.layoutAlign) {
  22.   case "flood":
  23. return 1;
  24.   case "left":
  25.   case "right":
  26. return (layoutPriority == "left-right") ? 2 : 3;
  27.   case "top":
  28.   case "bottom":
  29. return (layoutPriority == "left-right") ? 3 : 2;
  30.   default:
  31. return 4;
  32. }
  33. };
  34. children.sort(function (a, b) {
  35. return (rank(a) - rank(b)) || (a.idx - b.idx);
  36. });
  37. }
  38. var f = {top:dojo.html.getPixelValue(container, "padding-top", true), left:dojo.html.getPixelValue(container, "padding-left", true)};
  39. dojo.lang.mixin(f, dojo.html.getContentBox(container));
  40. dojo.lang.forEach(children, function (child) {
  41. var elm = child.domNode;
  42. var pos = child.layoutAlign;
  43. with (elm.style) {
  44. left = f.left + "px";
  45. top = f.top + "px";
  46. bottom = "auto";
  47. right = "auto";
  48. }
  49. dojo.html.addClass(elm, "dojoAlign" + dojo.string.capitalize(pos));
  50. if ((pos == "top") || (pos == "bottom")) {
  51. dojo.html.setMarginBox(elm, {width:f.width});
  52. var h = dojo.html.getMarginBox(elm).height;
  53. f.height -= h;
  54. if (pos == "top") {
  55. f.top += h;
  56. } else {
  57. elm.style.top = f.top + f.height + "px";
  58. }
  59. if (child.onResized) {
  60. child.onResized();
  61. }
  62. } else {
  63. if (pos == "left" || pos == "right") {
  64. var w = dojo.html.getMarginBox(elm).width;
  65. if (child.resizeTo) {
  66. child.resizeTo(w, f.height);
  67. } else {
  68. dojo.html.setMarginBox(elm, {width:w, height:f.height});
  69. }
  70. f.width -= w;
  71. if (pos == "left") {
  72. f.left += w;
  73. } else {
  74. elm.style.left = f.left + f.width + "px";
  75. }
  76. } else {
  77. if (pos == "flood" || pos == "client") {
  78. if (child.resizeTo) {
  79. child.resizeTo(f.width, f.height);
  80. } else {
  81. dojo.html.setMarginBox(elm, {width:f.width, height:f.height});
  82. }
  83. }
  84. }
  85. }
  86. });
  87. };
  88. dojo.html.insertCssText(".dojoLayoutContainer{ position: relative; display: block; overflow: hidden; }n" + "body .dojoAlignTop, body .dojoAlignBottom, body .dojoAlignLeft, body .dojoAlignRight { position: absolute; overflow: hidden; }n" + "body .dojoAlignClient { position: absolute }n" + ".dojoAlignClient { overflow: auto; }n");