Skip to content

Commit

Permalink
- Moved GlobalEditorLock into slick.grid.js.; exposed EditorLock.
Browse files Browse the repository at this point in the history
- Added "editorLock" option to SlickGrid; default to GlobalEditorLock.
- Deleted slick.globaleditorlock.js.
  • Loading branch information
mleibman committed Feb 7, 2010
1 parent 8c6a8c2 commit 3475eba
Show file tree
Hide file tree
Showing 9 changed files with 68 additions and 80 deletions.
1 change: 0 additions & 1 deletion examples/example10-async-post-render.html
Expand Up @@ -56,7 +56,6 @@ <h2>Demonstrates:</h2>
<script language="JavaScript" src="../lib/jquery.sparkline.min.js"></script>

<script language="JavaScript" src="../slick.editors.js"></script>
<script language="JavaScript" src="../slick.globaleditorlock.js"></script>
<script language="JavaScript" src="../slick.grid.js"></script>

<script>
Expand Down
1 change: 0 additions & 1 deletion examples/example3-editing.html
Expand Up @@ -40,7 +40,6 @@ <h2>Demonstrates:</h2>
<script language="JavaScript" src="../lib/jquery.event.drag.custom.js"></script>

<script language="JavaScript" src="../slick.editors.js"></script>
<script language="JavaScript" src="../slick.globaleditorlock.js"></script>
<script language="JavaScript" src="../slick.grid.js"></script>

<script>
Expand Down
1 change: 0 additions & 1 deletion examples/example4-model.html
Expand Up @@ -69,7 +69,6 @@ <h2>Demonstrates:</h2>
<script language="JavaScript" src="../lib/jquery.event.drag.custom.js"></script>

<script language="JavaScript" src="../slick.editors.js"></script>
<script language="JavaScript" src="../slick.globaleditorlock.js"></script>
<script language="JavaScript" src="../slick.grid.js"></script>
<script language="JavaScript" src="../slick.model.js"></script>
<script language="JavaScript" src="../slick.pager.js"></script>
Expand Down
1 change: 0 additions & 1 deletion examples/example5-collapsing.html
Expand Up @@ -64,7 +64,6 @@ <h2>Demonstrates:</h2>
<script language="JavaScript" src="../lib/jquery.event.drag.custom.js"></script>

<script language="JavaScript" src="../slick.editors.js"></script>
<script language="JavaScript" src="../slick.globaleditorlock.js"></script>
<script language="JavaScript" src="../slick.grid.js"></script>
<script language="JavaScript" src="../slick.model.js"></script>

Expand Down
1 change: 0 additions & 1 deletion examples/example7-events.html
Expand Up @@ -70,7 +70,6 @@ <h2>Demonstrates:</h2>
<script language="JavaScript" src="../lib/jquery.event.drag.custom.js"></script>

<script language="JavaScript" src="../slick.editors.js"></script>
<script language="JavaScript" src="../slick.globaleditorlock.js"></script>
<script language="JavaScript" src="../slick.grid.js"></script>

<script>
Expand Down
1 change: 0 additions & 1 deletion examples/example9-row-reordering.html
Expand Up @@ -45,7 +45,6 @@
<script language="JavaScript" src="../lib/jquery.event.drag.custom.js"></script>

<script language="JavaScript" src="../slick.editors.js"></script>
<script language="JavaScript" src="../slick.globaleditorlock.js"></script>
<script language="JavaScript" src="../slick.grid.js"></script>

<script>
Expand Down
58 changes: 0 additions & 58 deletions slick.globaleditorlock.js

This file was deleted.

83 changes: 68 additions & 15 deletions slick.grid.js
Expand Up @@ -2,6 +2,64 @@
/*global $: false, jQuery: false, window: false, console: false, document: false, alert: false, setTimeout: false, clearTimeout: false, Slick: false */// Define recognized globals for JSLint
"use strict";


(function() {
/***
* A lock for controlling access to the editing functionality for multiple components capable of editing the same data.
*/
function EditorLock()
{
var currentEditor = null;

this.isEditing = function() {
return (currentEditor != null);
};

this.hasLock = function(editor){
return (currentEditor == editor);
};

this.enterEditMode = function(editor) {
if (currentEditor != null)
throw "EditorLock : enterEditMode : currentEditor == null";

if (!editor.commitCurrentEdit)
throw "EditorLock : enterEditMode : editor must implement .commitCurrentEdit()";

if (!editor.cancelCurrentEdit)
throw "EditorLock : enterEditMode : editor must implement .cancelCurrentEdit()";

currentEditor = editor;
};

this.leaveEditMode = function(editor) {
if (currentEditor != editor)
throw "EditorLock : leaveEditMode() : currentEditor != editor";

currentEditor = null;
};

this.commitCurrentEdit = function() {
if (currentEditor)
return currentEditor.commitCurrentEdit();

return true;
};

this.cancelCurrentEdit = function() {
if (currentEditor)
currentEditor.cancelCurrentEdit();
}

return this;
};

// Slick.EditorLock, Slick.GlobalEditorLock
$.extend(true, window, { Slick: { EditorLock: EditorLock, GlobalEditorLock: new EditorLock() }});
})();



/***
*
* (c) 2009-2010 Michael Leibman (michael.leibman@gmail.com)
Expand Down Expand Up @@ -29,7 +87,7 @@
* enableAsyncPostRender - (default false) If true, async post rendering will occur and asyncPostRender delegates on columns will be called.
* asyncPostRenderDelay - (default 60msec) Delay after which async post renderer delegate is called.
* autoHeight - (default false) If true, vertically resizes to fit all rows.
*
* editorLock - (default Slick.GlobalEditorLock) A Slick.EditorLock instance to use for controlling concurrent data edits.
*
* COLUMN DEFINITION (columns) OPTIONS:
* id - Column ID.
Expand Down Expand Up @@ -112,7 +170,8 @@ if (!jQuery.fn.drag) {
forceFitColumns: false,
enableAsyncPostRender: false,
asyncPostRenderDelay: 60,
autoHeight: false
autoHeight: false,
editorLock: Slick.GlobalEditorLock
};

var columnDefaults = {
Expand Down Expand Up @@ -227,10 +286,6 @@ if (!jQuery.fn.drag) {
if (options.enableColumnReorder && !jQuery.fn.sortable) {
throw new Error("SlickGrid's \"enableColumnReorder = true\" option requires jquery-ui.sortable module to be loaded");
}
if (options.editable && !Slick.GlobalEditorLock) {
throw new Error("SlickGrid's \"editable = true\" option requires slick.globaleditorlock module to be loaded");
}


$container
.empty()
Expand Down Expand Up @@ -765,7 +820,7 @@ if (!jQuery.fn.drag) {

setSelectedRows = function setSelectedRowsFn(rows) {
var i, row;
if (options.editable && Slick.GlobalEditorLock.isEditing() && !Slick.GlobalEditorLock.hasLock(self)) {
if (options.editorLock.isEditing() && !options.editorLock.hasLock(self)) {
throw "Grid : setSelectedRows : cannot set selected rows when somebody else has an edit lock";
}

Expand Down Expand Up @@ -1135,7 +1190,7 @@ if (!jQuery.fn.drag) {

switch (e.which) {
case 27: // esc
if (options.editable && Slick.GlobalEditorLock.isEditing() && Slick.GlobalEditorLock.hasLock(self)) {
if (options.editorLock.isEditing() && options.editorLock.hasLock(self)) {
cancelCurrentEdit(self);
}
if (currentCellNode) {
Expand Down Expand Up @@ -1385,9 +1440,7 @@ if (!jQuery.fn.drag) {
// IE can't set focus to anything else correctly
if ($.browser.msie) { clearTextSelection(); }

if (options.editable) {
Slick.GlobalEditorLock.leaveEditMode(self);
}
options.editorLock.leaveEditMode(self);
};

makeSelectedCellEditable = function makeSelectedCellEditableFn() {
Expand All @@ -1408,7 +1461,7 @@ if (!jQuery.fn.drag) {
return;
}

Slick.GlobalEditorLock.enterEditMode(self);
options.editorLock.enterEditMode(self);

$(currentCellNode).addClass("editable");

Expand Down Expand Up @@ -1442,7 +1495,7 @@ if (!jQuery.fn.drag) {

gotoDir = function gotoDirFn(dy, dx, rollover) {
if (!currentCellNode || !options.enableCellNavigation) { return; }
if (options.editable && !Slick.GlobalEditorLock.commitCurrentEdit()) { return; }
if (!options.editorLock.commitCurrentEdit()) { return; }

var nextRow = rowsCache[currentRow + dy];
var nextCell = nextRow ? $(nextRow).find(".slick-cell[cell=" + (currentCell + dx) + "]") : null;
Expand Down Expand Up @@ -1484,7 +1537,7 @@ if (!jQuery.fn.drag) {
if (row > data.length || row < 0 || cell >= columns.length || cell < 0) { return; }
if (!options.enableCellNavigation || columns[cell].unselectable) { return; }

if (options.editable && !Slick.GlobalEditorLock.commitCurrentEdit()) { return; }
if (!options.editorLock.commitCurrentEdit()) { return; }

if (!rowsCache[row]) {
renderRows(row,row);
Expand All @@ -1502,7 +1555,7 @@ if (!jQuery.fn.drag) {


//////////////////////////////////////////////////////////////////////////////////////////////
// IEditor implementation for Slick.GlobalEditorLock
// IEditor implementation for the editor lock

commitCurrentEdit = function commitCurrentEditFn() {
if (currentEditor) {
Expand Down
1 change: 0 additions & 1 deletion tests/scrolling benchmarks.html
Expand Up @@ -24,7 +24,6 @@
<script language="JavaScript" src="../lib/jquery.event.drag.custom.js"></script>

<script language="JavaScript" src="../slick.grid.js"></script>
<script language="JavaScript" src="../slick.globaleditorlock.js"></script>
<script language="JavaScript" src="../slick.editors.js"></script>

<button onclick="grid.debug()">Debug info</button>
Expand Down

0 comments on commit 3475eba

Please sign in to comment.