if(jQuery) (function($){
$.extend($.fn, {
violetGrid: function (o) {
if( !o ) var o = {};
if( o.container == undefined ) o.container = $(this);
if( o.defaultViewMode == undefined ) o.defaultViewMode = 'thumbnail';//or 'list'
if( o.directoryTreeData == undefined ) o.directoryTreeData = null;
if( o.dirIDprefix == undefined ) o.dirIDprefix = null;
var createNode = function (d) {
if( !d ) var d = {};
if( d.id == undefined ) d.id = null;
if( d.name == undefined ) d.name = null;
if( d.minetype == undefined ) d.minetype = 'directory';
if( d.parentID == undefined ) d.parentID = null;
if( d.clickEvent == undefined ) d.clickEvent = null;
if( d.customEvent == undefined ) d.customEvent = null;
var strHTML = '
';
strHTML += '
';
strHTML += '
';
strHTML += '
';
strHTML += '
' + d.name + '
';
strHTML += '
';
var disabledItemsList = null;
if (d.minetype == 'directory') {
disabledItemsList = ['preview'];
}
$(o.container).append(strHTML);
$('div[rel="id:'+ d.id +'"]').bind('click',function(e){itemClick(this)});
$('div[rel="id:'+ d.id +'"]').contextMenu({
menu: 'gridMenu',
disabledItems: disabledItemsList
}, function(action, el, pos) {
switch(action) {
case 'rename':
itemClick(el);
rename(el);
break;
default:
break;
}
});
}
var keyboardRename = function () {
$(document).keypress( function(e) {
var selectedItem = $('.selector.selected').parent();
switch( e.keyCode ) {
case 113:
rename(selectedItem);
break;
case 32:
cancelRename(selectedItem);
break;
default:
break;
}
return false;
});
}
var itemClick = function (i) {
$(i).parent().find('.selector').removeClass('selected');
$(i).parent().find('.selector').addClass('unselected');
$(i).parent().find('.file-name').removeClass('selected');
$(i).parent().find('.file-name').addClass('unselected');
$(i).find('.file-name').removeClass('unselected');
$(i).find('.file-name').addClass('selected');
$(i).find('.selector').removeClass('unselected');
$(i).find('.selector').addClass('selected');
}
var renderGrid = function (o) {
$(o.container).find ('.vscell').remove();
var childDir = o.directoryTreeData.DIRECTORIES;
var childFile = o.directoryTreeData.FILES;
var curentDirID = o.curentParent.substring(o.dirIDprefix.length, o.curentParent.length);
for (var i = 0 ; i < childDir.length; i++) {
if (childDir[i].parentID != curentDirID) continue;
createNode ({
id: childDir[i].id,
name: childDir[i].name,
parentID: curentDirID,
});
}
for (var i = 0 ; i < childFile.length; i++) {
if (childFile[i].parentID != curentDirID) continue;
createNode ({
id: childFile[i].id,
name: childFile[i].name,
parentID: curentDirID,
minetype: childFile[i].minetype,
});
}
}
var rename = function (e) {
var nameObj = $(e).find('.file-name');
var oldName = $(nameObj).text();
var editor = document.createElement ('INPUT');
editor.type = 'text';
editor.className = 'rename';
editor.value = oldName;
$(nameObj).text('');
$(nameObj).append(editor);
editor.focus();
$(editor).select();
}
var cancelRename = function (e) {
var oldName = $(e).find('INPUT.rename').attr('value');
$(e).find('INPUT.rename').remove();
$(e).find('.file-name').text(oldName);
}
this.getData = function (data) {
o.directoryTreeData = data.directoryTreeData;
o.curentParent = data.curentParent;
o.dirIDprefix = data.dirIDprefix
renderGrid(o);
keyboardRename();
}
this.initialize = function() {
return this;
};
return this.initialize();
}
});
})(jQuery);