Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(411)

Side by Side Diff: sky/framework/components/material.dart

Issue 1003553002: Update Button to be made of Material (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 '../fn.dart'; 5 import '../fn.dart';
6 import '../theme/shadows.dart';
7 import 'dart:collection';
8 import 'dart:math';
6 import 'dart:sky' as sky; 9 import 'dart:sky' as sky;
7 import 'dart:collection';
8 import 'ink_splash.dart'; 10 import 'ink_splash.dart';
9 11
10 class Material extends Component { 12 class Material extends Component {
11 static const _splashesKey = const Object(); 13 static const _splashesKey = const Object();
12 14
13 static final Style _splashesStyle = new Style(''' 15 static final Style _splashesStyle = new Style('''
14 transform: translateX(0); 16 transform: translateX(0);
15 position: absolute; 17 position: absolute;
16 top: 0; 18 top: 0;
17 left: 0; 19 left: 0;
18 right: 0; 20 right: 0;
19 bottom: 0''' 21 bottom: 0'''
20 ); 22 );
21 23
24 static final List<Style> shadowStyle = [
25 null,
26 new Style('box-shadow: ${Shadow[1]}'),
27 new Style('box-shadow: ${Shadow[2]}'),
28 new Style('box-shadow: ${Shadow[3]}'),
29 new Style('box-shadow: ${Shadow[4]}'),
30 new Style('box-shadow: ${Shadow[5]}'),
31 ];
32
22 LinkedHashSet<SplashAnimation> _splashes; 33 LinkedHashSet<SplashAnimation> _splashes;
23 34
24 Style style; 35 List<Style> styles;
36 String inlineStyle;
25 List<Node> children; 37 List<Node> children;
38 int level;
26 39
27 Material({ Object key, this.style, this.children }) : super(key: key) { 40 Material({
41 Object key,
42 this.styles,
43 this.inlineStyle,
44 this.children,
45 this.level: 0 }) : super(key: key) {
28 events.listen('gesturescrollstart', _cancelSplashes); 46 events.listen('gesturescrollstart', _cancelSplashes);
29 events.listen('wheel', _cancelSplashes); 47 events.listen('wheel', _cancelSplashes);
30 events.listen('pointerdown', _startSplash); 48 events.listen('pointerdown', _startSplash);
31 } 49 }
32 50
33 Node build() { 51 Node build() {
34 List<Node> childrenIncludingSplashes = []; 52 List<Node> childrenIncludingSplashes = [];
35 53
36 if (_splashes != null) { 54 if (_splashes != null) {
37 childrenIncludingSplashes.add(new Container( 55 childrenIncludingSplashes.add(new Container(
38 style: _splashesStyle, 56 styles: [_splashesStyle],
39 children: new List.from(_splashes.map( 57 children: new List.from(_splashes.map(
40 (s) => new InkSplash(s.onStyleChanged))), 58 (s) => new InkSplash(s.onStyleChanged))),
41 key: 'Splashes' 59 key: 'Splashes'
42 )); 60 ));
43 } 61 }
44 62
45 if (children != null) 63 if (children != null)
46 childrenIncludingSplashes.addAll(children); 64 childrenIncludingSplashes.addAll(children);
47 65
48 return new Container(key: 'Material', style: style, 66 List<Style> stylesIncludingShadow = styles;
49 children: childrenIncludingSplashes); 67 if (level > 0) {
68 stylesIncludingShadow = new List.from(styles);
69 stylesIncludingShadow.add(shadowStyle[level]);
70 }
71
72 return new Container(key: 'Material', styles: stylesIncludingShadow,
73 inlineStyle: inlineStyle, children: childrenIncludingSplashes);
50 } 74 }
51 75
52 sky.ClientRect _getBoundingRect() => (getRoot() as sky.Element).getBoundingCli entRect(); 76 sky.ClientRect _getBoundingRect() => (getRoot() as sky.Element).getBoundingCli entRect();
53 77
54 void _startSplash(sky.PointerEvent event) { 78 void _startSplash(sky.PointerEvent event) {
55 setState(() { 79 setState(() {
56 if (_splashes == null) { 80 if (_splashes == null) {
57 _splashes = new LinkedHashSet<SplashAnimation>(); 81 _splashes = new LinkedHashSet<SplashAnimation>();
58 } 82 }
59 83
(...skipping 27 matching lines...) Expand all
87 } 111 }
88 112
89 setState(() { 113 setState(() {
90 _splashes.remove(splash); 114 _splashes.remove(splash);
91 if (_splashes.length == 0) { 115 if (_splashes.length == 0) {
92 _splashes = null; 116 _splashes = null;
93 } 117 }
94 }); 118 });
95 } 119 }
96 } 120 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698