PhoneGap content assist proposals
authorEugene Ostroukhov <eugeneo@symbian.org>
Thu, 06 May 2010 15:09:30 -0700
changeset 323 30d676a95944
parent 322 a2085280e663
child 324 4dfb69657b1d
PhoneGap content assist proposals
org.symbian.tools.wrttools.product/launch/WRT IDE Product (Windows).launch
org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/libraries/jsdt/PhoneGapInferEngine.java
org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/libraries/jsdt/PhoneGapInferrenceProvider.java
--- a/org.symbian.tools.wrttools.product/launch/WRT IDE Product (Windows).launch	Tue Apr 27 16:29:25 2010 +0100
+++ b/org.symbian.tools.wrttools.product/launch/WRT IDE Product (Windows).launch	Thu May 06 15:09:30 2010 -0700
@@ -21,11 +21,10 @@
 <stringAttribute key="product" value="org.symbian.tools.wrttools.product.product"/>
 <stringAttribute key="productFile" value="\org.symbian.tools.wrttools.product\wrt-ide.product"/>
 <booleanAttribute key="restart" value="false"/>
-<stringAttribute key="selectedPlugin" value="org.symbian.tools.wrttools.debug.core"/>
-<stringAttribute key="selected_target_plugins" value="org.eclipse.equinox.http.servlet@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.core.resources.win32.x86@default:false,org.eclipse.ui@default:default,org.apache.commons.collections@default:default,org.eclipse.core.databinding.beans@default:default,org.apache.lucene@default:default,org.eclipse.wst.html.ui.infopop@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.wst.jsdt.doc@default:default,org.eclipse.wst.css.ui@default:default,org.eclipse.wst.sse.core@default:default,org.jdom@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.core.resources@default:default,org.eclipse.equinox.security@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.ui.console@default:default,org.eclipse.equinox.common@2:true,org.eclipse.platform@default:default,org.eclipse.core.net@default:default,org.eclipse.swt@default:default,org.eclipse.gef@default:default,org.eclipse.wst.common.project.facet.core@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.ui.net@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.rcp@default:default,org.eclipse.help.base@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.wst.internet.cache@default:default,org.eclipse.equinox.security.ui@default:default,org.eclipse.ecf.provider.filetransfer.httpclient@default:default,org.eclipse.text@default:default,org.eclipse.help.appserver@default:default,org.eclipse.wst.common.core@default:default,org.eclipse.equinox.concurrent@default:default,org.eclipse.ui.ide@default:default,org.eclipse.update.core@default:default,org.sat4j.pb@default:default,org.apache.xerces@default:default,org.eclipse.equinox.frameworkadmin.equinox@default:default,javax.servlet.jsp@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.help@default:default,org.eclipse.wst.common.modulecore@default:default,java_cup.runtime@default:default,org.eclipse.debug.core@default:default,org.eclipse.team.ui@default:default,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.draw2d@default:default,org.apache.lucene.analysis@default:default,org.eclipse.wst.jsdt.web.core@default:default,org.apache.xml.serializer@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.ui.intro.universal@default:default,org.eclipse.debug.ui@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.osgi.services@default:default,org.eclipse.wst.sse.ui.infopop@default:default,org.mortbay.jetty.util@default:default,org.eclipse.swt.win32.win32.x86@default:false,org.eclipse.emf.ecore@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.emf.ecore.change@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.ui.presentations.r21@default:default,org.eclipse.wst.common.emf@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.jsch.ui@default:default,org.eclipse.wst.common.frameworks.ui@default:default,org.apache.commons.httpclient@default:default,org.eclipse.ecf.identity@default:default,org.apache.commons.codec@default:default,org.eclipse.update.configurator@3:true,org.eclipse.wst.common.ui@default:default,org.eclipse.wst.internet.monitor.core@default:default,org.eclipse.equinox.launcher@default:default,org.eclipse.wst.xml.ui@default:default,org.eclipse.wst.xml.xpath2.processor@default:default,org.apache.xml.resolver@default:default,org.eclipse.wst.xml.ui.infopop@default:default,org.eclipse.wst.internet.monitor.ui@default:default,org.eclipse.core.databinding@default:default,org.eclipse.wst.dtd.core@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.wst.common.environment@default:default,org.eclipse.equinox.p2.metadata.generator@default:default,org.eclipse.emf.common@default:default,org.eclipse.jface.text@default:default,org.eclipse.team.cvs.ui@default:default,org.eclipse.core.commands@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.wst.xml.xpath.core@default:default,org.eclipse.wst.jsdt.support.ie@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.wst.sse.ui@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.wst.css.core@default:default,org.eclipse.wst.common.emfworkbench.integration@default:default,com.ibm.icu@default:default,org.eclipse.equinox.http.jetty@default:default,org.eclipse.wst.jsdt.web.ui@default:default,org.eclipse.ui.forms@default:default,org.eclipse.equinox.jsp.jasper@default:default,org.eclipse.compare.win32@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.update.core.win32@default:false,org.eclipse.ui.workbench.compatibility@default:false,org.apache.commons.lang@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.ui.workbench.texteditor@default:default,org.mortbay.jetty.server@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.emf.edit@default:default,org.eclipse.jsch.core@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.eclipse.wst.html.core@default:default,org.eclipse.core.expressions@default:default,org.eclipse.equinox.p2.metadata@default:default,org.apache.log4j@default:default,org.eclipse.core.variables@default:default,org.eclipse.core.jobs@default:default,org.eclipse.search@default:default,org.apache.velocity@default:default,org.eclipse.compare.core@default:default,org.eclipse.wst.standard.schemas@default:default,org.eclipse.equinox.jsp.jasper.registry@default:default,org.eclipse.team.cvs.ssh2@default:default,org.eclipse.wst.common.uriresolver@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.wst.validation.infopop@default:default,org.eclipse.wst.jsdt.support.firefox@default:default,org.eclipse.ui.win32@default:false,org.eclipse.equinox.app@default:default,org.eclipse.wst.validation.ui@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.wst.jsdt.ui@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.help.ui@default:default,org.mozilla.xulrunner.win32.win32.x86@default:false,org.eclipse.wst.xmleditor.doc.user@default:default,org.eclipse.ui.browser@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.core.runtime@default:true,org.eclipse.wst.jsdt.manipulation@default:default,org.eclipse.wst.xml.core@default:default,javax.servlet@default:default,org.mozilla.xpcom@default:default,org.eclipse.wst.xml.xpath.ui@default:default,org.eclipse.ecf.provider.filetransfer.httpclient.ssl@default:false,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.util@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.ui.views@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.platform.doc.user@default:default,org.eclipse.update.ui@default:default,org.mozilla.xulrunner@default:default,org.eclipse.wst.html.ui@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.help.webapp@default:default,org.eclipse.equinox.launcher.win32.win32.x86@default:false,org.eclipse.jface@default:default,org.eclipse.ui.editors@default:default,org.eclipse.jem.util@default:default,org.eclipse.wst.sse.doc.user@default:default,org.eclipse.wst.doc.user@default:default,org.eclipse.update.scheduler@default:default,org.eclipse.core.runtime.compatibility@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.team.cvs.core@default:default,org.eclipse.cvs@default:default,org.apache.commons.el@default:default,org.eclipse.wst.jsdt.core@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.wst.validation@default:default,org.eclipse.ui.intro@default:default,org.eclipse.compare@default:default,org.eclipse.osgi.util@default:default,org.eclipse.wst.common.frameworks@default:default,org.eclipse.equinox.security.win32.x86@default:false,com.jcraft.jsch@default:default,org.eclipse.team.core@default:default,org.eclipse.core.net.win32.x86@default:false,javax.xml@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.core.boot@default:default,org.eclipse.osgi@-1:true,org.apache.commons.logging@default:default,org.eclipse.ecf@default:default,org.eclipse.wst.common.snippets@default:default,org.eclipse.wst.common.infopop@default:default,org.apache.xalan@default:default,org.eclipse.core.filesystem.win32.x86@default:false,org.apache.bcel@default:default,org.sat4j.core@default:default,org.apache.jasper@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.symbian.tools.wrttools.debug.core@default:default,org.chromium.debug.ui@default:default,org.w3c.css@default:default,org.symbian.tools.wrttools.product@default:default,org.chromium.sdk@default:default,org.symbian.tools.wrttools.previewer@default:default,org.symbian.tools.wrttools.doc.WRTKit@default:default,org.symbian.tools.wrttools.doc.WebDeveloper@default:default,org.chromium.debug.core@default:default,org.symbian.tools.wrttools@default:default"/>
+<stringAttribute key="selected_target_plugins" value="org.mortbay.jetty.util@default:default,org.apache.xml.resolver@default:default,org.eclipse.equinox.p2.metadata@default:default,org.mozilla.xpcom@default:default,org.eclipse.wst.xmleditor.doc.user@default:default,org.apache.commons.lang@default:default,org.eclipse.wst.common.ui@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.update.configurator@3:true,org.eclipse.wst.standard.schemas@default:default,java_cup.runtime@default:default,org.eclipse.swt@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.ui.net@default:default,org.eclipse.core.jobs@default:default,org.eclipse.wst.common.infopop@default:default,org.eclipse.rcp@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.cvs@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.text@default:default,org.eclipse.ui.presentations.r21@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.core.variables@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.update.scheduler@default:default,org.eclipse.emf.edit.ui@default:default,org.apache.lucene.analysis@default:default,org.eclipse.help.base@default:default,org.apache.commons.logging@default:default,org.eclipse.wst.jsdt.doc@default:default,org.eclipse.wst.html.ui@default:default,org.eclipse.core.boot@default:default,org.eclipse.ui.win32@default:false,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.repository@default:default,org.apache.commons.httpclient@default:default,org.eclipse.jface@default:default,org.eclipse.wst.validation.ui@default:default,org.eclipse.equinox.concurrent@default:default,org.eclipse.emf.ecore.change@default:default,org.apache.velocity@default:default,org.eclipse.gef@default:default,org.eclipse.ui.ide@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.compare.win32@default:default,org.eclipse.help@default:default,org.jdom@default:default,org.eclipse.equinox.http.jetty@default:default,org.eclipse.search@default:default,org.sat4j.core@default:default,org.eclipse.wst.xml.xpath2.processor@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.eclipse.wst.css.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.core.resources.win32.x86@default:false,org.eclipse.core.databinding.observable@default:default,org.eclipse.platform.doc.user@default:default,org.eclipse.equinox.util@default:default,org.eclipse.core.commands@default:default,org.eclipse.wst.jsdt.manipulation@default:default,org.eclipse.ui.intro.universal@default:default,javax.xml@default:default,org.eclipse.draw2d@default:default,org.eclipse.compare.core@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.compare@default:default,org.eclipse.wst.sse.ui.infopop@default:default,org.eclipse.ui.editors@default:default,org.eclipse.wst.dtd.core@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.core.runtime.compatibility@default:default,org.apache.xml.serializer@default:default,org.mortbay.jetty.server@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.core.net.win32.x86@default:false,org.eclipse.emf.common@default:default,org.eclipse.equinox.security.win32.x86@default:false,org.apache.commons.collections@default:default,org.eclipse.equinox.common@2:true,org.mozilla.xulrunner@default:default,org.apache.commons.codec@default:default,org.eclipse.team.cvs.ssh2@default:default,org.eclipse.ui@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.wst.common.emfworkbench.integration@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.wst.common.core@default:default,org.eclipse.wst.common.frameworks.ui@default:default,org.eclipse.ecf.provider.filetransfer.httpclient.ssl@default:false,org.eclipse.wst.xml.ui@default:default,org.eclipse.wst.common.snippets@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.update.core@default:default,org.eclipse.ecf.provider.filetransfer.httpclient@default:default,org.eclipse.wst.common.modulecore@default:default,org.eclipse.ui.workbench.compatibility@default:false,org.eclipse.core.filesystem.win32.x86@default:false,org.eclipse.core.contenttype@default:default,org.eclipse.help.appserver@default:default,org.sat4j.pb@default:default,org.eclipse.debug.core@default:default,org.eclipse.equinox.frameworkadmin.equinox@default:default,org.eclipse.debug.ui@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.ui.intro@default:default,org.eclipse.wst.common.frameworks@default:default,javax.servlet.jsp@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.swt.win32.win32.x86@default:false,org.eclipse.wst.common.environment@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.wst.css.core@default:default,org.eclipse.wst.xml.xpath.ui@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.team.cvs.core@default:default,org.eclipse.equinox.security.ui@default:default,org.eclipse.wst.sse.ui@default:default,org.eclipse.equinox.p2.metadata.generator@default:default,org.eclipse.wst.xml.xpath.core@default:default,org.eclipse.core.databinding@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.eclipse.help.webapp@default:default,org.eclipse.wst.common.emf@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.ui.workbench@default:default,org.apache.xerces@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.wst.jsdt.core@default:default,org.eclipse.core.runtime@default:true,org.eclipse.platform@default:default,org.apache.log4j@default:default,org.eclipse.jsch.ui@default:default,org.apache.jasper@default:default,org.eclipse.team.ui@default:default,javax.servlet@default:default,org.eclipse.wst.jsdt.web.core@default:default,com.jcraft.jsch@default:default,org.eclipse.wst.internet.monitor.ui@default:default,org.eclipse.team.core@default:default,org.eclipse.equinox.jsp.jasper.registry@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.net@default:default,org.eclipse.osgi@-1:true,org.eclipse.wst.html.core@default:default,org.eclipse.ui.views@default:default,org.eclipse.equinox.launcher@default:default,org.eclipse.wst.jsdt.ui@default:default,org.eclipse.core.databinding.beans@default:default,org.eclipse.jface.text@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.wst.sse.core@default:default,org.mozilla.xulrunner.win32.win32.x86@default:false,org.eclipse.ui.browser@default:default,org.eclipse.wst.validation@default:default,org.eclipse.wst.common.uriresolver@default:default,org.eclipse.wst.validation.infopop@default:default,org.eclipse.equinox.security@default:default,org.eclipse.wst.common.project.facet.core@default:default,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.wst.doc.user@default:default,org.apache.bcel@default:default,org.apache.commons.el@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.core.resources@default:default,org.eclipse.help.ui@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.core.expressions@default:default,org.eclipse.ecf@default:default,org.eclipse.jsch.core@default:default,org.eclipse.wst.jsdt.support.firefox@default:default,org.eclipse.jem.util@default:default,org.eclipse.wst.xml.ui.infopop@default:default,org.eclipse.equinox.app@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.wst.internet.monitor.core@default:default,org.eclipse.wst.html.ui.infopop@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.wst.jsdt.support.ie@default:default,org.eclipse.wst.jsdt.web.ui@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.wst.internet.cache@default:default,org.eclipse.update.ui@default:default,org.eclipse.ecf.ssl@default:false,com.ibm.icu@default:default,org.eclipse.equinox.launcher.win32.win32.x86@default:false,org.eclipse.ltk.ui.refactoring@default:default,org.apache.lucene@default:default,org.eclipse.equinox.jsp.jasper@default:default,org.eclipse.wst.xml.core@default:default,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.update.core.win32@default:false,org.eclipse.ui.forms@default:default,org.eclipse.ui.console@default:default,org.eclipse.team.cvs.ui@default:default,org.eclipse.core.filesystem@default:default,org.apache.xalan@default:default,org.eclipse.wst.sse.doc.user@default:default,org.eclipse.ui.ide.application@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.symbian.tools.wrttools.doc.WRTKit@default:default,org.w3c.css@default:default,org.chromium.sdk@default:default,org.symbian.tools.wrttools.product@default:default,org.symbian.tools.wrttools@default:default,org.symbian.tools.wrttools.debug.core@default:default,org.symbian.tools.wrttools.doc.WebDeveloper@default:default,org.chromium.debug.core@default:default,org.symbian.tools.wrttools.previewer@default:default,org.chromium.debug.ui@default:default"/>
 <booleanAttribute key="show_selected_only" value="false"/>
-<booleanAttribute key="tracing" value="true"/>
+<booleanAttribute key="tracing" value="false"/>
 <mapAttribute key="tracingOptions">
 <mapEntry key="com.ibm.datatools.core.ui/debug" value="true"/>
 <mapEntry key="com.ibm.datatools.core.ui/editor/log" value="true"/>
--- a/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/libraries/jsdt/PhoneGapInferEngine.java	Tue Apr 27 16:29:25 2010 +0100
+++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/libraries/jsdt/PhoneGapInferEngine.java	Thu May 06 15:09:30 2010 -0700
@@ -21,15 +21,19 @@
 import java.util.Map;
 import java.util.TreeMap;
 
-import org.eclipse.wst.jsdt.core.ast.IIfStatement;
+import org.eclipse.wst.jsdt.core.ast.IASTNode;
+import org.eclipse.wst.jsdt.core.ast.IExpression;
+import org.eclipse.wst.jsdt.core.ast.ISingleNameReference;
 import org.eclipse.wst.jsdt.core.infer.InferEngine;
-import org.eclipse.wst.jsdt.core.infer.InferredAttribute;
 import org.eclipse.wst.jsdt.core.infer.InferredType;
 import org.eclipse.wst.jsdt.internal.compiler.ast.CompilationUnitDeclaration;
 
 public class PhoneGapInferEngine extends InferEngine {
     private static final Map<String, String> TYPE_TO_PROPERTY = new TreeMap<String, String>();
-    private CompilationUnitDeclaration compilationUnit;
+    private static final char[] NAVIGATOR_TYPE = "Navigator".toCharArray();
+    
+    private CompilationUnitDeclaration compUnit;
+    
     static {
         TYPE_TO_PROPERTY.put("Notification", "notification");
         TYPE_TO_PROPERTY.put("Accelerometer", "accelerometer");
@@ -42,37 +46,83 @@
         TYPE_TO_PROPERTY.put("Sms", "sms");
         TYPE_TO_PROPERTY.put("Storage", "storage");
     }
-
-    @SuppressWarnings("restriction")
-    @Override
-    public void setCompilationUnit(CompilationUnitDeclaration compilationUnit) {
-        this.compilationUnit = compilationUnit;
-        super.setCompilationUnit(compilationUnit);
-    }
-
-    @Override
-    public boolean visit(IIfStatement ifStatement) {
-        // TODO Auto-generated method stub
-        return super.visit(ifStatement);
-    }
-
-    @SuppressWarnings("restriction")
+    
     @Override
-    protected InferredType addType(char[] className, boolean isDefinition) {
-        InferredType type = super.addType(className, isDefinition);
-        if (TYPE_TO_PROPERTY.containsKey(String.valueOf(type.getName()))) {
-            InferredType inferredType = compilationUnit.findInferredType("Navigator".toCharArray());
-            System.out.println(inferredType);
-            if (inferredGlobal != null) {
-                InferredAttribute[] attributes = inferredGlobal.attributes;
-                for (InferredAttribute attr : attributes) {
-                    System.out.println(String.valueOf(attr.name));
-                }
-            }
-            final InferredType definedType = findDefinedType("Navigator".toCharArray());
-            System.out.println(definedType);
-        }
-        return type;
+    public void setCompilationUnit(
+    		CompilationUnitDeclaration scriptFileDeclaration) {
+    	this.compUnit = scriptFileDeclaration;
+    	super.setCompilationUnit(scriptFileDeclaration);
     }
+    
+	@Override
+	protected InferredType getInferredType2(IExpression fieldReceiver) {
+		if (fieldReceiver.getASTType() == IASTNode.SINGLE_NAME_REFERENCE) {
+			ISingleNameReference nameReference = (ISingleNameReference) fieldReceiver;
+			if ("navigator".equals(String.valueOf(nameReference.getToken()))) {
+                return addType(NAVIGATOR_TYPE, true);
+			}
+		}
+		return super.getInferredType2(fieldReceiver);
+	}
+	
 
+    //    @Override
+    //    public boolean visit(IAssignment assignment) {
+    //        if (assignment.getLeftHandSide().getASTType() == IASTNode.FIELD_REFERENCE) {
+    //            FieldReference reference = (FieldReference) assignment.getLeftHandSide();
+    //            if (reference.receiver.getASTType() == IASTNode.SINGLE_NAME_REFERENCE) {
+    //                ISingleNameReference nameReference = (ISingleNameReference) reference.receiver;
+    //                if ("navigator".equals(String.valueOf(nameReference.getToken()))) {
+    //                    return addNavigatorField(reference, assignment);
+    //                }
+    //            }
+    //        }
+    //        // TODO Auto-generated method stub
+    //        return super.visit(assignment);
+    //    }
+    //	
+    //	private boolean addNavigatorField(FieldReference fieldReference, IAssignment assignment) {
+    //        pushContext();
+    //        char[] possibleTypeName = NAVIGATOR_TYPE;
+    //        InferredType newType = compUnit.findInferredType(possibleTypeName);
+    //
+    //        //create the new type if not found
+    //        if (newType == null) {
+    //            newType = addType(possibleTypeName);
+    //        }
+    //        newType.isDefinition = true;
+    //
+    //        newType.updatePositions(assignment.sourceStart(), assignment.sourceEnd());
+    //
+    //        //prevent Object literal based anonymous types from being created more than once
+    //        if (passNumber == 1 && assignment.getExpression() instanceof IObjectLiteral) {
+    //            return false;
+    //        }
+    //
+    //        char[] memberName = fieldReference.token;
+    //        int nameStart = (int) (fieldReference.nameSourcePosition >>> 32);
+    //
+    //        InferredType typeOf = getTypeOf(assignment.getExpression());
+    //        IFunctionDeclaration methodDecl = null;
+    //
+    //        if (typeOf == null || typeOf == FunctionType) {
+    //            methodDecl = getDefinedFunction(assignment.getExpression());
+    //        }
+    //
+    //        if (methodDecl != null) {
+    //            InferredMember method = newType.addMethod(memberName, methodDecl, nameStart);
+    //        }
+    //        // http://bugs.eclipse.org/269053 - constructor property not supported in JSDT
+    //        else /*if (!CharOperation.equals(CONSTRUCTOR_ID, memberName))*/
+    //        {
+    //            InferredAttribute attribute = newType.addAttribute(memberName, assignment, nameStart);
+    //            handleAttributeDeclaration(attribute, assignment.getExpression());
+    //            attribute.initializationStart = assignment.getExpression().sourceStart();
+    //            if (attribute.type == null) {
+    //                attribute.type = typeOf;
+    //            }
+    //        }
+    //        return true;
+    //
+    //    }
 }
--- a/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/libraries/jsdt/PhoneGapInferrenceProvider.java	Tue Apr 27 16:29:25 2010 +0100
+++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/libraries/jsdt/PhoneGapInferrenceProvider.java	Thu May 06 15:09:30 2010 -0700
@@ -22,61 +22,73 @@
 import java.util.Collection;
 import java.util.TreeSet;
 
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.wst.jsdt.core.IJavaScriptUnit;
+import org.eclipse.wst.jsdt.core.IType;
+import org.eclipse.wst.jsdt.core.JavaScriptCore;
+import org.eclipse.wst.jsdt.core.JavaScriptModelException;
 import org.eclipse.wst.jsdt.core.infer.IInferenceFile;
 import org.eclipse.wst.jsdt.core.infer.InferEngine;
 import org.eclipse.wst.jsdt.core.infer.InferrenceProvider;
 import org.eclipse.wst.jsdt.core.infer.RefactoringSupport;
 import org.eclipse.wst.jsdt.core.infer.ResolutionConfiguration;
+import org.symbian.tools.wrttools.Activator;
 
 public class PhoneGapInferrenceProvider implements InferrenceProvider {
-    public static final String ID = "org.symbian.tools.wrttools.phonegap";
-    private static final Collection<String> PHONEGAP_TYPES = new TreeSet<String>(Arrays.asList("Acceleration",
-            "AccelerationOptions", "Accelerometer", "Camera", "DeviceError", "Contacts", "Contact", "Geolocation",
-            "PositionOptions", "Coordinates", "Media", "Notification", "Orientation", "Position", "PositionError",
-            "Sms", "Storage"));
+	public static final String ID = "org.symbian.tools.wrttools.phonegap";
+	private static final Collection<String> PHONEGAP_TYPES = new TreeSet<String>(
+			Arrays.asList("Acceleration", "AccelerationOptions",
+					"Accelerometer", "Camera", "DeviceError", "Contacts",
+					"Contact", "Geolocation", "PositionOptions", "Coordinates",
+					"Media", "Notification", "Orientation", "Position",
+					"PositionError", "Sms", "Storage"));
+
+	public int applysTo(IInferenceFile scriptFile) {
+		String path = String.valueOf(scriptFile.getFileName());
 
-    public int applysTo(IInferenceFile scriptFile) {
-        //        String path = String.valueOf(scriptFile.getFileName());
-        //
-        //        IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(path));
-        //        if (file != null && file.isAccessible()) {
-        //            IJavaScriptUnit unit = (IJavaScriptUnit) JavaScriptCore.create(file);
-        //            try {
-        //                IType[] types = unit.getAllTypes();
-        //                int typeCount = 0;
-        //                for (IType type : types) {
-        //                    if (PHONEGAP_TYPES.contains(type.getElementName())) {
-        //                        typeCount += 1;
-        //                    }
-        //                }
-        //                if (typeCount > 1) {
-        //                    return ONLY_THIS;
-        //                }
-        //            } catch (JavaScriptModelException e) {
-        //                Activator.log(e);
-        //            }
-        //        }
-        return NOT_THIS;
-    }
+		IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(
+				new Path(path));
+		if (file != null && file.isAccessible()) {
+			IJavaScriptUnit unit = (IJavaScriptUnit) JavaScriptCore
+					.create(file);
+			try {
+				IType[] types = unit.getAllTypes();
+				int typeCount = 0;
+				for (IType type : types) {
+					if (PHONEGAP_TYPES.contains(type.getElementName())) {
+						typeCount += 1;
+					}
+				}
+				if (typeCount > 1) {
+					return MAYBE_THIS;
+				}
+			} catch (JavaScriptModelException e) {
+				Activator.log(e);
+			}
+		}
+		return NOT_THIS;
+	}
 
-    public String getID() {
-        return ID;
-    }
+	public String getID() {
+		return ID;
+	}
 
-    public InferEngine getInferEngine() {
-        final InferEngine engine = new PhoneGapInferEngine();
-        engine.inferenceProvider = this;
-        return engine;
-    }
+	public InferEngine getInferEngine() {
+		final InferEngine engine = new PhoneGapInferEngine();
+		engine.inferenceProvider = this;
+		return engine;
+	}
 
-    public RefactoringSupport getRefactoringSupport() {
-        // TODO Auto-generated method stub
-        return null;
-    }
+	public RefactoringSupport getRefactoringSupport() {
+		// TODO Auto-generated method stub
+		return null;
+	}
 
-    public ResolutionConfiguration getResolutionConfiguration() {
-        final ResolutionConfiguration configuration = new ResolutionConfiguration();
-        return configuration;
-    }
+	public ResolutionConfiguration getResolutionConfiguration() {
+		final ResolutionConfiguration configuration = new ResolutionConfiguration();
+		return configuration;
+	}
 
 }