FileDialog = { locked : false, lock : function () { if (FileDialog.locked) return false; FileDialog.locked=true; return true; }, unlock : function () { FileDialog.locked=false }, refreshFileDialog : function (handle) { var lastselect; console.log('refreshFileDialog',handle.dir); handle.list(handle.dir, function (res) { if (Utils.isError(res)) { return handle.onerror(res); } var input=$('#fileDialogListFileName'); if (res && res.status==0) { var list = $('#fileDialogList'); list.empty(); var entries=res.dirs; if (handle.mode=='Open' || handle.mode=='Load') entries=entries.concat(res.files); $('#fileDialogListLabel').html(handle.dir); entries.forEach(function (entry) { if (entry.name[0]=='.' && entry.name!='..') return; var listentry = $('
',{ class:'nav-entry '+(entry.dir?'nav-entry-directory':'nav-entry-file'), style:'cursor: pointer' }).append(''+entry.name+'').appendTo(list); if (entry.dir) listentry.bind('click',function () { if (entry.name=='..') handle.dir = handle.dir.replace(/(\/[^\/]+)$/,''); else handle.dir += ((handle.dir=='/'?'':'/')+entry.name); handle.dir=handle.dir||'/'; handle.selected=entry.name; FileDialog.refreshFileDialog(handle); }); else { listentry.bind('click',function () { if (lastselect) $(lastselect).removeClass('nav-selected'); $(listentry).addClass('nav-selected'); lastselect=listentry; handle.selected=entry.name; input.val(entry.name); }); } return entry; }) } }) }, dialog : function (title, mode, dir, filename, fs, callback) { if (!FileDialog.lock()) return; var handle={selected:filename, dir:dir, mode:mode, list:fs.list}; var html='