js formatter preference/property page
diff --git a/plugins/org.eclipse.dltk.javascript.ui/plugin.properties b/plugins/org.eclipse.dltk.javascript.ui/plugin.properties
index dd6cb83..77805a2 100644
--- a/plugins/org.eclipse.dltk.javascript.ui/plugin.properties
+++ b/plugins/org.eclipse.dltk.javascript.ui/plugin.properties
@@ -91,4 +91,5 @@
 JavaScriptBuildPathPropertyPage.name = Build Path
 JavaScriptPropertyPage.name = JavaScript
 
-
+JavaScriptFormatterPreferencePage.name=Formatter
+Formatter.PropertyPage=Formatter
diff --git a/plugins/org.eclipse.dltk.javascript.ui/plugin.xml b/plugins/org.eclipse.dltk.javascript.ui/plugin.xml
index 0509191..e122085 100644
--- a/plugins/org.eclipse.dltk.javascript.ui/plugin.xml
+++ b/plugins/org.eclipse.dltk.javascript.ui/plugin.xml
@@ -496,4 +496,25 @@
    </engineContribution>
 </extension>
 
+<extension point="org.eclipse.ui.preferencePages"> 	          
+	<page
+		category="org.eclipse.dltk.javascript.ui.javascript"
+		class="org.eclipse.dltk.javascript.internal.ui.preferences.JavaScriptFormatterPreferencePage"
+		id="org.eclipse.dltk.javascript.preferencePage.formatter"
+		name="%JavaScriptFormatterPreferencePage.name"/>
+</extension>
+<extension point="org.eclipse.ui.propertyPages">
+	<page
+		class="org.eclipse.dltk.javascript.internal.ui.preferences.JavaScriptFormatterPreferencePage"
+		category="org.eclipse.dltk.javascript.propertyPage"
+		id="org.eclipse.dltk.javascript.propertyPage.formatter"
+		name="%Formatter.PropertyPage">
+		<enabledWhen>
+			<adapt type="org.eclipse.core.resources.IProject">
+				<test property="org.eclipse.core.resources.projectNature" value="org.eclipse.dltk.javascript.core.nature"/>
+			</adapt>
+		</enabledWhen>
+	</page>
+</extension>
+
 </plugin>
diff --git a/plugins/org.eclipse.dltk.javascript.ui/src/org/eclipse/dltk/javascript/internal/ui/preferences/JavaScriptFormatterPreferencePage.java b/plugins/org.eclipse.dltk.javascript.ui/src/org/eclipse/dltk/javascript/internal/ui/preferences/JavaScriptFormatterPreferencePage.java
new file mode 100644
index 0000000..187dddf
--- /dev/null
+++ b/plugins/org.eclipse.dltk.javascript.ui/src/org/eclipse/dltk/javascript/internal/ui/preferences/JavaScriptFormatterPreferencePage.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2009 xored software, Inc.  
+ *
+ * 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:
+ *     xored software, Inc. - initial API and Implementation (Vladimir Belov)
+ *******************************************************************************/
+
+package org.eclipse.dltk.javascript.internal.ui.preferences;
+
+import org.eclipse.dltk.javascript.core.JavaScriptNature;
+import org.eclipse.dltk.javascript.internal.ui.JavaScriptUI;
+import org.eclipse.dltk.javascript.internal.ui.text.SimpleJavascriptSourceViewerConfiguration;
+import org.eclipse.dltk.javascript.ui.JavascriptPreferenceConstants;
+import org.eclipse.dltk.javascript.ui.text.IJavaScriptPartitions;
+import org.eclipse.dltk.ui.formatter.AbstractFormatterPreferencePage;
+import org.eclipse.dltk.ui.preferences.PreferenceKey;
+import org.eclipse.dltk.ui.text.IColorManager;
+import org.eclipse.dltk.ui.text.ScriptSourceViewerConfiguration;
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.ui.texteditor.ITextEditor;
+
+public class JavaScriptFormatterPreferencePage extends
+		AbstractFormatterPreferencePage {
+
+	private static final PreferenceKey FORMATTER = new PreferenceKey(
+			JavaScriptUI.PLUGIN_ID, JavascriptPreferenceConstants.FORMATTER_ID);
+
+	protected String getNatureId() {
+		return JavaScriptNature.NATURE_ID;
+	}
+
+	protected PreferenceKey getFormatterPreferenceKey() {
+		return FORMATTER;
+	}
+
+	protected IDialogSettings getDialogSettings() {
+		return JavaScriptUI.getDefault().getDialogSettings();
+	}
+
+	protected String getPreferencePageId() {
+		return "org.eclipse.dltk.javascript.preferencePage.formatter"; //$NON-NLS-1$
+	}
+
+	protected String getPropertyPageId() {
+		return "org.eclipse.dltk.javascript.propertyPage.formatter"; //$NON-NLS-1$
+	}
+
+	protected ScriptSourceViewerConfiguration createSimpleSourceViewerConfiguration(
+			IColorManager colorManager, IPreferenceStore preferenceStore,
+			ITextEditor editor, boolean configureFormatter) {
+		return new SimpleJavascriptSourceViewerConfiguration(colorManager,
+				preferenceStore, editor, IJavaScriptPartitions.JS_PARTITIONING,
+				configureFormatter);
+	}
+
+	protected void setPreferenceStore() {
+		setPreferenceStore(JavaScriptUI.getDefault().getPreferenceStore());
+	}
+
+}
diff --git a/plugins/org.eclipse.dltk.javascript.ui/src/org/eclipse/dltk/javascript/ui/JavascriptPreferenceConstants.java b/plugins/org.eclipse.dltk.javascript.ui/src/org/eclipse/dltk/javascript/ui/JavascriptPreferenceConstants.java
index c7d7c28..9e6a829 100644
--- a/plugins/org.eclipse.dltk.javascript.ui/src/org/eclipse/dltk/javascript/ui/JavascriptPreferenceConstants.java
+++ b/plugins/org.eclipse.dltk.javascript.ui/src/org/eclipse/dltk/javascript/ui/JavascriptPreferenceConstants.java
@@ -421,6 +421,11 @@
 	public final static String COMMENT_TASK_TAGS_BOLD = COMMENT_TASK_TAGS
 			+ EDITOR_BOLD_SUFFIX;
 
+	/**
+	 * A preference that controls the selected formatter.
+	 */
+	public static final String FORMATTER_ID = "formatterId"; //$NON-NLS-1$
+
 	public static void initializeDefaultValues(IPreferenceStore store) {
 		PreferenceConstants.initializeDefaultValues(store);