| Index: sky/sdk/lib/framework/widgets/scaffold.dart
|
| diff --git a/sky/sdk/lib/framework/widgets/scaffold.dart b/sky/sdk/lib/framework/widgets/scaffold.dart
|
| deleted file mode 100644
|
| index 5d95f6306467b6c9c5e2d00f2032b5f8324de22d..0000000000000000000000000000000000000000
|
| --- a/sky/sdk/lib/framework/widgets/scaffold.dart
|
| +++ /dev/null
|
| @@ -1,217 +0,0 @@
|
| -// Copyright 2015 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -import '../rendering/box.dart';
|
| -import '../rendering/object.dart';
|
| -import '../theme2/view_configuration.dart';
|
| -import 'ui_node.dart';
|
| -
|
| -enum ScaffoldSlots {
|
| - toolbar,
|
| - body,
|
| - statusBar,
|
| - drawer,
|
| - floatingActionButton
|
| -}
|
| -
|
| -class RenderScaffold extends RenderBox {
|
| -
|
| - RenderScaffold({
|
| - RenderBox toolbar,
|
| - RenderBox body,
|
| - RenderBox statusBar,
|
| - RenderBox drawer,
|
| - RenderBox floatingActionButton
|
| - }) {
|
| - this[ScaffoldSlots.toolbar] = toolbar;
|
| - this[ScaffoldSlots.body] = body;
|
| - this[ScaffoldSlots.statusBar] = statusBar;
|
| - this[ScaffoldSlots.drawer] = drawer;
|
| - this[ScaffoldSlots.floatingActionButton] = floatingActionButton;
|
| - }
|
| -
|
| - Map<ScaffoldSlots, RenderBox> _slots = new Map<ScaffoldSlots, RenderBox>();
|
| - RenderBox operator[] (ScaffoldSlots slot) => _slots[slot];
|
| - void operator[]= (ScaffoldSlots slot, RenderBox value) {
|
| - RenderBox old = _slots[slot];
|
| - if (old == value)
|
| - return;
|
| - if (old != null)
|
| - dropChild(old);
|
| - _slots[slot] = value;
|
| - if (value != null)
|
| - adoptChild(value);
|
| - markNeedsLayout();
|
| - }
|
| -
|
| - void attachChildren() {
|
| - for (ScaffoldSlots slot in ScaffoldSlots.values) {
|
| - RenderBox box = _slots[slot];
|
| - if (box != null)
|
| - box.attach();
|
| - }
|
| - }
|
| -
|
| - void detachChildren() {
|
| - for (ScaffoldSlots slot in ScaffoldSlots.values) {
|
| - RenderBox box = _slots[slot];
|
| - if (box != null)
|
| - box.detach();
|
| - }
|
| - }
|
| -
|
| - ScaffoldSlots remove(RenderBox child) {
|
| - assert(child != null);
|
| - for (ScaffoldSlots slot in ScaffoldSlots.values) {
|
| - if (_slots[slot] == child) {
|
| - this[slot] = null;
|
| - return slot;
|
| - }
|
| - }
|
| - return null;
|
| - }
|
| -
|
| - bool get sizedByParent => true;
|
| - void performResize() {
|
| - size = constraints.constrain(Size.infinite);
|
| - assert(size.width < double.INFINITY);
|
| - assert(size.height < double.INFINITY);
|
| - }
|
| -
|
| - // TODO(eseidel): These change based on device size!
|
| - // http://www.google.com/design/spec/layout/metrics-keylines.html#metrics-keylines-keylines-spacing
|
| - static const kButtonX = 16.0; // left from right edge of body
|
| - static const kButtonY = 16.0; // up from bottom edge of body
|
| -
|
| - void performLayout() {
|
| - double bodyHeight = size.height;
|
| - double bodyPosition = 0.0;
|
| - if (_slots[ScaffoldSlots.toolbar] != null) {
|
| - RenderBox toolbar = _slots[ScaffoldSlots.toolbar];
|
| - double toolbarHeight = kToolBarHeight + kNotificationAreaHeight;
|
| - toolbar.layout(new BoxConstraints.tight(new Size(size.width, toolbarHeight)));
|
| - assert(toolbar.parentData is BoxParentData);
|
| - toolbar.parentData.position = Point.origin;
|
| - bodyPosition += toolbarHeight;
|
| - bodyHeight -= toolbarHeight;
|
| - }
|
| - if (_slots[ScaffoldSlots.statusBar] != null) {
|
| - RenderBox statusBar = _slots[ScaffoldSlots.statusBar];
|
| - statusBar.layout(new BoxConstraints.tight(new Size(size.width, kStatusBarHeight)));
|
| - assert(statusBar.parentData is BoxParentData);
|
| - statusBar.parentData.position = new Point(0.0, size.height - kStatusBarHeight);
|
| - bodyHeight -= kStatusBarHeight;
|
| - }
|
| - if (_slots[ScaffoldSlots.body] != null) {
|
| - RenderBox body = _slots[ScaffoldSlots.body];
|
| - body.layout(new BoxConstraints.tight(new Size(size.width, bodyHeight)));
|
| - assert(body.parentData is BoxParentData);
|
| - body.parentData.position = new Point(0.0, bodyPosition);
|
| - }
|
| - if (_slots[ScaffoldSlots.drawer] != null) {
|
| - RenderBox drawer = _slots[ScaffoldSlots.drawer];
|
| - drawer.layout(new BoxConstraints(minWidth: 0.0, maxWidth: size.width, minHeight: size.height, maxHeight: size.height));
|
| - assert(drawer.parentData is BoxParentData);
|
| - drawer.parentData.position = Point.origin;
|
| - }
|
| - if (_slots[ScaffoldSlots.floatingActionButton] != null) {
|
| - RenderBox floatingActionButton = _slots[ScaffoldSlots.floatingActionButton];
|
| - Size area = new Size(size.width - kButtonX, size.height - kButtonY);
|
| - floatingActionButton.layout(new BoxConstraints.loose(area));
|
| - assert(floatingActionButton.parentData is BoxParentData);
|
| - floatingActionButton.parentData.position = (area - floatingActionButton.size).toPoint();
|
| - }
|
| - }
|
| -
|
| - void paint(RenderObjectDisplayList canvas) {
|
| - for (ScaffoldSlots slot in [ScaffoldSlots.body, ScaffoldSlots.statusBar, ScaffoldSlots.toolbar, ScaffoldSlots.floatingActionButton, ScaffoldSlots.drawer]) {
|
| - RenderBox box = _slots[slot];
|
| - if (box != null) {
|
| - assert(box.parentData is BoxParentData);
|
| - canvas.paintChild(box, box.parentData.position);
|
| - }
|
| - }
|
| - }
|
| -
|
| - void hitTestChildren(HitTestResult result, { Point position }) {
|
| - for (ScaffoldSlots slot in [ScaffoldSlots.drawer, ScaffoldSlots.floatingActionButton, ScaffoldSlots.toolbar, ScaffoldSlots.statusBar, ScaffoldSlots.body]) {
|
| - RenderBox box = _slots[slot];
|
| - if (box != null) {
|
| - assert(box.parentData is BoxParentData);
|
| - if (new Rect.fromPointAndSize(box.parentData.position, box.size).contains(position)) {
|
| - if (box.hitTest(result, position: (position - box.parentData.position).toPoint()))
|
| - return;
|
| - }
|
| - }
|
| - }
|
| - }
|
| -
|
| - String debugDescribeChildren(String prefix) {
|
| - return _slots.keys.map((slot) => '${prefix}${slot}: ${_slots[slot].toString(prefix)}').join();
|
| - }
|
| -}
|
| -
|
| -class Scaffold extends RenderObjectWrapper {
|
| -
|
| - // static final Style _style = new Style('''
|
| - // ${typography.typeface};
|
| - // ${typography.black.body1};''');
|
| -
|
| - Scaffold({
|
| - Object key,
|
| - UINode toolbar,
|
| - UINode body,
|
| - UINode statusBar,
|
| - UINode drawer,
|
| - UINode floatingActionButton
|
| - }) : _toolbar = toolbar,
|
| - _body = body,
|
| - _statusBar = statusBar,
|
| - _drawer = drawer,
|
| - _floatingActionButton = floatingActionButton,
|
| - super(key: key);
|
| -
|
| - UINode _toolbar;
|
| - UINode _body;
|
| - UINode _statusBar;
|
| - UINode _drawer;
|
| - UINode _floatingActionButton;
|
| -
|
| - RenderScaffold get root { RenderScaffold result = super.root; return result; }
|
| - RenderScaffold createNode() => new RenderScaffold();
|
| -
|
| - void insert(RenderObjectWrapper child, ScaffoldSlots slot) {
|
| - root[slot] = child != null ? child.root : null;
|
| - }
|
| -
|
| - void removeChild(UINode node) {
|
| - assert(node != null);
|
| - root.remove(node.root);
|
| - super.removeChild(node);
|
| - }
|
| -
|
| - void remove() {
|
| - if (_toolbar != null)
|
| - removeChild(_toolbar);
|
| - if (_body != null)
|
| - removeChild(_body);
|
| - if (_statusBar != null)
|
| - removeChild(_statusBar);
|
| - if (_drawer != null)
|
| - removeChild(_drawer);
|
| - if (_floatingActionButton != null)
|
| - removeChild(_floatingActionButton);
|
| - super.remove();
|
| - }
|
| -
|
| - void syncRenderObject(UINode old) {
|
| - super.syncRenderObject(old);
|
| - _toolbar = syncChild(_toolbar, old is Scaffold ? old._toolbar : null, ScaffoldSlots.toolbar);
|
| - _body = syncChild(_body, old is Scaffold ? old._body : null, ScaffoldSlots.body);
|
| - _statusBar = syncChild(_statusBar, old is Scaffold ? old._statusBar : null, ScaffoldSlots.statusBar);
|
| - _drawer = syncChild(_drawer, old is Scaffold ? old._drawer : null, ScaffoldSlots.drawer);
|
| - _floatingActionButton = syncChild(_floatingActionButton, old is Scaffold ? old._floatingActionButton : null, ScaffoldSlots.floatingActionButton);
|
| - }
|
| -
|
| -}
|
|
|