diff -r 91acf7e95f86 -r f943a50b6689 work-in-progress-patches/phonegap.txt --- a/work-in-progress-patches/phonegap.txt Mon Jun 28 10:47:32 2010 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,196 +0,0 @@ -diff -r eef7c6acd0f3 org.symbian.tools.wrttools/plugin.xml ---- a/org.symbian.tools.wrttools/plugin.xml Mon Apr 19 18:04:34 2010 -0700 -+++ b/org.symbian.tools.wrttools/plugin.xml Tue Apr 20 15:14:30 2010 -0700 -@@ -875,5 +875,13 @@ - installer="org.symbian.tools.wrttools.core.libraries.PhoneGapInstaller" - name="PhoneGap"> - -+ -+ -+ -+ - - -diff -r eef7c6acd0f3 org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/libraries/PlatformServicesTypeProvider.java ---- a/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/libraries/PlatformServicesTypeProvider.java Mon Apr 19 18:04:34 2010 -0700 -+++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/libraries/PlatformServicesTypeProvider.java Tue Apr 20 15:14:30 2010 -0700 -@@ -41,7 +41,7 @@ - if (file.exists()) { - IProject project = file.getProject(); - if (ProjectUtils.hasWrtNature(project)) { -- return InferrenceProvider.ONLY_THIS; -+ return InferrenceProvider.MAYBE_THIS; - } - } - } -diff -r eef7c6acd0f3 org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/libraries/jsdt/PhoneGapInferEngine.java ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/libraries/jsdt/PhoneGapInferEngine.java Tue Apr 20 15:14:30 2010 -0700 -@@ -0,0 +1,70 @@ -+/** -+ * Copyright (c) 2010 Symbian Foundation and/or its subsidiary(-ies). -+ * All rights reserved. -+ * This component and the accompanying materials are made available -+ * under the terms of the License "Eclipse Public License v1.0" -+ * which accompanies this distribution, and is available -+ * at the URL "http://www.eclipse.org/legal/epl-v10.html". -+ * -+ * Initial Contributors: -+ * Symbian Foundation - initial contribution. -+ * Contributors: -+ * Description: -+ * Overview: -+ * Details: -+ * Platforms/Drives/Compatibility: -+ * Assumptions/Requirement/Pre-requisites: -+ * Failures and causes: -+ */ -+package org.symbian.tools.wrttools.core.libraries.jsdt; -+ -+import java.util.Map; -+import java.util.TreeMap; -+ -+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 TYPE_TO_PROPERTY = new TreeMap(); -+ private CompilationUnitDeclaration compilationUnit; -+ static { -+ TYPE_TO_PROPERTY.put("Notification", "notification"); -+ TYPE_TO_PROPERTY.put("Accelerometer", "accelerometer"); -+ TYPE_TO_PROPERTY.put("Camera", "camera"); -+ TYPE_TO_PROPERTY.put("Contacts", "contacts"); -+ TYPE_TO_PROPERTY.put("Geolocation", "geolocation"); -+ TYPE_TO_PROPERTY.put("Media", "media"); -+ TYPE_TO_PROPERTY.put("Notification", "notification"); -+ TYPE_TO_PROPERTY.put("Orientation", "orientation"); -+ 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); -+ } -+ -+ @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; -+ } -+} -diff -r eef7c6acd0f3 org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/libraries/jsdt/PhoneGapInferrenceProvider.java ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/libraries/jsdt/PhoneGapInferrenceProvider.java Tue Apr 20 15:14:30 2010 -0700 -@@ -0,0 +1,89 @@ -+/** -+ * Copyright (c) 2010 Symbian Foundation and/or its subsidiary(-ies). -+ * All rights reserved. -+ * This component and the accompanying materials are made available -+ * under the terms of the License "Eclipse Public License v1.0" -+ * which accompanies this distribution, and is available -+ * at the URL "http://www.eclipse.org/legal/epl-v10.html". -+ * -+ * Initial Contributors: -+ * Symbian Foundation - initial contribution. -+ * Contributors: -+ * Description: -+ * Overview: -+ * Details: -+ * Platforms/Drives/Compatibility: -+ * Assumptions/Requirement/Pre-requisites: -+ * Failures and causes: -+ */ -+package org.symbian.tools.wrttools.core.libraries.jsdt; -+ -+import java.util.Arrays; -+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 PHONEGAP_TYPES = new TreeSet(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()); -+ -+ 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; -+ } -+ -+ public String getID() { -+ return ID; -+ } -+ -+ public InferEngine getInferEngine() { -+ final InferEngine engine = new PhoneGapInferEngine(); -+ engine.inferenceProvider = this; -+ return engine; -+ } -+ -+ public RefactoringSupport getRefactoringSupport() { -+ // TODO Auto-generated method stub -+ return null; -+ } -+ -+ public ResolutionConfiguration getResolutionConfiguration() { -+ return new ResolutionConfiguration(); -+ } -+ -+}