'),
feedback = GUIUtils.getTextSpan('',"feedback"),
fileb =
GUIUtils.getFileBrowser(fnames,false,args['manualInput'],__getRecentDir(args['startDir']));
new_folder_b.html('new folder')
.click(function(ev) {
var folder_name = prompt("please fill in a name for the folder");
if (folder_name != null) {
folder_name = folder_name.replace(/^\s+|\s+$/g, ''); // trim
if (!folder_name.match(/^[a-zA-Z0-9_\s]+$/i)) {
feedback.html("invalid folder name: " + folder_name);
} else {
console.log("/" + window.localStorage.getItem('user') + fileb['getcurrfolder']() + folder_name + '.folder');
DataUtils.createFolder("/" + window.localStorage.getItem('user') + fileb['getcurrfolder']() + folder_name + '.folder', function(statusCode, resp) {
if( ! utils.isHttpSuccessCode(statusCode) ) {
feedback.html(resp)
} else {
feedback.html('created ' + folder_name);
fnames.push(fileb['getcurrfolder']() + folder_name + "/")
fileb['refresh'](fnames);
}
});
}
}
});
folder_buttons.append(new_folder_b);
rename_folder_b.html('rename folder')
.click(function(ev) {
var value = fileb['getcurrfolder']();
var folder_name = prompt("please fill in a new name for folder " + value);
if (folder_name != null) {
folder_name = folder_name.replace(/^\s+|\s+$/g, ''); // trim
if (!folder_name.match(/^[a-zA-Z0-9_\s]+$/i)) {
feedback.html("invalid folder name: " + folder_name);
} else {
DataUtils.renameInCloud("/" + window.localStorage.getItem('user') + value.slice(0, -1) + ".folder", folder_name, function(statusCode,resp)
{
if( ! utils.isHttpSuccessCode(statusCode) ) {
feedback.html(resp);
} else {
var matches = value.match(/^\/(.*\/)?(.*)\/$/),
newvalue = "/" + (matches[1] || "") + folder_name + "/";
for (var idx in fnames) {
fnames[idx] = fnames[idx].replace(new RegExp("^("+value+")(.*)"), newvalue+"$2");
}
fileb['refresh'](fnames, newvalue);
fileb['clearselection']();
feedback.html('renamed ' + value + ' to ' + newvalue);
}
});
}
}
});
folder_buttons.append(rename_folder_b);
delete_folder_b.html('delete folder')
.click(function(ev) {
var value = fileb['getcurrfolder']();
if (confirm("are you sure you want to delete " + value + "?")) {
DataUtils.deleteFromCloud("/" + window.localStorage.getItem('user') + value.slice(0, -1) + ".folder", function(statusCode,resp)
{
if( ! utils.isHttpSuccessCode(statusCode) ) {
feedback.html(resp);
} else {
var matches = value.match(/^\/(.*\/)?(.*)\/$/),
newvalue = "/_Trash_" + value;
for (var idx in fnames) {
fnames[idx] = fnames[idx].replace(new RegExp("^("+value+")(.*)"), newvalue+"$2");
}
fileb['refresh'](fnames);
fileb['clearselection']();
feedback.html('deleted ' + value);
}
});
}
});
folder_buttons.append(delete_folder_b);
move_folder_b.html('move folder')
.click(function(ev) {
var value = fileb['getcurrfolder']();
var folder_loc = prompt("please fill in a new parent folder for folder " + value);
if (folder_loc != null) {
folder_loc = folder_loc.replace(/^\s+|\s+$/g, ''); // trim
if (!folder_loc.match(/^\/([a-zA-Z0-9_\s]+\/)*$/i)) {
feedback.html("invalid parent location: " + folder_loc);
} else {
DataUtils.moveInCloud("/" + window.localStorage.getItem('user') + value.slice(0, -1) + ".folder", folder_loc, function(statusCode,resp)
{
if( ! utils.isHttpSuccessCode(statusCode) ) {
feedback.html(resp);
} else {
var matches = value.match(/^\/(.*\/)?(.*)\/$/),
newvalue = folder_loc + matches[2] + "/";
for (var idx in fnames) {
fnames[idx] = fnames[idx].replace(new RegExp("^("+value+")(.*)"), newvalue+"$2");
}
fileb['refresh'](fnames, newvalue);
fileb['clearselection']();
feedback.html('moved ' + value + ' to ' + folder_loc);
}
});
}
}
});
folder_buttons.append(move_folder_b);
rename_file_b.html('rename file')
.click(function(ev) {
var value = fileb['getselection']();
var file_name = prompt("please fill in a new name for file " + value);
if (file_name != null) {
file_name = file_name.replace(/^\s+|\s+$/g, ''); // trim
if (!file_name.match(/^[a-zA-Z0-9_\s\.]+$/i)) {
feedback.html("invalid folder name: " + file_name);
} else {
DataUtils.renameInCloud("/" + window.localStorage.getItem('user') + value.slice(0, -1) + ".file", file_name, function(statusCode,resp)
{
if( ! utils.isHttpSuccessCode(statusCode) ) {
feedback.html(resp);
} else {
var matches = value.match(/^\/(.*\/)?(.*)\/$/),
newvalue = "/" + (matches[1] || "") + file_name;
var idx = fnames.indexOf(value);
if (idx >= 0) {
fnames[idx] = newvalue;
}
fileb['refresh'](fnames);
fileb['clearselection']();
feedback.html('renamed ' + value + ' to ' + newvalue);
}
});
}
}
});
file_buttons.append(rename_file_b);
delete_file_b.html('delete file')
.click(function(ev) {
var value = fileb['getselection']();
if (confirm("are you sure you want to delete " + value + "?")) {
DataUtils.deleteFromCloud("/" + window.localStorage.getItem('user') + value + ".file", function(statusCode,resp)
{
if( ! utils.isHttpSuccessCode(statusCode) ) {
feedback.html(resp);
} else {
feedback.html('deleted ' + value);
var idx = fnames.indexOf(value);
if (idx >= 0) {
fnames.splice(idx, 1);
}
fileb['refresh'](fnames);
fileb['clearselection']();
}
});
}
});
file_buttons.append(delete_file_b);
move_file_b.html('move file')
.click(function(ev) {
var value = fileb['getselection']();
var folder_loc = prompt("please fill in a new parent folder for file " + value);
if (folder_loc != null) {
folder_loc = folder_loc.replace(/^\s+|\s+$/g, ''); // trim
if (!folder_loc.match(/^\/([a-zA-Z0-9_\s]+\/)*$/i)) {
feedback.html("invalid parent location: " + folder_loc);
} else {
DataUtils.moveInCloud("/" + window.localStorage.getItem('user') + value + ".file", folder_loc, function(statusCode,resp)
{
if( ! utils.isHttpSuccessCode(statusCode) ) {
feedback.html(resp);
} else {
var matches = value.match(/^\/(.*\/)?(.*)$/),
newvalue = folder_loc + matches[2];
feedback.html('moved ' + value + ' to ' + folder_loc);
var idx = fnames.indexOf(value);
if (idx >= 0) {
fnames[idx] = newvalue;
}
fileb['refresh'](fnames);
fileb['clearselection']();
}
});
}
}
});
file_buttons.append(move_file_b);
GUIUtils.setupAndShowDialog(
[fileb['filebrowser'],folder_buttons,file_buttons,feedback],
function()
{
var value = [fileb['getselection']()];
if (value.length > 0 && value[0] != "" && args['startDir']) {
__setRecentDir(args['startDir'],value[0].substring(0, value[0].lastIndexOf('/') + 1));
}
return value;
},
__TWO_BUTTONS,
args['title'],
callback);
});
}
else if( type == _LEGAL_CONNECTIONS )
/* args: uri1, uri2, ctype, forceCallback */
{
var legalConnections = __legalConnections(args['uri1'],args['uri2'],args['ctype']);
if( legalConnections.length == 0 )
{
var err = 'no valid connection between selected types';
if( args['forceCallback'] )
callback({'$err':err});
else
error(err);
}
else if( legalConnections.length == 1 )
callback( legalConnections[0]+'Link.type' );
else
{
var select = GUIUtils.getSelector(legalConnections);
GUIUtils.setupAndShowDialog(
[select],
function() {return HttpUtils.getSelectorSelection(select)+'Link.type';},
__TWO_BUTTONS,
'choose connection type',
callback);
}
}
else if( type == _LOADED_TOOLBARS )
/* args: multipleChoice, type, title */
{
var choosableToolbars = [];
for( var tb in __loadedToolbars )
{
if( (args['type'] == undefined &&
(__isIconMetamodel(tb) || __isButtonModel(tb))) ||
(args['type'] == 'metamodels' &&
__isIconMetamodel(tb)) ||
(args['type'] == 'buttons' &&
__isButtonModel(tb)) )
choosableToolbars.push(tb);
}
var select = GUIUtils.getSelector(choosableToolbars,args['multipleChoice']);
GUIUtils.setupAndShowDialog(
[select],
function() {return HttpUtils.getSelectorSelection(select);},
__TWO_BUTTONS,
args['title'],
callback);
}
else if( type == _DICTIONARY_EDITOR )
/* args: data, ignoreKey, keepEverything, title */
{
var form = $('