| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 import '../fn2.dart'; | 5 import '../fn2.dart'; |
| 6 import '../layout2.dart'; | 6 import '../layout2.dart'; |
| 7 import '../theme/typography.dart' as typography; | 7 import '../theme/typography.dart' as typography; |
| 8 import 'dart:sky' as sky; |
| 8 | 9 |
| 9 // RenderNode | 10 // RenderNode |
| 10 class RenderScaffold extends RenderDecoratedBox { | 11 class RenderScaffold extends RenderDecoratedBox { |
| 11 | 12 |
| 12 RenderScaffold({ | 13 RenderScaffold({ |
| 13 BoxDecoration decoration, | 14 BoxDecoration decoration, |
| 14 RenderBox toolbar, | 15 RenderBox toolbar, |
| 15 RenderBox body, | 16 RenderBox body, |
| 16 RenderBox statusbar, | 17 RenderBox statusbar, |
| 17 RenderBox drawer, | 18 RenderBox drawer, |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 if (_floatingActionButton != null) | 75 if (_floatingActionButton != null) |
| 75 dropChild(_floatingActionButton); | 76 dropChild(_floatingActionButton); |
| 76 _floatingActionButton = value; | 77 _floatingActionButton = value; |
| 77 if (_floatingActionButton != null) | 78 if (_floatingActionButton != null) |
| 78 adoptChild(_floatingActionButton); | 79 adoptChild(_floatingActionButton); |
| 79 markNeedsLayout(); | 80 markNeedsLayout(); |
| 80 } | 81 } |
| 81 | 82 |
| 82 bool get sizedByParent => true; | 83 bool get sizedByParent => true; |
| 83 void performResize() { | 84 void performResize() { |
| 84 width = constraints.constrainWidth(double.INFINITY); | 85 size = constraints.constrain(new sky.Size.infinite()); |
| 85 assert(width < double.INFINITY); | 86 assert(size.width < double.INFINITY); |
| 86 height = constraints.constrainHeight(double.INFINITY); | 87 assert(size.height < double.INFINITY); |
| 87 assert(height < double.INFINITY); | |
| 88 } | 88 } |
| 89 | 89 |
| 90 static const kToolbarHeight = 100.0; | 90 static const kToolbarHeight = 100.0; |
| 91 static const kStatusbarHeight = 50.0; | 91 static const kStatusbarHeight = 50.0; |
| 92 static const kButtonX = -16.0; // from right edge of body | 92 static const kButtonX = -16.0; // from right edge of body |
| 93 static const kButtonY = -16.0; // from bottom edge of body | 93 static const kButtonY = -16.0; // from bottom edge of body |
| 94 | 94 |
| 95 void performLayout() { | 95 void performLayout() { |
| 96 double bodyHeight = height; | 96 double bodyHeight = size.height; |
| 97 double bodyPosition = 0.0; | 97 double bodyPosition = 0.0; |
| 98 if (toolbar != null) { | 98 if (toolbar != null) { |
| 99 toolbar.layout(new BoxConstraints.tight(width: width, height: kToolbarHeig
ht)); | 99 toolbar.layout(new BoxConstraints.tight(width: size.width, height: kToolba
rHeight)); |
| 100 assert(toolbar.parentData is BoxParentData); | 100 assert(toolbar.parentData is BoxParentData); |
| 101 toolbar.parentData.x = 0.0; | 101 toolbar.parentData.position = new sky.Point(0.0, 0.0); |
| 102 toolbar.parentData.y = 0.0; | |
| 103 bodyPosition = kToolbarHeight; | 102 bodyPosition = kToolbarHeight; |
| 104 bodyHeight -= kToolbarHeight; | 103 bodyHeight -= kToolbarHeight; |
| 105 } | 104 } |
| 106 if (statusbar != null) { | 105 if (statusbar != null) { |
| 107 statusbar.layout(new BoxConstraints.tight(width: width, height: kStatusbar
Height)); | 106 statusbar.layout(new BoxConstraints.tight(width: size.width, height: kStat
usbarHeight)); |
| 108 assert(statusbar.parentData is BoxParentData); | 107 assert(statusbar.parentData is BoxParentData); |
| 109 statusbar.parentData.x = 0.0; | 108 statusbar.parentData.position = new sky.Point(0.0, size.height - kStatusba
rHeight); |
| 110 statusbar.parentData.y = height - kStatusbarHeight; | |
| 111 bodyHeight -= kStatusbarHeight; | 109 bodyHeight -= kStatusbarHeight; |
| 112 } | 110 } |
| 113 if (body != null) { | 111 if (body != null) { |
| 114 body.layout(new BoxConstraints.tight(width: width, height: bodyHeight)); | 112 body.layout(new BoxConstraints.tight(width: size.width, height: bodyHeight
)); |
| 115 assert(body.parentData is BoxParentData); | 113 assert(body.parentData is BoxParentData); |
| 116 body.parentData.x = 0.0; | 114 body.parentData.position = new sky.Point(0.0, bodyPosition); |
| 117 body.parentData.y = bodyPosition; | |
| 118 } | 115 } |
| 119 if (drawer != null) { | 116 if (drawer != null) { |
| 120 drawer.layout(new BoxConstraints(minWidth: 0.0, maxWidth: width, minHeight
: height, maxHeight: height)); | 117 drawer.layout(new BoxConstraints(minWidth: 0.0, maxWidth: size.width, minH
eight: size.height, maxHeight: size.height)); |
| 121 assert(drawer.parentData is BoxParentData); | 118 assert(drawer.parentData is BoxParentData); |
| 122 drawer.parentData.x = 0.0; | 119 drawer.parentData.position = new sky.Point(0.0, 0.0); |
| 123 drawer.parentData.y = 0.0; | |
| 124 } | 120 } |
| 125 if (floatingActionButton != null) { | 121 if (floatingActionButton != null) { |
| 126 floatingActionButton.layout(new BoxConstraints(minWidth: 0.0, maxWidth: wi
dth, minHeight: height, maxHeight: height)); | 122 floatingActionButton.layout(new BoxConstraints(minWidth: 0.0, maxWidth: si
ze.width, minHeight: size.height, maxHeight: size.height)); |
| 127 assert(floatingActionButton.parentData is BoxParentData); | 123 assert(floatingActionButton.parentData is BoxParentData); |
| 128 floatingActionButton.parentData.x = width - xButtonX; | 124 floatingActionButton.parentData.position = new sky.Point(size.width - xBut
tonX, bodyPosition + bodyHeight - kButtonY); |
| 129 floatingActionButton.parentData.y = bodyPosition + bodyHeight - kButtonY; | |
| 130 } | 125 } |
| 131 } | 126 } |
| 132 | 127 |
| 133 void paint(RenderNodeDisplayList canvas) { | 128 void paint(RenderNodeDisplayList canvas) { |
| 134 if (body != null) | 129 if (body != null) |
| 135 canvas.paintChild(body, (body.parentData as BoxParentData).x, (body.parent
Data as BoxParentData).y); | 130 canvas.paintChild(body, (body.parentData as BoxParentData).position); |
| 136 if (statusbar != null) | 131 if (statusbar != null) |
| 137 canvas.paintChild(statusbar, (statusbar.parentData as BoxParentData).x, (s
tatusbar.parentData as BoxParentData).y); | 132 canvas.paintChild(statusbar, (statusbar.parentData as BoxParentData).posit
ion); |
| 138 if (toolbar != null) | 133 if (toolbar != null) |
| 139 canvas.paintChild(toolbar, (toolbar.parentData as BoxParentData).x, (toolb
ar.parentData as BoxParentData).y); | 134 canvas.paintChild(toolbar, (toolbar.parentData as BoxParentData).position)
; |
| 140 if (floatingActionButton != null) | 135 if (floatingActionButton != null) |
| 141 canvas.paintChild(floatingActionButton, (floatingActionButton.parentData a
s BoxParentData).x, (floatingActionButton.parentData as BoxParentData).y); | 136 canvas.paintChild(floatingActionButton, (floatingActionButton.parentData a
s BoxParentData).position); |
| 142 if (drawer != null) | 137 if (drawer != null) |
| 143 canvas.paintChild(drawer, (drawer.parentData as BoxParentData).x, (drawer.
parentData as BoxParentData).y); | 138 canvas.paintChild(drawer, (drawer.parentData as BoxParentData).position); |
| 144 } | 139 } |
| 145 | 140 |
| 146 void hitTestChildren(HitTestResult result, { double x, double y }) { | 141 void hitTestChildren(HitTestResult result, { sky.Point position }) { |
| 147 assert(floatingActionButton == null || floatingActionButton.parentData is Bo
xParentData); | 142 assert(floatingActionButton == null || floatingActionButton.parentData is Bo
xParentData); |
| 148 assert(statusbar == null || statusbar.parentData is BoxParentData); | 143 assert(statusbar == null || statusbar.parentData is BoxParentData); |
| 149 if ((drawer != null) && (x < drawer.width)) { | 144 if ((drawer != null) && (x < drawer.size.width)) { |
| 150 drawer.hitTest(result, x: x, y: y); | 145 drawer.hitTest(result, position: position); |
| 151 } else if ((floatingActionButton != null) && (x >= floatingActionButton.pare
ntData.x) && (x < floatingActionButton.parentData.x + floatingActionButton.width
) | 146 } else if ((floatingActionButton != null) && (position.x >= floatingActionBu
tton.parentData.position.x) && (position.x < floatingActionButton.parentData.pos
ition.x + floatingActionButton.size.width) |
| 152 && (y >= floatingActionButton.pare
ntData.y) && (y < floatingActionButton.parentData.y + floatingActionButton.heigh
t)) { | 147 && (position.y >= floatingActionBu
tton.parentData.position.y) && (position.y < floatingActionButton.parentData.pos
ition.y + floatingActionButton.size.height)) { |
| 153 floatingActionButton.hitTest(result, x: x-floatingActionButton.parentData.
x, y: y-floatingActionButton.parentData.y); | 148 floatingActionButton.hitTest(result, position: new sky.Point(position.x -
floatingActionButton.parentData.position.x, position.y - floatingActionButton.pa
rentData.position.y)); |
| 154 } else if ((toolbar != null) && (y < toolbar.height)) { | 149 } else if ((toolbar != null) && (position.y < toolbar.size.height)) { |
| 155 toolbar.hitTest(result, x: x, y: y); | 150 toolbar.hitTest(result, position: position); |
| 156 } else if ((statusbar != null) && (y > statusbar.parentData.y)) { | 151 } else if ((statusbar != null) && (position.y > statusbar.parentData.positio
n.y)) { |
| 157 statusbar.hitTest(result, x: x, y: y-statusbar.parentData.y); | 152 statusbar.hitTest(result, position: new sky.Point(position.x, position.y -
statusbar.parentData.position.y)); |
| 158 } else if (body != null) { | 153 } else if (body != null) { |
| 159 body.hitTest(result, x: x, y: y-body.parentData.y); | 154 body.hitTest(result, position: new sky.Point(position.x, position.y - body
.parentData.position.y)); |
| 160 } | 155 } |
| 161 } | 156 } |
| 162 | 157 |
| 163 } | 158 } |
| 164 | 159 |
| 165 class Scaffold extends RenderNodeWrapper { | 160 class Scaffold extends RenderNodeWrapper { |
| 166 | 161 |
| 167 // static final Style _style = new Style(''' | 162 // static final Style _style = new Style(''' |
| 168 // ${typography.typeface}; | 163 // ${typography.typeface}; |
| 169 // ${typography.black.body1};'''); | 164 // ${typography.black.body1};'''); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 void syncRenderNode(UINode old) { | 214 void syncRenderNode(UINode old) { |
| 220 super.syncRenderNode(old); | 215 super.syncRenderNode(old); |
| 221 syncChild(toolbar, old is Scaffold ? old.toolbar : null, #toolbar); | 216 syncChild(toolbar, old is Scaffold ? old.toolbar : null, #toolbar); |
| 222 syncChild(body, old is Scaffold ? old.body : null, #body); | 217 syncChild(body, old is Scaffold ? old.body : null, #body); |
| 223 syncChild(statusbar, old is Scaffold ? old.statusbar : null, #statusbar); | 218 syncChild(statusbar, old is Scaffold ? old.statusbar : null, #statusbar); |
| 224 syncChild(drawer, old is Scaffold ? old.drawer : null, #drawer); | 219 syncChild(drawer, old is Scaffold ? old.drawer : null, #drawer); |
| 225 syncChild(floatingActionButton, old is Scaffold ? old.floatingActionButton :
null, #floatingActionButton); | 220 syncChild(floatingActionButton, old is Scaffold ? old.floatingActionButton :
null, #floatingActionButton); |
| 226 } | 221 } |
| 227 | 222 |
| 228 } | 223 } |
| OLD | NEW |