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

Side by Side Diff: samples-dev/swarm/swarm_ui_lib/layout/GridLayoutParams.dart

Issue 2828603002: Format samples and samples-dev directories. (Closed)
Patch Set: Created 3 years, 8 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 (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of layout; 5 part of layout;
6 6
7 /** 7 /**
8 * Caches the layout parameters that were specified in CSS during a layout 8 * Caches the layout parameters that were specified in CSS during a layout
9 * computation. These values are immutable during a layout. 9 * computation. These values are immutable during a layout.
10 */ 10 */
11 // TODO(jmesserly): I would like all fields to be final, but it's too painful 11 // TODO(jmesserly): I would like all fields to be final, but it's too painful
12 // to do this right now in Dart. If I create a factory constructor, then I need 12 // to do this right now in Dart. If I create a factory constructor, then I need
13 // to create locals, and pass all parameters to the real constructor. Each 13 // to create locals, and pass all parameters to the real constructor. Each
14 // field ends up being mentioned 4 times instead of just twice. 14 // field ends up being mentioned 4 times instead of just twice.
15 class GridLayoutParams extends LayoutParams { 15 class GridLayoutParams extends LayoutParams {
16 /** The coordinates of this item in the grid. */ 16 /** The coordinates of this item in the grid. */
17 int row; 17 int row;
18 int column; 18 int column;
19 int rowSpan; 19 int rowSpan;
20 int columnSpan; 20 int columnSpan;
21 int layer; 21 int layer;
22 22
23 /** Alignment within its box */ 23 /** Alignment within its box */
24 GridItemAlignment rowAlign; 24 GridItemAlignment rowAlign;
25 GridItemAlignment columnAlign; 25 GridItemAlignment columnAlign;
26 26
27 GridLayoutParams(Positionable view, GridLayout layout) 27 GridLayoutParams(Positionable view, GridLayout layout) : super(view.node) {
28 : super(view.node) {
29
30 // TODO(jmesserly): this can be cleaned up a lot by just passing "view" 28 // TODO(jmesserly): this can be cleaned up a lot by just passing "view"
31 // into the parsers. 29 // into the parsers.
32 30
33 rowAlign = new GridItemAlignment.fromString( 31 rowAlign =
34 view.customStyle['grid-row-align']); 32 new GridItemAlignment.fromString(view.customStyle['grid-row-align']);
35 columnAlign = new GridItemAlignment.fromString( 33 columnAlign =
36 view.customStyle['grid-column-align']); 34 new GridItemAlignment.fromString(view.customStyle['grid-column-align']);
37 35
38 layer = StringUtils.parseInt(view.customStyle['grid-layer'], 0); 36 layer = StringUtils.parseInt(view.customStyle['grid-layer'], 0);
39 37
40 rowSpan = StringUtils.parseInt(view.customStyle['grid-row-span']); 38 rowSpan = StringUtils.parseInt(view.customStyle['grid-row-span']);
41 columnSpan = StringUtils.parseInt(view.customStyle['grid-column-span']); 39 columnSpan = StringUtils.parseInt(view.customStyle['grid-column-span']);
42 40
43 var line = _GridItemParser.parse( 41 var line = _GridItemParser.parse(view.customStyle['grid-row'], layout.rows);
44 view.customStyle['grid-row'], layout.rows);
45 if (line != null) { 42 if (line != null) {
46 row = line.start; 43 row = line.start;
47 if (line.length != null) { 44 if (line.length != null) {
48 if (rowSpan != null) { 45 if (rowSpan != null) {
49 throw new UnsupportedError( 46 throw new UnsupportedError(
50 'grid-row-span cannot be with grid-row that defines an end'); 47 'grid-row-span cannot be with grid-row that defines an end');
51 } 48 }
52 rowSpan = line.length; 49 rowSpan = line.length;
53 } 50 }
54 } 51 }
55 52
56 line = _GridItemParser.parse( 53 line =
57 view.customStyle['grid-column'], layout.columns); 54 _GridItemParser.parse(view.customStyle['grid-column'], layout.columns);
58 55
59 if (line != null) { 56 if (line != null) {
60 column = line.start; 57 column = line.start;
61 if (line.length != null) { 58 if (line.length != null) {
62 if (columnSpan != null) { 59 if (columnSpan != null) {
63 throw new UnsupportedError( 60 throw new UnsupportedError(
64 'grid-column-span cannot be with grid-column that defines an end'); 61 'grid-column-span cannot be with grid-column that defines an end') ;
65 } 62 }
66 columnSpan = line.length; 63 columnSpan = line.length;
67 } 64 }
68 } 65 }
69 66
70 String cell = _GridTemplateParser.parseCell(view.customStyle['grid-cell']); 67 String cell = _GridTemplateParser.parseCell(view.customStyle['grid-cell']);
71 if (cell != null && cell != 'none') { 68 if (cell != null && cell != 'none') {
72 // TODO(jmesserly): I didn't see anything spec'd about conflicts and 69 // TODO(jmesserly): I didn't see anything spec'd about conflicts and
73 // error handling. For now, throw an error on a misconfigured view. 70 // error handling. For now, throw an error on a misconfigured view.
74 // CSS is designed to be a permissive language, though, so we should do 71 // CSS is designed to be a permissive language, though, so we should do
75 // better and resolve conflicts more intelligently. 72 // better and resolve conflicts more intelligently.
76 if (row != null || column != null || 73 if (row != null ||
77 rowSpan != null || columnSpan != null) { 74 column != null ||
75 rowSpan != null ||
76 columnSpan != null) {
78 throw new UnsupportedError( 77 throw new UnsupportedError(
79 'grid-cell cannot be used with grid-row and grid-column'); 78 'grid-cell cannot be used with grid-row and grid-column');
80 } 79 }
81 80
82 if (layout.template == null) { 81 if (layout.template == null) {
83 throw new UnsupportedError( 82 throw new UnsupportedError(
84 'grid-cell requires that grid-template is set on the parent'); 83 'grid-cell requires that grid-template is set on the parent');
85 } 84 }
86 85
87 final rect = layout.template.lookupCell(cell); 86 final rect = layout.template.lookupCell(cell);
88 row = rect.row; 87 row = rect.row;
89 column = rect.column; 88 column = rect.column;
90 rowSpan = rect.rowSpan; 89 rowSpan = rect.rowSpan;
91 columnSpan = rect.columnSpan; 90 columnSpan = rect.columnSpan;
92
93 } else { 91 } else {
94 // Apply default row, column span values. 92 // Apply default row, column span values.
95 if (rowSpan == null) rowSpan = 1; 93 if (rowSpan == null) rowSpan = 1;
96 if (columnSpan == null) columnSpan = 1; 94 if (columnSpan == null) columnSpan = 1;
97 95
98 if (row == null && column == null) { 96 if (row == null && column == null) {
99 throw new UnsupportedError('grid-flow is not implemented' 97 throw new UnsupportedError('grid-flow is not implemented' +
100 + ' so at least one row or one column must be defined'); 98 ' so at least one row or one column must be defined');
101 } 99 }
102 100
103 if (row == null) row = 1; 101 if (row == null) row = 1;
104 if (column == null) column = 1; 102 if (column == null) column = 1;
105 } 103 }
106 104
107 assert(row > 0 && rowSpan > 0 && column > 0 && columnSpan > 0); 105 assert(row > 0 && rowSpan > 0 && column > 0 && columnSpan > 0);
108 } 106 }
109 } 107 }
OLDNEW
« no previous file with comments | « samples-dev/swarm/swarm_ui_lib/layout/GridLayout.dart ('k') | samples-dev/swarm/swarm_ui_lib/layout/GridLayoutParser.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698