docs: function(data) {
  			var item = data.items;
  			var gitService = serviceRegistry.getService("orion.git.provider"); //$NON-NLS-0$
  			var progress = serviceRegistry.getService("orion.page.progress"); //$NON-NLS-0$
  			var addFunction = function(gitUrl, path, name) {
  				item.GitUrl = gitUrl;
  				exports.getDefaultSshOptions(serviceRegistry, item).then(function func(options) {
  					var msg = i18nUtil.formatMessage(messages["AddSubmodule"], name, data.items.Name);
  					var deferred = progress.progress(gitService.addSubmodule(name, data.items.SubmoduleLocation, path, gitUrl, explorer.defaultPath,options.gitSshUsername, options.gitSshPassword, options.knownHosts, options.gitPrivateKey,
  								options.gitPassphrase), msg);
  					serviceRegistry.getService("orion.page.message").createProgressMonitor(deferred, //$NON-NLS-0$
  						   messages["Adding submodule: "]  + gitUrl);
  					deferred.then(function(jsonData) {
  						exports.handleProgressServiceResponse(jsonData, options, serviceRegistry, function() {
  							dispatchModelEventOn({type: "modelChanged", action: "addSubmodule", name: name, gitUrl: gitUrl}); //$NON-NLS-1$ //$NON-NL-0$
  						}, func, messages['Add git submodule']);
  					}, function(jsonData) {
  						exports.handleProgressServiceResponse(jsonData, options, serviceRegistry, function() {}, func, messages['Add git submodule']);
  					});
  				});
  			};
  			if (data.parameters.valueFor("url") && !data.parameters.optionsRequested) { //$NON-NLS-0$
  				addFunction(data.parameters.valueFor("url")); //$NON-NLS-0$
  			} else {
  				var dialog = new mCloneGitRepository.CloneGitRepositoryDialog({
  					serviceRegistry: serviceRegistry,
  					url: data.parameters.valueFor("url"), //$NON-NLS-0$
  					alwaysShowAdvanced: data.parameters.optionsRequested,
  					fileClient: fileClient,
  					root:item.ContentLocation,
  					func: addFunction
  				});
  						
  				dialog.show();
  				if (data.domNode) {
  					dialog.setOriginalFocus(data.domNode);
  				}
  			}
  		}