forked from emberjs-addons/sproutcore-ui
-
Notifications
You must be signed in to change notification settings - Fork 0
/
layout_support.js
69 lines (50 loc) · 1.51 KB
/
layout_support.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// ==========================================================================
// Project: SproutCore Runtime
// Copyright: ©2011 Strobe Inc. and contributors.
// License: Licensed under MIT license (see license.js)
// ==========================================================================
var set = SC.set;
var get = SC.get;
/**
@class
@extends SC.Object
*/
UI.LayoutSupport = SC.Mixin.create(
/** @scope UI.LayoutManager.prototype */{
hasLayoutSupport: true,
anchor: null,
width: null,
height: null,
_layout: null,
layoutManager: UI.LayoutManager.create(),
_getLayoutManager: function() {
if (this._managerCache) return this._managerCache;
var manager = null,
view = get(this, 'parentView');
while (view) {
manager = get(view, 'layoutManager');
if (manager) { break; }
view = get(view, 'parentView');
}
return this._managerCache = manager || UI.rootLayoutManager;
},
applyLayout: function(buffer,layout) {
buffer.style('position','absolute');
for (var prop in layout) {
buffer.style(prop,layout[prop]);
}
},
render: function(buffer) {
var layoutManager = this._getLayoutManager();
var layout = this._layout = layoutManager.layoutForAnchor(this, get(this,'anchor'), {
size: get(this,'size')
});
this.applyLayout(buffer,layout);
return this._super();
},
destroy: function() {
var manager = this._getLayoutManager();
//manager.cleanUpLayout(this._layout);
return this._super();
}
});