Index: client/samples/total/src/SpreadsheetPresenter.dart |
diff --git a/client/samples/total/src/SpreadsheetPresenter.dart b/client/samples/total/src/SpreadsheetPresenter.dart |
index f612c83d049681e962af6b6bea8d57b12b0c0796..1900f02793ba571bd82ac0d4713aef6f8ae61097 100644 |
--- a/client/samples/total/src/SpreadsheetPresenter.dart |
+++ b/client/samples/total/src/SpreadsheetPresenter.dart |
@@ -664,8 +664,8 @@ class SpreadsheetPresenter implements SpreadsheetListener, SelectionListener { |
_moveDragger = new Element.tag("div"); |
_moveDragger.id = "moveDragger-${_spreadsheet.name}"; |
_moveDragger.attributes["class"] = "moveDragger"; |
- _moveDragger.style.left = HtmlUtils.toPx(3); |
- _moveDragger.style.top = HtmlUtils.toPx(3); |
+ _moveDragger.style.setProperty("left", HtmlUtils.toPx(3)); |
+ _moveDragger.style.setProperty("top", HtmlUtils.toPx(3)); |
_spreadsheetElement.nodes.add(_moveDragger); |
_moveDragger.on.mouseDown.add((MouseEvent e) { |
@@ -675,28 +675,26 @@ class SpreadsheetPresenter implements SpreadsheetListener, SelectionListener { |
int mouseStartX = e.x; |
int mouseStartY = e.y; |
- window.requestMeasurementFrame(() { |
- ClientRect rect = _spreadsheetElement.rect.bounding; |
+ _spreadsheetElement.rect.then((ElementRect elementRect) { |
+ ClientRect rect = elementRect.bounding; |
int startX = rect.left; |
int startY = rect.top; |
- return () { |
- _window.document.body.style.cursor = "move"; |
- |
- _setDragFunction((MouseEvent e_) { |
- int x = startX + e_.x - mouseStartX; |
- int y = startY + e_.y - mouseStartY; |
- |
- x = Math.max(x, CssStyles.OBJECTBAR_WIDTH); |
- y = Math.max(y, CssStyles.SANDBAR_HEIGHT); |
- // Move the spreadsheet container |
- _spreadsheetElement.style.left = HtmlUtils.toPx(x); |
- _spreadsheetElement.style.top = HtmlUtils.toPx(y); |
- }); |
- }; |
- }); |
+ _window.document.body.style.setProperty("cursor", "move"); |
+ |
+ _setDragFunction((MouseEvent e_) { |
+ int x = startX + e_.x - mouseStartX; |
+ int y = startY + e_.y - mouseStartY; |
+ |
+ x = Math.max(x, CssStyles.OBJECTBAR_WIDTH); |
+ y = Math.max(y, CssStyles.SANDBAR_HEIGHT); |
+ // Move the spreadsheet container |
+ _spreadsheetElement.style.setProperty("left", HtmlUtils.toPx(x)); |
+ _spreadsheetElement.style.setProperty("top", HtmlUtils.toPx(y)); |
+ }); |
+ }); |
_setUndragFunction((MouseEvent e_) { |
- _window.document.body.style.cursor = "auto"; |
+ _window.document.body.style.setProperty("cursor", "auto"); |
}); |
}); |
} |
@@ -810,8 +808,8 @@ class SpreadsheetPresenter implements SpreadsheetListener, SelectionListener { |
_scrolledByKeyboard = false; |
return; |
} |
- window.requestMeasurementFrame(() { |
- final rect = _tableScrollContainer.rect; |
+ Future<ElementRect> future = _tableScrollContainer.rect; |
+ future.then((ElementRect rect) { |
int scrollTop = rect.scroll.top; |
int row = _getAbsRowOrColumn(scrollTop, ROW) - 1; |
int col = _getAbsRowOrColumn(rect.scroll.left, COL) - 1; |
@@ -820,7 +818,7 @@ class SpreadsheetPresenter implements SpreadsheetListener, SelectionListener { |
if (newRowShift != _rowShift || newColumnShift != _columnShift) { |
_rowShift = newRowShift; |
_columnShift = newColumnShift; |
- return () { _spreadsheet.refresh(); }; |
+ _spreadsheet.refresh(); |
} |
}); |
}); |
@@ -892,19 +890,17 @@ class SpreadsheetPresenter implements SpreadsheetListener, SelectionListener { |
CSSStyleDeclaration divStyle = div.style; |
int borderWidth = 2 + 2; |
CellRange cellRange = new CellRange(_spreadsheet, minCorner, maxCorner); |
- window.requestMeasurementFrame(() { |
- final box = _selectionManager.getBoundingBoxForRange(cellRange); |
- return () { |
- if (box != null) { |
- divStyle.left = HtmlUtils.toPx(box.left); |
- divStyle.top = HtmlUtils.toPx(box.top); |
- divStyle.width = HtmlUtils.toPx(box.width - borderWidth); |
- divStyle.height = HtmlUtils.toPx(box.height - borderWidth); |
- divStyle.removeProperty("display"); |
- } else { |
- divStyle.setProperty("display", "none"); |
- } |
- }; |
+ _selectionManager.getBoundingBoxForRange(cellRange).then( |
+ (BoundingBox box) { |
+ if (box != null) { |
+ divStyle.setProperty("left", HtmlUtils.toPx(box.left)); |
+ divStyle.setProperty("top", HtmlUtils.toPx(box.top)); |
+ divStyle.setProperty("width", HtmlUtils.toPx(box.width - borderWidth)); |
+ divStyle.setProperty("height", HtmlUtils.toPx(box.height - borderWidth)); |
+ divStyle.removeProperty("display"); |
+ } else { |
+ divStyle.setProperty("display", "none"); |
+ } |
}); |
} |
} |
@@ -1081,13 +1077,11 @@ class SpreadsheetPresenter implements SpreadsheetListener, SelectionListener { |
// Resize the formula input field to fit the contained text |
void _growFormulaInput() { |
_formulaInputMeasure.text = _formulaInput.value; |
- window.requestMeasurementFrame(() { |
- int textWidth = _formulaInputMeasure.rect.client.width; |
+ _formulaInputMeasure.rect.then((ElementRect rect) { |
+ int textWidth = rect.client.width; |
int width = Math.max(textWidth + 25, _formulaCellWidth); |
- return () { |
- _formulaDiv.style.width = HtmlUtils.toPx(width); |
- _formulaInput.style.width = HtmlUtils.toPx(width); |
- }; |
+ _formulaDiv.style.setProperty("width", HtmlUtils.toPx(width)); |
+ _formulaInput.style.setProperty("width", HtmlUtils.toPx(width)); |
}); |
} |
@@ -1156,16 +1150,15 @@ class SpreadsheetPresenter implements SpreadsheetListener, SelectionListener { |
} |
void _refreshResizeDragger() { |
- window.requestMeasurementFrame(() { |
+ _table.rect.then((ElementRect elementRect) { |
// We may be called before the dragger is ready |
if (_resizeDragger == null) { |
return; |
} |
- ClientRect rect = _table.rect.bounding; |
- return () { |
- _resizeDragger.style.setProperty("left", HtmlUtils.toPx(rect.width)); |
- _resizeDragger.style.setProperty("top", HtmlUtils.toPx(rect.height)); |
- }; |
+ ClientRect rect = elementRect.bounding; |
+ |
+ _resizeDragger.style.setProperty("left", HtmlUtils.toPx(rect.width)); |
+ _resizeDragger.style.setProperty("top", HtmlUtils.toPx(rect.height)); |
}); |
} |
@@ -1477,10 +1470,10 @@ class SpreadsheetPresenter implements SpreadsheetListener, SelectionListener { |
CellLocation currentSelectedSingleCell = null; |
void mouseMove(MouseEvent e) { |
- window.requestMeasurementFrame(() { |
+ _table.rect.then((ElementRect rect) { |
// Set x and y to the mouse coordinates, relative to the top left of |
// the spreadsheet table. |
- ClientRect boundingRect = _table.rect.bounding; |
+ ClientRect boundingRect = rect.bounding; |
int scrollOffsetX = -boundingRect.left.toInt(); |
int scrollOffsetY = -boundingRect.top.toInt(); |
x = e.x + scrollOffsetX; |
@@ -1549,13 +1542,11 @@ class SpreadsheetPresenter implements SpreadsheetListener, SelectionListener { |
// Right click toggles and positions the context menu |
if (e.button == 2 || (e.button == 0 && e.ctrlKey)) { |
- window.requestMeasurementFrame(() { |
- ClientRect boundingRect = _table.rect.bounding; |
- return () { |
- int scrollOffsetX = -boundingRect.left; |
- int scrollOffsetY = -boundingRect.top; |
- _contextMenu.show(e.x + scrollOffsetX, e.y + scrollOffsetY); |
- }; |
+ _table.rect.then((ElementRect rect) { |
+ ClientRect boundingRect = rect.bounding; |
+ int scrollOffsetX = -boundingRect.left; |
+ int scrollOffsetY = -boundingRect.top; |
+ _contextMenu.show(e.x + scrollOffsetX, e.y + scrollOffsetY); |
}); |
return; |
} |
@@ -1697,27 +1688,26 @@ class SpreadsheetPresenter implements SpreadsheetListener, SelectionListener { |
// Update the scroll mechanism due to a change in the visible table area |
void _tableSizeChanged() { |
- window.requestMeasurementFrame(() { |
- ClientRect rect = _table.rect.bounding; |
- return () { |
- _tableScrollContainer.style.width = HtmlUtils.toPx(rect.width + 10); |
- _spreadsheetElement.style.width = HtmlUtils.toPx(rect.width); |
- |
- _tableScrollContainer.style.height = HtmlUtils.toPx(rect.height + 10); |
- _spreadsheetElement.style.height = HtmlUtils.toPx(rect.height); |
- |
- _tableScrollDiv.style.width = HtmlUtils.toPx( |
- _spreadsheet.getColumnEnd(_spreadsheet.columnCount())); |
- int extra = _activeInnerMenu == null ? |
- 0 : _activeInnerMenu.currentRowHeight; |
- _tableScrollDiv.style.height = HtmlUtils.toPx(_spreadsheet.getRowEnd( |
- _spreadsheet.rowCount()) + extra); |
- |
- // Reposition the scroll bars |
- _scroll(_rowShift, _columnShift); |
- // Move the resize dragger to the bottom-right corner |
- _refreshResizeDragger(); |
- }; |
+ _table.rect.then((ElementRect elementRect) { |
+ ClientRect rect = elementRect.bounding; |
+ |
+ _tableScrollContainer.style.width = HtmlUtils.toPx(rect.width + 10); |
+ _spreadsheetElement.style.width = HtmlUtils.toPx(rect.width); |
+ |
+ _tableScrollContainer.style.height = HtmlUtils.toPx(rect.height + 10); |
+ _spreadsheetElement.style.height = HtmlUtils.toPx(rect.height); |
+ |
+ _tableScrollDiv.style.width = HtmlUtils.toPx( |
+ _spreadsheet.getColumnEnd(_spreadsheet.columnCount())); |
+ int extra = _activeInnerMenu == null ? |
+ 0 : _activeInnerMenu.currentRowHeight; |
+ _tableScrollDiv.style.height = HtmlUtils.toPx(_spreadsheet.getRowEnd( |
+ _spreadsheet.rowCount()) + extra); |
+ |
+ // Reposition the scroll bars |
+ _scroll(_rowShift, _columnShift); |
+ // Move the resize dragger to the bottom-right corner |
+ _refreshResizeDragger(); |
}); |
} |