|
- (function ($) {
- // register namespace
- $.extend(true, window, {
- "Slick": {
- "CellCopyManager": CellCopyManager
- }
- });
-
-
- function CellCopyManager() {
- var _grid;
- var _self = this;
- var _copiedRanges;
-
- function init(grid) {
- _grid = grid;
- _grid.onKeyDown.subscribe(handleKeyDown);
- }
-
- function destroy() {
- _grid.onKeyDown.unsubscribe(handleKeyDown);
- }
-
- function handleKeyDown(e, args) {
- var ranges;
- if (!_grid.getEditorLock().isActive()) {
- if (e.which == $.ui.keyCode.ESCAPE) {
- if (_copiedRanges) {
- e.preventDefault();
- clearCopySelection();
- _self.onCopyCancelled.notify({ranges: _copiedRanges});
- _copiedRanges = null;
- }
- }
-
- if (e.which == 67 && (e.ctrlKey || e.metaKey)) {
- ranges = _grid.getSelectionModel().getSelectedRanges();
- if (ranges.length != 0) {
- e.preventDefault();
- _copiedRanges = ranges;
- markCopySelection(ranges);
- _self.onCopyCells.notify({ranges: ranges});
- }
- }
-
- if (e.which == 86 && (e.ctrlKey || e.metaKey)) {
- if (_copiedRanges) {
- e.preventDefault();
- clearCopySelection();
- ranges = _grid.getSelectionModel().getSelectedRanges();
- _self.onPasteCells.notify({from: _copiedRanges, to: ranges});
- _copiedRanges = null;
- }
- }
- }
- }
-
- function markCopySelection(ranges) {
- var columns = _grid.getColumns();
- var hash = {};
- for (var i = 0; i < ranges.length; i++) {
- for (var j = ranges[i].fromRow; j <= ranges[i].toRow; j++) {
- hash[j] = {};
- for (var k = ranges[i].fromCell; k <= ranges[i].toCell; k++) {
- hash[j][columns[k].id] = "copied";
- }
- }
- }
- _grid.setCellCssStyles("copy-manager", hash);
- }
-
- function clearCopySelection() {
- _grid.removeCellCssStyles("copy-manager");
- }
-
- $.extend(this, {
- "init": init,
- "destroy": destroy,
- "clearCopySelection": clearCopySelection,
-
- "onCopyCells": new Slick.Event(),
- "onCopyCancelled": new Slick.Event(),
- "onPasteCells": new Slick.Event()
- });
- }
- })(jQuery);
|