| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 typedef void EditCellRangeFunction(CellRange range); | 5 typedef void EditCellRangeFunction(CellRange range); |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * Spreadsheet widget. | 8 * Spreadsheet widget. |
| 9 */ | 9 */ |
| 10 class SpreadsheetPresenter implements SpreadsheetListener, SelectionListener { | 10 class SpreadsheetPresenter implements SpreadsheetListener, SelectionListener { |
| (...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 657 print("Error parsing formula '${value}': ${exception}"); | 657 print("Error parsing formula '${value}': ${exception}"); |
| 658 } | 658 } |
| 659 } | 659 } |
| 660 }); | 660 }); |
| 661 } | 661 } |
| 662 | 662 |
| 663 void _createMoveDragger(Document doc) { | 663 void _createMoveDragger(Document doc) { |
| 664 _moveDragger = new Element.tag("div"); | 664 _moveDragger = new Element.tag("div"); |
| 665 _moveDragger.id = "moveDragger-${_spreadsheet.name}"; | 665 _moveDragger.id = "moveDragger-${_spreadsheet.name}"; |
| 666 _moveDragger.attributes["class"] = "moveDragger"; | 666 _moveDragger.attributes["class"] = "moveDragger"; |
| 667 _moveDragger.style.left = HtmlUtils.toPx(3); | 667 _moveDragger.style.setProperty("left", HtmlUtils.toPx(3)); |
| 668 _moveDragger.style.top = HtmlUtils.toPx(3); | 668 _moveDragger.style.setProperty("top", HtmlUtils.toPx(3)); |
| 669 _spreadsheetElement.nodes.add(_moveDragger); | 669 _spreadsheetElement.nodes.add(_moveDragger); |
| 670 | 670 |
| 671 _moveDragger.on.mouseDown.add((MouseEvent e) { | 671 _moveDragger.on.mouseDown.add((MouseEvent e) { |
| 672 _moveToTop(); | 672 _moveToTop(); |
| 673 _hideInnerMenu(true); | 673 _hideInnerMenu(true); |
| 674 | 674 |
| 675 int mouseStartX = e.x; | 675 int mouseStartX = e.x; |
| 676 int mouseStartY = e.y; | 676 int mouseStartY = e.y; |
| 677 | 677 |
| 678 window.requestMeasurementFrame(() { | 678 _spreadsheetElement.rect.then((ElementRect elementRect) { |
| 679 ClientRect rect = _spreadsheetElement.rect.bounding; | 679 ClientRect rect = elementRect.bounding; |
| 680 int startX = rect.left; | 680 int startX = rect.left; |
| 681 int startY = rect.top; | 681 int startY = rect.top; |
| 682 return () { | 682 _window.document.body.style.setProperty("cursor", "move"); |
| 683 _window.document.body.style.cursor = "move"; | |
| 684 | 683 |
| 685 _setDragFunction((MouseEvent e_) { | 684 _setDragFunction((MouseEvent e_) { |
| 686 int x = startX + e_.x - mouseStartX; | 685 int x = startX + e_.x - mouseStartX; |
| 687 int y = startY + e_.y - mouseStartY; | 686 int y = startY + e_.y - mouseStartY; |
| 688 | 687 |
| 689 x = Math.max(x, CssStyles.OBJECTBAR_WIDTH); | 688 x = Math.max(x, CssStyles.OBJECTBAR_WIDTH); |
| 690 y = Math.max(y, CssStyles.SANDBAR_HEIGHT); | 689 y = Math.max(y, CssStyles.SANDBAR_HEIGHT); |
| 691 // Move the spreadsheet container | 690 // Move the spreadsheet container |
| 692 _spreadsheetElement.style.left = HtmlUtils.toPx(x); | 691 _spreadsheetElement.style.setProperty("left", HtmlUtils.toPx(x)); |
| 693 _spreadsheetElement.style.top = HtmlUtils.toPx(y); | 692 _spreadsheetElement.style.setProperty("top", HtmlUtils.toPx(y)); |
| 694 }); | 693 }); |
| 695 }; | 694 }); |
| 696 }); | |
| 697 | 695 |
| 698 _setUndragFunction((MouseEvent e_) { | 696 _setUndragFunction((MouseEvent e_) { |
| 699 _window.document.body.style.cursor = "auto"; | 697 _window.document.body.style.setProperty("cursor", "auto"); |
| 700 }); | 698 }); |
| 701 }); | 699 }); |
| 702 } | 700 } |
| 703 | 701 |
| 704 void _createResizeDragger(Document doc) { | 702 void _createResizeDragger(Document doc) { |
| 705 _resizeDragger = new Element.tag("div"); | 703 _resizeDragger = new Element.tag("div"); |
| 706 _resizeDragger.id = "resizeDragger-${_spreadsheet.name}"; | 704 _resizeDragger.id = "resizeDragger-${_spreadsheet.name}"; |
| 707 _resizeDragger.attributes["class"] = "resizeDragger"; | 705 _resizeDragger.attributes["class"] = "resizeDragger"; |
| 708 _spreadsheetElement.nodes.add(_resizeDragger); | 706 _spreadsheetElement.nodes.add(_resizeDragger); |
| 709 | 707 |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 803 _tableScrollContainer.style.setProperty("left", "0px"); | 801 _tableScrollContainer.style.setProperty("left", "0px"); |
| 804 _tableScrollContainer.style.setProperty("top", "0px"); | 802 _tableScrollContainer.style.setProperty("top", "0px"); |
| 805 _tableScrollContainer.nodes.add(_tableScrollDiv); | 803 _tableScrollContainer.nodes.add(_tableScrollDiv); |
| 806 _tableSizeChanged(); | 804 _tableSizeChanged(); |
| 807 | 805 |
| 808 _tableScrollContainer.on.scroll.add((e) { | 806 _tableScrollContainer.on.scroll.add((e) { |
| 809 if (_scrolledByKeyboard) { | 807 if (_scrolledByKeyboard) { |
| 810 _scrolledByKeyboard = false; | 808 _scrolledByKeyboard = false; |
| 811 return; | 809 return; |
| 812 } | 810 } |
| 813 window.requestMeasurementFrame(() { | 811 Future<ElementRect> future = _tableScrollContainer.rect; |
| 814 final rect = _tableScrollContainer.rect; | 812 future.then((ElementRect rect) { |
| 815 int scrollTop = rect.scroll.top; | 813 int scrollTop = rect.scroll.top; |
| 816 int row = _getAbsRowOrColumn(scrollTop, ROW) - 1; | 814 int row = _getAbsRowOrColumn(scrollTop, ROW) - 1; |
| 817 int col = _getAbsRowOrColumn(rect.scroll.left, COL) - 1; | 815 int col = _getAbsRowOrColumn(rect.scroll.left, COL) - 1; |
| 818 int newRowShift = Math.max(0, row); | 816 int newRowShift = Math.max(0, row); |
| 819 int newColumnShift = Math.max(0, col); | 817 int newColumnShift = Math.max(0, col); |
| 820 if (newRowShift != _rowShift || newColumnShift != _columnShift) { | 818 if (newRowShift != _rowShift || newColumnShift != _columnShift) { |
| 821 _rowShift = newRowShift; | 819 _rowShift = newRowShift; |
| 822 _columnShift = newColumnShift; | 820 _columnShift = newColumnShift; |
| 823 return () { _spreadsheet.refresh(); }; | 821 _spreadsheet.refresh(); |
| 824 } | 822 } |
| 825 }); | 823 }); |
| 826 }); | 824 }); |
| 827 } | 825 } |
| 828 | 826 |
| 829 // Return the number of milliseconds since the epoch | 827 // Return the number of milliseconds since the epoch |
| 830 int _currentTimeMllis() { | 828 int _currentTimeMllis() { |
| 831 Date now = new Date.now(); | 829 Date now = new Date.now(); |
| 832 Date then = new Date.fromEpoch(0, now.timeZone); | 830 Date then = new Date.fromEpoch(0, now.timeZone); |
| 833 return now.difference(then).inMilliseconds; | 831 return now.difference(then).inMilliseconds; |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 885 | 883 |
| 886 // apply text selection now | 884 // apply text selection now |
| 887 _formulaCellSelectingSelectText(); | 885 _formulaCellSelectingSelectText(); |
| 888 | 886 |
| 889 // show cell selecting div | 887 // show cell selecting div |
| 890 { | 888 { |
| 891 DivElement div = _table.formulaCellSelectingDiv; | 889 DivElement div = _table.formulaCellSelectingDiv; |
| 892 CSSStyleDeclaration divStyle = div.style; | 890 CSSStyleDeclaration divStyle = div.style; |
| 893 int borderWidth = 2 + 2; | 891 int borderWidth = 2 + 2; |
| 894 CellRange cellRange = new CellRange(_spreadsheet, minCorner, maxCorner); | 892 CellRange cellRange = new CellRange(_spreadsheet, minCorner, maxCorner); |
| 895 window.requestMeasurementFrame(() { | 893 _selectionManager.getBoundingBoxForRange(cellRange).then( |
| 896 final box = _selectionManager.getBoundingBoxForRange(cellRange); | 894 (BoundingBox box) { |
| 897 return () { | 895 if (box != null) { |
| 898 if (box != null) { | 896 divStyle.setProperty("left", HtmlUtils.toPx(box.left)); |
| 899 divStyle.left = HtmlUtils.toPx(box.left); | 897 divStyle.setProperty("top", HtmlUtils.toPx(box.top)); |
| 900 divStyle.top = HtmlUtils.toPx(box.top); | 898 divStyle.setProperty("width", HtmlUtils.toPx(box.width - borderWidth))
; |
| 901 divStyle.width = HtmlUtils.toPx(box.width - borderWidth); | 899 divStyle.setProperty("height", HtmlUtils.toPx(box.height - borderWidth
)); |
| 902 divStyle.height = HtmlUtils.toPx(box.height - borderWidth); | 900 divStyle.removeProperty("display"); |
| 903 divStyle.removeProperty("display"); | 901 } else { |
| 904 } else { | 902 divStyle.setProperty("display", "none"); |
| 905 divStyle.setProperty("display", "none"); | 903 } |
| 906 } | |
| 907 }; | |
| 908 }); | 904 }); |
| 909 } | 905 } |
| 910 } | 906 } |
| 911 | 907 |
| 912 void _formulaCellSelectingRememberSelectionRange() { | 908 void _formulaCellSelectingRememberSelectionRange() { |
| 913 _formulaCellSelectingTextStart = _formulaInput.selectionStart; | 909 _formulaCellSelectingTextStart = _formulaInput.selectionStart; |
| 914 _formulaCellSelectingTextEnd = _formulaInput.selectionEnd; | 910 _formulaCellSelectingTextEnd = _formulaInput.selectionEnd; |
| 915 } | 911 } |
| 916 | 912 |
| 917 void _formulaCellSelectingSelectText() { | 913 void _formulaCellSelectingSelectText() { |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1074 | 1070 |
| 1075 // Return the number of _rows currently being displayed (not counting the colu
mn header row) | 1071 // Return the number of _rows currently being displayed (not counting the colu
mn header row) |
| 1076 int _getVisibleTableHeight() => _getShiftedRowEnd(_rowShift + _rows, _rowShift
); | 1072 int _getVisibleTableHeight() => _getShiftedRowEnd(_rowShift + _rows, _rowShift
); |
| 1077 | 1073 |
| 1078 // Return the number of _columns currently being displayed (not counting the r
ow header column) | 1074 // Return the number of _columns currently being displayed (not counting the r
ow header column) |
| 1079 int _getVisibleTableWidth() => _getShiftedColumnEnd(_columnShift + _columns, _
columnShift); | 1075 int _getVisibleTableWidth() => _getShiftedColumnEnd(_columnShift + _columns, _
columnShift); |
| 1080 | 1076 |
| 1081 // Resize the formula input field to fit the contained text | 1077 // Resize the formula input field to fit the contained text |
| 1082 void _growFormulaInput() { | 1078 void _growFormulaInput() { |
| 1083 _formulaInputMeasure.text = _formulaInput.value; | 1079 _formulaInputMeasure.text = _formulaInput.value; |
| 1084 window.requestMeasurementFrame(() { | 1080 _formulaInputMeasure.rect.then((ElementRect rect) { |
| 1085 int textWidth = _formulaInputMeasure.rect.client.width; | 1081 int textWidth = rect.client.width; |
| 1086 int width = Math.max(textWidth + 25, _formulaCellWidth); | 1082 int width = Math.max(textWidth + 25, _formulaCellWidth); |
| 1087 return () { | 1083 _formulaDiv.style.setProperty("width", HtmlUtils.toPx(width)); |
| 1088 _formulaDiv.style.width = HtmlUtils.toPx(width); | 1084 _formulaInput.style.setProperty("width", HtmlUtils.toPx(width)); |
| 1089 _formulaInput.style.width = HtmlUtils.toPx(width); | |
| 1090 }; | |
| 1091 }); | 1085 }); |
| 1092 } | 1086 } |
| 1093 | 1087 |
| 1094 // Fade out the formula input field | 1088 // Fade out the formula input field |
| 1095 void _hideFormula() { | 1089 void _hideFormula() { |
| 1096 _hideFormulaCellSelecting(); | 1090 _hideFormulaCellSelecting(); |
| 1097 _formulaEditing = false; | 1091 _formulaEditing = false; |
| 1098 _formulaDiv.classes.remove("fadeIn"); | 1092 _formulaDiv.classes.remove("fadeIn"); |
| 1099 _formulaDiv.classes.add("fadeOut"); | 1093 _formulaDiv.classes.add("fadeOut"); |
| 1100 } | 1094 } |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1149 // update table row and column headers | 1143 // update table row and column headers |
| 1150 void _redrawHeaders() { | 1144 void _redrawHeaders() { |
| 1151 _setTableWidth(_getVisibleTableWidth()); | 1145 _setTableWidth(_getVisibleTableWidth()); |
| 1152 _tableSizeChanged(); | 1146 _tableSizeChanged(); |
| 1153 | 1147 |
| 1154 _table.redrawHeaders(_selectionManager, _rows, _columns, _rowShift, _columnS
hift, | 1148 _table.redrawHeaders(_selectionManager, _rows, _columns, _rowShift, _columnS
hift, |
| 1155 _cellDisplay); | 1149 _cellDisplay); |
| 1156 } | 1150 } |
| 1157 | 1151 |
| 1158 void _refreshResizeDragger() { | 1152 void _refreshResizeDragger() { |
| 1159 window.requestMeasurementFrame(() { | 1153 _table.rect.then((ElementRect elementRect) { |
| 1160 // We may be called before the dragger is ready | 1154 // We may be called before the dragger is ready |
| 1161 if (_resizeDragger == null) { | 1155 if (_resizeDragger == null) { |
| 1162 return; | 1156 return; |
| 1163 } | 1157 } |
| 1164 ClientRect rect = _table.rect.bounding; | 1158 ClientRect rect = elementRect.bounding; |
| 1165 return () { | 1159 |
| 1166 _resizeDragger.style.setProperty("left", HtmlUtils.toPx(rect.width)); | 1160 _resizeDragger.style.setProperty("left", HtmlUtils.toPx(rect.width)); |
| 1167 _resizeDragger.style.setProperty("top", HtmlUtils.toPx(rect.height)); | 1161 _resizeDragger.style.setProperty("top", HtmlUtils.toPx(rect.height)); |
| 1168 }; | |
| 1169 }); | 1162 }); |
| 1170 } | 1163 } |
| 1171 | 1164 |
| 1172 // Remove the HTML elements corresponding to the given column | 1165 // Remove the HTML elements corresponding to the given column |
| 1173 void _removeTableColumnHtml(int col) { | 1166 void _removeTableColumnHtml(int col) { |
| 1174 _table.removeColumn(col); | 1167 _table.removeColumn(col); |
| 1175 int width = _spreadsheet.getColumnWidth(col); | 1168 int width = _spreadsheet.getColumnWidth(col); |
| 1176 _setTableWidth(_tableWidth - width); | 1169 _setTableWidth(_tableWidth - width); |
| 1177 } | 1170 } |
| 1178 | 1171 |
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1470 setDrag(COL, false); | 1463 setDrag(COL, false); |
| 1471 } | 1464 } |
| 1472 }); | 1465 }); |
| 1473 | 1466 |
| 1474 // The inline cell editing UI is displayed when a user makes the same single | 1467 // The inline cell editing UI is displayed when a user makes the same single |
| 1475 // cell selection over again. We keep track of the current single cell that | 1468 // cell selection over again. We keep track of the current single cell that |
| 1476 // is selected here to know when to enter edit mode. | 1469 // is selected here to know when to enter edit mode. |
| 1477 CellLocation currentSelectedSingleCell = null; | 1470 CellLocation currentSelectedSingleCell = null; |
| 1478 | 1471 |
| 1479 void mouseMove(MouseEvent e) { | 1472 void mouseMove(MouseEvent e) { |
| 1480 window.requestMeasurementFrame(() { | 1473 _table.rect.then((ElementRect rect) { |
| 1481 // Set x and y to the mouse coordinates, relative to the top left of | 1474 // Set x and y to the mouse coordinates, relative to the top left of |
| 1482 // the spreadsheet table. | 1475 // the spreadsheet table. |
| 1483 ClientRect boundingRect = _table.rect.bounding; | 1476 ClientRect boundingRect = rect.bounding; |
| 1484 int scrollOffsetX = -boundingRect.left.toInt(); | 1477 int scrollOffsetX = -boundingRect.left.toInt(); |
| 1485 int scrollOffsetY = -boundingRect.top.toInt(); | 1478 int scrollOffsetY = -boundingRect.top.toInt(); |
| 1486 x = e.x + scrollOffsetX; | 1479 x = e.x + scrollOffsetX; |
| 1487 y = e.y + scrollOffsetY; | 1480 y = e.y + scrollOffsetY; |
| 1488 | 1481 |
| 1489 // Update the dragger position and optionally the actual row/column size | 1482 // Update the dragger position and optionally the actual row/column size |
| 1490 if (dragRowColumn(false)) { | 1483 if (dragRowColumn(false)) { |
| 1491 return; | 1484 return; |
| 1492 } | 1485 } |
| 1493 | 1486 |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1542 }); | 1535 }); |
| 1543 } | 1536 } |
| 1544 | 1537 |
| 1545 _setMove(mouseMove); | 1538 _setMove(mouseMove); |
| 1546 | 1539 |
| 1547 _table.on.mouseDown.add((MouseEvent e) { | 1540 _table.on.mouseDown.add((MouseEvent e) { |
| 1548 _moveToTop(); | 1541 _moveToTop(); |
| 1549 | 1542 |
| 1550 // Right click toggles and positions the context menu | 1543 // Right click toggles and positions the context menu |
| 1551 if (e.button == 2 || (e.button == 0 && e.ctrlKey)) { | 1544 if (e.button == 2 || (e.button == 0 && e.ctrlKey)) { |
| 1552 window.requestMeasurementFrame(() { | 1545 _table.rect.then((ElementRect rect) { |
| 1553 ClientRect boundingRect = _table.rect.bounding; | 1546 ClientRect boundingRect = rect.bounding; |
| 1554 return () { | 1547 int scrollOffsetX = -boundingRect.left; |
| 1555 int scrollOffsetX = -boundingRect.left; | 1548 int scrollOffsetY = -boundingRect.top; |
| 1556 int scrollOffsetY = -boundingRect.top; | 1549 _contextMenu.show(e.x + scrollOffsetX, e.y + scrollOffsetY); |
| 1557 _contextMenu.show(e.x + scrollOffsetX, e.y + scrollOffsetY); | |
| 1558 }; | |
| 1559 }); | 1550 }); |
| 1560 return; | 1551 return; |
| 1561 } | 1552 } |
| 1562 | 1553 |
| 1563 _setDragFunction(mouseMove); | 1554 _setDragFunction(mouseMove); |
| 1564 | 1555 |
| 1565 _setUndragFunction((MouseEvent e_) { | 1556 _setUndragFunction((MouseEvent e_) { |
| 1566 dragRowColumn(true); | 1557 dragRowColumn(true); |
| 1567 _table.setDefaultCursor(); | 1558 _table.setDefaultCursor(); |
| 1568 draggingSelection = false; | 1559 draggingSelection = false; |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1690 } | 1681 } |
| 1691 _activeInnerMenu = new InnerMenuView(_window, row, _selectionManager, style, | 1682 _activeInnerMenu = new InnerMenuView(_window, row, _selectionManager, style, |
| 1692 _spreadsheet.layout.getRowHeight(rowIndex), | 1683 _spreadsheet.layout.getRowHeight(rowIndex), |
| 1693 (){ _tableSizeChanged(); }, | 1684 (){ _tableSizeChanged(); }, |
| 1694 (){ _hideInnerMenu(true); _repositionFormulaInput(null, false); }); | 1685 (){ _hideInnerMenu(true); _repositionFormulaInput(null, false); }); |
| 1695 _innerMenuRowIndex = rowIndex; | 1686 _innerMenuRowIndex = rowIndex; |
| 1696 } | 1687 } |
| 1697 | 1688 |
| 1698 // Update the scroll mechanism due to a change in the visible table area | 1689 // Update the scroll mechanism due to a change in the visible table area |
| 1699 void _tableSizeChanged() { | 1690 void _tableSizeChanged() { |
| 1700 window.requestMeasurementFrame(() { | 1691 _table.rect.then((ElementRect elementRect) { |
| 1701 ClientRect rect = _table.rect.bounding; | 1692 ClientRect rect = elementRect.bounding; |
| 1702 return () { | |
| 1703 _tableScrollContainer.style.width = HtmlUtils.toPx(rect.width + 10); | |
| 1704 _spreadsheetElement.style.width = HtmlUtils.toPx(rect.width); | |
| 1705 | 1693 |
| 1706 _tableScrollContainer.style.height = HtmlUtils.toPx(rect.height + 10); | 1694 _tableScrollContainer.style.width = HtmlUtils.toPx(rect.width + 10); |
| 1707 _spreadsheetElement.style.height = HtmlUtils.toPx(rect.height); | 1695 _spreadsheetElement.style.width = HtmlUtils.toPx(rect.width); |
| 1708 | 1696 |
| 1709 _tableScrollDiv.style.width = HtmlUtils.toPx( | 1697 _tableScrollContainer.style.height = HtmlUtils.toPx(rect.height + 10); |
| 1710 _spreadsheet.getColumnEnd(_spreadsheet.columnCount())); | 1698 _spreadsheetElement.style.height = HtmlUtils.toPx(rect.height); |
| 1711 int extra = _activeInnerMenu == null ? | |
| 1712 0 : _activeInnerMenu.currentRowHeight; | |
| 1713 _tableScrollDiv.style.height = HtmlUtils.toPx(_spreadsheet.getRowEnd( | |
| 1714 _spreadsheet.rowCount()) + extra); | |
| 1715 | 1699 |
| 1716 // Reposition the scroll bars | 1700 _tableScrollDiv.style.width = HtmlUtils.toPx( |
| 1717 _scroll(_rowShift, _columnShift); | 1701 _spreadsheet.getColumnEnd(_spreadsheet.columnCount())); |
| 1718 // Move the resize dragger to the bottom-right corner | 1702 int extra = _activeInnerMenu == null ? |
| 1719 _refreshResizeDragger(); | 1703 0 : _activeInnerMenu.currentRowHeight; |
| 1720 }; | 1704 _tableScrollDiv.style.height = HtmlUtils.toPx(_spreadsheet.getRowEnd( |
| 1705 _spreadsheet.rowCount()) + extra); |
| 1706 |
| 1707 // Reposition the scroll bars |
| 1708 _scroll(_rowShift, _columnShift); |
| 1709 // Move the resize dragger to the bottom-right corner |
| 1710 _refreshResizeDragger(); |
| 1721 }); | 1711 }); |
| 1722 } | 1712 } |
| 1723 | 1713 |
| 1724 void _updateInnerMenu() { | 1714 void _updateInnerMenu() { |
| 1725 if (_activeInnerMenu != null) { | 1715 if (_activeInnerMenu != null) { |
| 1726 _activeInnerMenu.updateSize(); | 1716 _activeInnerMenu.updateSize(); |
| 1727 } | 1717 } |
| 1728 } | 1718 } |
| 1729 | 1719 |
| 1730 // Change the width/height of a column or row. | 1720 // Change the width/height of a column or row. |
| 1731 void _updateRowColumnSize(int rowOrCol, int index, int size, int oldSize, bool
mouseUp) { | 1721 void _updateRowColumnSize(int rowOrCol, int index, int size, int oldSize, bool
mouseUp) { |
| 1732 if (mouseUp) { | 1722 if (mouseUp) { |
| 1733 Command command = new ResizeRowColumnCommand(_spreadsheet, rowOrCol, index
, size, oldSize); | 1723 Command command = new ResizeRowColumnCommand(_spreadsheet, rowOrCol, index
, size, oldSize); |
| 1734 _spreadsheet.execute(command); | 1724 _spreadsheet.execute(command); |
| 1735 } else { | 1725 } else { |
| 1736 if (rowOrCol == COL) { | 1726 if (rowOrCol == COL) { |
| 1737 _spreadsheet.setColumnWidth(index, size); | 1727 _spreadsheet.setColumnWidth(index, size); |
| 1738 } else { | 1728 } else { |
| 1739 _spreadsheet.setRowHeight(index, size); | 1729 _spreadsheet.setRowHeight(index, size); |
| 1740 } | 1730 } |
| 1741 } | 1731 } |
| 1742 } | 1732 } |
| 1743 } | 1733 } |
| OLD | NEW |