/**
 * Menu: Actionscript > As Singleton
 * Key: M3+6
 * Kudos: Stan Reshetnic
 * DOM: http://download.eclipse.org/technology/dash/update/org.eclipse.eclipsemonkey.lang.javascript
 */

function main()
{

	var editor = editors.activeEditor;
	var source = editor.source;
	var dot = editor.title.lastIndexOf(".");
	if (dot == -1 || editor.title.substr(dot+1) != "as") {
		debug("Please use template on as file. Not "+editor.title.substr(dot+1));
		return;
	}
	var className = editor.title.substr(0, dot);
	var result = "" +
			"\n\t\tprivate static var instance:"+className+" = null;" +
			"\n" +
			"\n\t\tpublic static function getInstance():"+className+" {" +
			"\n\t\t\tif(instance == null){" +
			"\n\t\t\t\tinstance = new "+className+"();" +
			"\n\t\t\t}" +
			"\n\t\t\treturn instance;" +
			"\n\t\t}" +
			"\n" +
			"\n\t\tpublic function "+className+"() {" +
			"\n\t\t\tif (instance) {" +
			"\n\t\t\t\tthrow new Error(\""+className+" already instantiated.\");" +
			"\n\t\t\t}" +
			"\n\t\t}";
	//debug(result);
	var insertPos = editor.source.indexOf("{", editor.source.indexOf("{")+1)+1;
	editor.applyEdit(insertPos, 0, result);
}

function debug(s) {
	Packages.org.eclipse.jface.dialogs.MessageDialog.openInformation(window.getShell(), "Monkey Debugging", s);
}
