Commit 786e01ae authored by Dmitry.Shahtanov's avatar Dmitry.Shahtanov

отвязка controller'а от cellEditMode

c_oAscCellEditorState.editEnd


git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@68118 954022d7-b5bf-4e40-9824-e11837661b57
parent 331aec08
......@@ -301,7 +301,7 @@
this.targetInfo.target == c_oTargetType.FillHandle))
return true;
if (t.isCellEditMode) {if (!t.handlers.trigger("stopCellEditing")) {return true;}}
if (t.handlers.trigger("getCellEditMode")) {if (!t.handlers.trigger("stopCellEditing")) {return true;}}
var coord = t._getCoordinates(event);
var graphicsInfo = t.handlers.trigger("getGraphicsInfo", coord.x, coord.y);
......@@ -322,7 +322,7 @@
// Будем показывать курсор у редактора ячейки (только для dblClick)
asc_CEventsController.prototype.showCellEditorCursor = function () {
if (this.isCellEditMode) {
if (this.handlers.trigger("getCellEditMode")) {
if (this.isDoBrowserDblClick) {
this.isDoBrowserDblClick = false;
this.handlers.trigger("showCellEditorCursor");
......@@ -420,7 +420,7 @@
if (t.isFormulaEditMode)
t.handlers.trigger("enterCellRange");
else if (t.isCellEditMode)
else if (t.handlers.trigger("getCellEditMode"))
if (!t.handlers.trigger("stopCellEditing")) {return;}
asc_applyFunction(callback);
......@@ -678,9 +678,9 @@
// окна редактора и отпускания кнопки, будем отрабатывать выход из окна (только Chrome присылает эвент MouseUp даже при выходе из браузера)
this.showCellEditorCursor();
while (t.isCellEditMode && !t.hasFocus || !t.enableKeyEvents || t.isSelectMode || t.isFillHandleMode || t.isMoveRangeMode || t.isMoveResizeRange) {
while (t.handlers.trigger("getCellEditMode") && !t.hasFocus || !t.enableKeyEvents || t.isSelectMode || t.isFillHandleMode || t.isMoveRangeMode || t.isMoveResizeRange) {
if (t.isCellEditMode && !t.strictClose && t.enableKeyEvents && event.which >= 37 && event.which <= 40) {
if (t.handlers.trigger("getCellEditMode") && !t.strictClose && t.enableKeyEvents && event.which >= 37 && event.which <= 40) {
// обрабатываем нажатие клавиш со стрелками, если редактор открыт не по F2 и включены эвенты
break;
}
......@@ -699,7 +699,7 @@
switch (event.which) {
case 113: // F2
if (isViewerMode || t.isCellEditMode || t.isSelectionDialogMode || graphicObjects.length) {return true;}
if (isViewerMode || t.handlers.trigger("getCellEditMode") || t.isSelectionDialogMode || graphicObjects.length) {return true;}
if (AscBrowser.isOpera) {stop();}
// Выставляем блокировку на выход из редактора по клавишам-стрелкам
t.strictClose = true;
......@@ -709,7 +709,7 @@
return result;
case 8: // backspace
if (isViewerMode || t.isCellEditMode || t.isSelectionDialogMode) {return true;}
if (isViewerMode || t.handlers.trigger("getCellEditMode") || t.isSelectionDialogMode) {return true;}
stop();
// При backspace фокус не в редакторе (стираем содержимое)
......@@ -718,13 +718,13 @@
return true;
case 46: // Del
if (isViewerMode || t.isCellEditMode || t.isSelectionDialogMode) {return true;}
if (isViewerMode || t.handlers.trigger("getCellEditMode") || t.isSelectionDialogMode) {return true;}
// Удаляем содержимое
t.handlers.trigger("empty");
return result;
case 9: // tab
if (t.isCellEditMode) {return true;}
if (t.handlers.trigger("getCellEditMode")) {return true;}
// Отключим стандартную обработку браузера нажатия tab
stop();
......@@ -739,7 +739,7 @@
break;
case 13: // "enter"
if (t.isCellEditMode) {return true;}
if (t.handlers.trigger("getCellEditMode")) {return true;}
// Особый случай (возможно движение в выделенной области)
selectionActivePointChanged = true;
if (shiftKey) {
......@@ -765,7 +765,7 @@
return result;
case 32: // Spacebar
if (t.isCellEditMode) {return true;}
if (t.handlers.trigger("getCellEditMode")) {return true;}
// Обработать как обычный текст
if (!ctrlKey && !shiftKey) {
t.skipKeyPress = false;
......@@ -829,7 +829,7 @@
case 40: // down
stop(); // Отключим стандартную обработку браузера нажатия down
// Обработка Alt + down
if (!isViewerMode && !t.isCellEditMode && !t.isSelectionDialogMode && event.altKey) {
if (!isViewerMode && !t.handlers.trigger("getCellEditMode") && !t.isSelectionDialogMode && event.altKey) {
t.handlers.trigger("showAutoComplete");
return result;
}
......@@ -865,10 +865,10 @@
case 65: // select all Ctrl + a
case 67: // copy Ctrl + c
if (t.isCellEditMode) { return true; }
if (t.handlers.trigger("getCellEditMode")) { return true; }
case 80: // print Ctrl + p
if (t.isCellEditMode) { stop(); return result; }
if (t.handlers.trigger("getCellEditMode")) { stop(); return result; }
if (!ctrlKey) { t.skipKeyPress = false; return true; }
......@@ -921,7 +921,7 @@
case 61: // Firefox, Opera (+/=)
case 187: // +/=
if (isViewerMode || t.isCellEditMode || t.isSelectionDialogMode) {return true;}
if (isViewerMode || t.handlers.trigger("getCellEditMode") || t.isSelectionDialogMode) {return true;}
if (event.altKey) {
t.handlers.trigger('addFunction', 'SUM', c_oAscPopUpSelectorType.Func, true);
......@@ -948,7 +948,7 @@
if (selectionActivePointChanged) {
t.handlers.trigger("selectionActivePointChanged", dc, dr, function (d) {t.scroll(d);});
} else {
if (this.isCellEditMode && !this.isFormulaEditMode) {
if (this.handlers.trigger("getCellEditMode") && !this.isFormulaEditMode) {
if (!t.handlers.trigger("stopCellEditing")) {return true;}
}
......@@ -966,7 +966,7 @@
if (t.isFormulaEditMode) {
t.handlers.trigger("enterCellRange");
} else if (t.isCellEditMode) {
} else if (t.handlers.trigger("getCellEditMode")) {
t.handlers.trigger("stopCellEditing");
}
});
......@@ -991,7 +991,7 @@
this.showCellEditorCursor();
// Не можем вводить когда селектим или когда совершаем действия с объектом
if (this.isCellEditMode && !this.hasFocus || this.isSelectMode ||
if (this.handlers.trigger("getCellEditMode") && !this.hasFocus || this.isSelectMode ||
!this.handlers.trigger('canReceiveKeyPress'))
return true;
......@@ -1004,7 +1004,7 @@
if (graphicObjects.length && this.handlers.trigger("graphicObjectWindowKeyPress", event))
return true;
if (!this.isCellEditMode) {
if (!this.handlers.trigger("getCellEditMode")) {
// При нажатии символа, фокус не ставим
// Очищаем содержимое ячейки
this.handlers.trigger("editCell", 0, 0, /*isCoord*/false, /*isFocus*/false, /*isClearCell*/true,
......@@ -1173,7 +1173,7 @@
if (t.isSelectionDialogMode)
return;
if (this.isCellEditMode && !this.handlers.trigger("stopCellEditing"))
if (this.handlers.trigger("getCellEditMode") && !this.handlers.trigger("stopCellEditing"))
return;
t.isShapeAction = true;
......@@ -1222,7 +1222,7 @@
this.mouseDownLastCord = coord;
t.hasFocus = true;
if (!t.isCellEditMode) {
if (!t.handlers.trigger("getCellEditMode")) {
if (event.shiftKey) {
t.isSelectMode = true;
t._changeSelection(event, /*isSelectMode*/true);
......@@ -1288,7 +1288,7 @@
if (t.isFormulaEditMode) {
t.handlers.trigger("enterCellRange");
} else if (t.isCellEditMode) {
} else if (t.handlers.trigger("getCellEditMode")) {
if (!t.handlers.trigger("stopCellEditing")) {return;}
}
});
......
......@@ -129,6 +129,8 @@
this.fontRenderingMode = null;
this.lockDraw = false; // Lock отрисовки на некоторое время
this.isCellEditMode = false;
this.formulasList = null; // Список всех формул
this.lastFormulaPos = -1; // Последняя позиция формулы
this.lastFormulaNameLength = ''; // Последний кусок формулы
......@@ -310,11 +312,17 @@
self._onMoveResizeRangeHandleDone.apply(self, arguments);
}, "editCell": function() {
self._onEditCell.apply(self, arguments);
}, "stopCellEditing": function() {
},
"stopCellEditing": function() {
return self._onStopCellEditing.apply(self, arguments);
}, "empty": function() {
},
"getCellEditMode": function() {
return self.isCellEditMode;
},
"empty": function() {
self._onEmpty.apply(self, arguments);
}, "canEnterCellRange": function() {
},
"canEnterCellRange": function() {
self.cellEditor.setFocus(false);
var ret = self.cellEditor.canEnterCellRange();
ret ? self.cellEditor.activateCellRange() : true;
......@@ -424,7 +432,7 @@
self._onStopFormatPainter();
self.controller.setStrictClose(true);
self.cellEditor.callTopLineMouseup = true;
if (!self.controller.isCellEditMode && !self.controller.isFillHandleMode) {
if (!self.getCellEditMode() && !self.controller.isFillHandleMode) {
self._onEditCell(0, 0, /*isCoord*/false, /*isFocus*/true);
}
}, false);
......@@ -533,6 +541,9 @@
self.controller.scroll(d);
}, "getLockDefNameManagerStatus": function() {
return self.defNameAllowCreate
},
"getCellEditMode": function() {
return self.isCellEditMode;
}
});
......@@ -878,7 +889,7 @@
var arrMouseMoveObjects = []; // Теперь это массив из объектов, над которыми курсор
//ToDo: включить определение target, если находимся в режиме редактирования ячейки.
if (this.controller.isCellEditMode && !this.controller.isFormulaEditMode) {
if (this.getCellEditMode() && !this.controller.isFormulaEditMode) {
canvasElem.style.cursor = "";
} else if (x === undefined && y === undefined) {
ws.cleanHighlightedHeaders();
......@@ -1175,10 +1186,10 @@
var arn = ws.activeRange.clone(true);
var editFunction = function() {
t.controller.setCellEditMode(true);
t.setCellEditMode(true);
ws.setCellEditMode(true);
if (!ws.openCellEditor(t.cellEditor, x, y, isCoord, /*fragments*/undefined, /*cursorPos*/undefined, isFocus, isClearCell, /*isHideCursor*/isHideCursor, /*isQuickInput*/isQuickInput, /*activeRange*/arn)) {
t.controller.setCellEditMode(false);
t.setCellEditMode(false);
t.controller.setStrictClose(false);
t.controller.setFormulaEditMode(false);
ws.setCellEditMode(false);
......@@ -1206,7 +1217,7 @@
var editLockCallback = function(res) {
if (!res) {
t.controller.setCellEditMode(false);
t.setCellEditMode(false);
t.controller.setStrictClose(false);
t.controller.setFormulaEditMode(false);
ws.setCellEditMode(false);
......@@ -1232,20 +1243,21 @@
};
WorkbookView.prototype._onCloseCellEditor = function() {
this.controller.setCellEditMode(false);
this.setCellEditMode(false);
this.controller.setStrictClose(false);
this.controller.setFormulaEditMode(false);
var ws = this.getWorksheet(), isCellEditMode;
isCellEditMode = ws.getCellEditMode();
ws.setCellEditMode(false);
ws.setFormulaEditMode(false);
if( this.cellFormulaEnterWSOpen ){
ws = this.cellFormulaEnterWSOpen;
isCellEditMode = isCellEditMode ? isCellEditMode : ws.getCellEditMode();
ws.setCellEditMode(false);
ws.setFormulaEditMode(false);
}
isCellEditMode = ws.getCellEditMode();
if (this.cellFormulaEnterWSOpen) {
this.cellFormulaEnterWSOpen = null;
var index = ws.model.getIndex();
......@@ -1657,7 +1669,11 @@
// Получаем свойство: редактируем мы сейчас или нет
WorkbookView.prototype.getCellEditMode = function() {
return this.controller.isCellEditMode;
return this.isCellEditMode;
};
WorkbookView.prototype.setCellEditMode = function(flag) {
this.isCellEditMode = !!flag;
};
WorkbookView.prototype.getIsTrackShape = function() {
......@@ -1829,7 +1845,7 @@
var openEditor = function(res) {
if (res) {
// Выставляем переменные, что мы редактируем
t.controller.setCellEditMode(true);
t.setCellEditMode(true);
ws.setCellEditMode(true);
t.handlers.trigger("asc_onEditCell", c_oAscCellEditorState.editStart);
......@@ -1839,7 +1855,7 @@
// Открываем, с выставлением позиции курсора
if (!ws.openCellEditorWithText(t.cellEditor, name, cursorPos, /*isFocus*/false, /*activeRange*/arn)) {
t.handlers.trigger("asc_onEditCell", c_oAscCellEditorState.editEnd);
t.controller.setCellEditMode(false);
t.setCellEditMode(false);
t.controller.setStrictClose(false);
t.controller.setFormulaEditMode(false);
ws.setCellEditMode(false);
......@@ -1849,7 +1865,7 @@
t.skipHelpSelector = false;
}
} else {
t.controller.setCellEditMode(false);
t.setCellEditMode(false);
t.controller.setStrictClose(false);
t.controller.setFormulaEditMode(false);
ws.setCellEditMode(false);
......@@ -1865,7 +1881,7 @@
WorkbookView.prototype.copyToClipboard = function() {
var t = this, ws, v;
if (!t.controller.isCellEditMode) {
if (!t.getCellEditMode()) {
ws = t.getWorksheet();
t.clipboard.copyRange(ws.getSelectedRange(), ws);
} else {
......@@ -1878,7 +1894,7 @@
WorkbookView.prototype.copyToClipboardButton = function() {
var t = this, ws, v;
if (!t.controller.isCellEditMode) {
if (!t.getCellEditMode()) {
ws = t.getWorksheet();
return t.clipboard.copyRangeButton(ws.getSelectedRange(), ws);
} else {
......@@ -1893,7 +1909,7 @@
WorkbookView.prototype.pasteFromClipboard = function() {
var t = this;
if (!t.controller.isCellEditMode) {
if (!t.getCellEditMode()) {
var ws = t.getWorksheet();
t.clipboard.pasteRange(ws);
} else {
......@@ -1905,7 +1921,7 @@
WorkbookView.prototype.pasteFromClipboardButton = function() {
var t = this;
if (!t.controller.isCellEditMode) {
if (!t.getCellEditMode()) {
var ws = t.getWorksheet();
return t.clipboard.pasteRangeButton(ws);
} else {
......@@ -1917,7 +1933,7 @@
WorkbookView.prototype.cutToClipboard = function() {
var t = this, ws, v;
if (!t.controller.isCellEditMode && !window.USER_AGENT_SAFARI_MACOS) {
if (!t.getCellEditMode() && !window.USER_AGENT_SAFARI_MACOS) {
ws = t.getWorksheet();
// Запрещаем копирование диаграмм в iframe
......@@ -1935,12 +1951,12 @@
};
WorkbookView.prototype.bIsEmptyClipboard = function() {
return this.clipboard.bIsEmptyClipboard(this.controller.isCellEditMode);
return this.clipboard.bIsEmptyClipboard(this.getCellEditMode());
};
WorkbookView.prototype.cutToClipboardButton = function() {
var t = this, ws, v;
if (!t.controller.isCellEditMode) {
if (!t.getCellEditMode()) {
ws = t.getWorksheet();
var result = t.clipboard.copyRangeButton(ws.getSelectedRange(), ws, true);
if (result) {
......@@ -1958,7 +1974,7 @@
};
WorkbookView.prototype.undo = function() {
if (!this.controller.isCellEditMode) {
if (!this.getCellEditMode()) {
if (!History.Undo() && this.collaborativeEditing.getFast() && this.collaborativeEditing.getCollaborativeEditing()) {
this.Api.sync_TryUndoInFastCollaborative();
}
......@@ -1968,7 +1984,7 @@
};
WorkbookView.prototype.redo = function() {
if (!this.controller.isCellEditMode) {
if (!this.getCellEditMode()) {
History.Redo();
} else {
this.cellEditor.redo();
......@@ -1976,7 +1992,7 @@
};
WorkbookView.prototype.setFontAttributes = function(prop, val) {
if (!this.controller.isCellEditMode) {
if (!this.getCellEditMode()) {
this.getWorksheet().setSelectionInfo(prop, val);
} else {
this.cellEditor.setTextStyle(prop, val);
......@@ -1984,7 +2000,7 @@
};
WorkbookView.prototype.changeFontSize = function(prop, val) {
if (!this.controller.isCellEditMode) {
if (!this.getCellEditMode()) {
this.getWorksheet().setSelectionInfo(prop, val);
} else {
this.cellEditor.setTextStyle(prop, val);
......@@ -1992,7 +2008,7 @@
};
WorkbookView.prototype.emptyCells = function(options) {
if (!this.controller.isCellEditMode) {
if (!this.getCellEditMode()) {
this.getWorksheet().emptySelection(options);
this.restoreFocus();
} else {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment