diff --git a/JavaScript Snippets/Script helpers/Add to script locations.js b/JavaScript Snippets/Script helpers/Add to script locations.js
new file mode 100644
index 0000000..4f7224e
--- /dev/null
+++ b/JavaScript Snippets/Script helpers/Add to script locations.js
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Christian Pontesegger and others. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Christian Pontesegger - initial API and implementation
+ * 
+ * name			: Add script location
+ * popup		: enableFor(org.eclipse.core.resources.IContainer)
+ * description	: Adds the selected folder to monitored script locations 
+ ******************************************************************************/
+
+loadModule('/System/UI');
+var selection = getSelection();
+if (selection instanceof org.eclipse.jface.viewers.IStructuredSelection) {
+	// get location, due to context menu binding we know this is an IContainer
+	var container = selection.getFirstElement();
+	var location = "workspace:/" + container.getFullPath();
+	var node = location.replace(/\//g, "|");
+
+	loadModule('/System/Platform');
+	// verify that location is not already registered
+	var storedLocation = readPreferences("org.eclipse.ease.ui/" + node, "location");
+	if (storedLocation == "") {
+		// add location preferences
+		writePreferences("org.eclipse.ease.ui/" + node, "location", location);
+		writePreferences("org.eclipse.ease.ui/" + node, "default", false);
+		writePreferences("org.eclipse.ease.ui/" + node, "recursive", true);
+		
+		// trigger update
+		var repositoryService = getService(org.eclipse.ease.ui.scripts.repository.IRepositoryService);
+		repositoryService.updateLocations();
+		
+	}  else
+		// location already registered
+		showInfoDialog("Location is already registered");
+} 
\ No newline at end of file
