Index: client/layout/GridLayoutParams.dart |
=================================================================== |
--- client/layout/GridLayoutParams.dart (revision 4144) |
+++ client/layout/GridLayoutParams.dart (working copy) |
@@ -1,107 +0,0 @@ |
-// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-/** |
- * Caches the layout parameters that were specified in CSS during a layout |
- * computation. These values are immutable during a layout. |
- */ |
-// TODO(jmesserly): I would like all fields to be final, but it's too painful |
-// to do this right now in Dart. If I create a factory constructor, then I need |
-// to create locals, and pass all parameters to the real constructor. Each |
-// field ends up being mentioned 4 times instead of just twice. |
-class GridLayoutParams extends LayoutParams { |
- /** The coordinates of this item in the grid. */ |
- int row; |
- int column; |
- int rowSpan; |
- int columnSpan; |
- int layer; |
- |
- /** Alignment within its box */ |
- GridItemAlignment rowAlign; |
- GridItemAlignment columnAlign; |
- |
- GridLayoutParams(Positionable view, GridLayout layout) |
- : super(view.node) { |
- |
- // TODO(jmesserly): this can be cleaned up a lot by just passing "view" |
- // into the parsers. |
- |
- rowAlign = new GridItemAlignment.fromString( |
- view.customStyle['grid-row-align']); |
- columnAlign = new GridItemAlignment.fromString( |
- view.customStyle['grid-column-align']); |
- |
- layer = StringUtils.parseInt(view.customStyle['grid-layer'], 0); |
- |
- rowSpan = StringUtils.parseInt(view.customStyle['grid-row-span']); |
- columnSpan = StringUtils.parseInt(view.customStyle['grid-column-span']); |
- |
- var line = _GridItemParser.parse( |
- view.customStyle['grid-row'], layout.rows); |
- if (line != null) { |
- row = line.start; |
- if (line.length != null) { |
- if (rowSpan != null) { |
- throw new UnsupportedOperationException( |
- 'grid-row-span cannot be with grid-row that defines an end'); |
- } |
- rowSpan = line.length; |
- } |
- } |
- |
- line = _GridItemParser.parse( |
- view.customStyle['grid-column'], layout.columns); |
- |
- if (line != null) { |
- column = line.start; |
- if (line.length != null) { |
- if (columnSpan != null) { |
- throw new UnsupportedOperationException( |
- 'grid-column-span cannot be with grid-column that defines an end'); |
- } |
- columnSpan = line.length; |
- } |
- } |
- |
- String cell = _GridTemplateParser.parseCell(view.customStyle['grid-cell']); |
- if (cell != null && cell != 'none') { |
- // TODO(jmesserly): I didn't see anything spec'd about conflicts and |
- // error handling. For now, throw an error on a misconfigured view. |
- // CSS is designed to be a permissive language, though, so we should do |
- // better and resolve conflicts more intelligently. |
- if (row != null || column != null || |
- rowSpan != null || columnSpan != null) { |
- throw new UnsupportedOperationException( |
- 'grid-cell cannot be used with grid-row and grid-column'); |
- } |
- |
- if (layout.template == null) { |
- throw new UnsupportedOperationException( |
- 'grid-cell requires that grid-template is set on the parent'); |
- } |
- |
- final rect = layout.template.lookupCell(cell); |
- row = rect.row; |
- column = rect.column; |
- rowSpan = rect.rowSpan; |
- columnSpan = rect.columnSpan; |
- |
- } else { |
- // Apply default row, column span values. |
- if (rowSpan == null) rowSpan = 1; |
- if (columnSpan == null) columnSpan = 1; |
- |
- if (row == null && column == null) { |
- throw new UnsupportedOperationException('grid-flow is not implemented' |
- + ' so at least one row or one column must be defined'); |
- } |
- |
- if (row == null) row = 1; |
- if (column == null) column = 1; |
- } |
- |
- assert(row > 0 && rowSpan > 0 && column > 0 && columnSpan > 0); |
- } |
-} |