3_0 maint branch merge.
diff --git a/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/internal/project/JsWebNature.java b/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/internal/project/JsWebNature.java index 8f59a9d..1478cb6 100644 --- a/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/internal/project/JsWebNature.java +++ b/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/internal/project/JsWebNature.java
@@ -23,9 +23,12 @@ import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.OperationCanceledException; import org.eclipse.core.runtime.Path; +import org.eclipse.wst.jsdt.core.IAccessRule; +import org.eclipse.wst.jsdt.core.IIncludePathAttribute; import org.eclipse.wst.jsdt.core.IIncludePathEntry; import org.eclipse.wst.jsdt.core.JavaScriptCore; import org.eclipse.wst.jsdt.core.LibrarySuperType; + import org.eclipse.wst.jsdt.internal.core.JavaProject; //import org.eclipse.wst.jsdt.ui.PreferenceConstants; /** @@ -44,7 +47,7 @@ public static final IPath VIRTUAL_BROWSER_CLASSPATH = new Path("org.eclipse.wst.jsdt.launching.baseBrowserLibrary"); //$NON-NLS-1$ public static final String VIRTUAL_CONTAINER = "org.eclipse.wst.jsdt.launching.WebProject"; //$NON-NLS-1$ - public static final IIncludePathEntry VIRTUAL_SCOPE_ENTRY = JavaScriptCore.newContainerEntry(new Path(VIRTUAL_CONTAINER)); + public static final IIncludePathEntry VIRTUAL_SCOPE_ENTRY = JavaScriptCore.newContainerEntry(new Path(VIRTUAL_CONTAINER), new IAccessRule[0], new IIncludePathAttribute[] {IIncludePathAttribute.HIDE}, false); private static final String SUPER_TYPE_NAME = "Window"; //$NON-NLS-1$ private static final String SUPER_TYPE_LIBRARY = "org.eclipse.wst.jsdt.launching.baseBrowserLibrary"; //$NON-NLS-1$
diff --git a/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/javascript/JsTranslation.java b/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/javascript/JsTranslation.java index 6b18318..dd82b49 100644 --- a/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/javascript/JsTranslation.java +++ b/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/javascript/JsTranslation.java
@@ -25,25 +25,31 @@ import java.util.List; import java.util.Vector; -import org.eclipse.core.filebuffers.FileBuffers; -import org.eclipse.core.resources.IFile; +import org.eclipse.core.filebuffers.FileBuffers; // import + // org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; // import + // org.eclipse.core.resources.IProject; +// import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Platform; + import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.Position; import org.eclipse.wst.jsdt.core.IBuffer; +import org.eclipse.wst.jsdt.core.IJavaScriptUnit; import org.eclipse.wst.jsdt.core.IJavaScriptElement; import org.eclipse.wst.jsdt.core.IJavaScriptProject; -import org.eclipse.wst.jsdt.core.IJavaScriptUnit; import org.eclipse.wst.jsdt.core.IPackageFragmentRoot; import org.eclipse.wst.jsdt.core.ISourceRange; -import org.eclipse.wst.jsdt.core.JavaScriptModelException; +import org.eclipse.wst.jsdt.core.JavaScriptModelException; // import + // org.eclipse.wst.jsdt.core.LibrarySuperType; import org.eclipse.wst.jsdt.core.WorkingCopyOwner; import org.eclipse.wst.jsdt.internal.core.DocumentContextFragmentRoot; +import org.eclipse.wst.jsdt.internal.core.Member; import org.eclipse.wst.jsdt.internal.core.SourceRefElement; import org.eclipse.wst.jsdt.web.core.internal.Logger; import org.eclipse.wst.jsdt.web.core.internal.project.JsWebNature; @@ -343,7 +349,14 @@ private ISourceRange getJSSourceRangeOf(IJavaScriptElement element) { // returns the offset in html of given element ISourceRange range = null; - if (element instanceof SourceRefElement) { + if (element instanceof Member) { + try { + range = ((Member) element).getNameRange(); + } catch (JavaScriptModelException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + }else if (element instanceof SourceRefElement) { try { range = ((SourceRefElement) element).getSourceRange(); }
diff --git a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/StructuredTextViewerConfigurationJSDT.java b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/StructuredTextViewerConfigurationJSDT.java index c8c6b16..bd13da8 100644 --- a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/StructuredTextViewerConfigurationJSDT.java +++ b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/StructuredTextViewerConfigurationJSDT.java
@@ -10,30 +10,16 @@ *******************************************************************************/ package org.eclipse.wst.jsdt.web.ui; -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.jface.text.IAutoEditStrategy; -import org.eclipse.jface.text.ITextDoubleClickStrategy; -import org.eclipse.jface.text.ITextHover; import org.eclipse.jface.text.contentassist.IContentAssistProcessor; import org.eclipse.jface.text.formatter.IContentFormatter; -import org.eclipse.jface.text.formatter.IFormattingStrategy; import org.eclipse.jface.text.formatter.MultiPassContentFormatter; -import org.eclipse.jface.text.hyperlink.IHyperlinkDetector; import org.eclipse.jface.text.information.IInformationProvider; import org.eclipse.jface.text.source.ISourceViewer; -import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants; import org.eclipse.wst.html.core.text.IHTMLPartitions; import org.eclipse.wst.html.ui.StructuredTextViewerConfigurationHTML; -import org.eclipse.wst.jsdt.web.ui.internal.autoedit.AutoEditStrategyForTabs; import org.eclipse.wst.jsdt.web.ui.internal.contentassist.JSDTContentAssistant; -import org.eclipse.wst.sse.ui.internal.ExtendedConfigurationBuilder; -import org.eclipse.wst.sse.ui.internal.SSEUIPlugin; -import org.eclipse.wst.sse.ui.internal.provisional.style.LineStyleProvider; -import org.eclipse.wst.sse.ui.internal.taginfo.TextHoverManager; -import org.eclipse.wst.sse.ui.internal.util.EditorUtility; +import org.eclipse.wst.jsdt.web.ui.internal.format.FormattingStrategyJSDT; +import org.eclipse.wst.jsdt.web.ui.internal.taginfo.JSDTInformationProvider; /** * @@ -53,26 +39,6 @@ * @since 1.0 */ public class StructuredTextViewerConfigurationJSDT extends StructuredTextViewerConfigurationHTML { - /* - * Extension point identifications for externalalized content providers - * [Bradley Childs - childsb@us.ibm.com] - */ - public static final class externalTypeExtension { - public static final String AUTOEDIT_ID = "autoeditstrategy"; - public static final String CONTENT_ASSIST = "contentassistprocessor"; - public static final String CONTENT_FORMATER = "contentformater"; - public static final String HOVER_ID = "texthover"; - public static final String HYPERLINK_DETECTOR = "hyperlinkdetector"; - public static final String HYPERLINK_DETECTOR_TARGETS = "hyperlinkdetector"; - public static final String INFORMATIONPROVIDER_ID = "informationpresenter"; - } - /* - * One instance per configuration because not sourceviewer-specific and it's - * a String array - */ - private String[] fConfiguredContentTypes; - private ILabelProvider fStatusLineLabelProvider; - /** * Create new instance of StructuredTextViewerConfigurationHTML */ @@ -81,40 +47,13 @@ super(); } - - public IAutoEditStrategy[] getAutoEditStrategies(ISourceViewer sourceViewer, String contentType) { - List allStrategies = new ArrayList(0); - Object externalAutoEditProvider = ExtendedConfigurationBuilder.getInstance().getConfiguration(externalTypeExtension.AUTOEDIT_ID, contentType); - if (externalAutoEditProvider != null) { - allStrategies.add(externalAutoEditProvider); - } else { - IAutoEditStrategy[] superStrategies = super.getAutoEditStrategies(sourceViewer, contentType); - for (int i = 0; i < superStrategies.length; i++) { - allStrategies.add(superStrategies[i]); - } - } - // be sure this is added last in list, so it has a change to modify - // previous results. - // add auto edit strategy that handles when tab key is pressed - allStrategies.add(new AutoEditStrategyForTabs()); - return (IAutoEditStrategy[]) allStrategies.toArray(new IAutoEditStrategy[allStrategies.size()]); - } - - - public String[] getConfiguredContentTypes(ISourceViewer sourceViewer) { - if (fConfiguredContentTypes == null) { - fConfiguredContentTypes = super.getConfiguredContentTypes(sourceViewer); - } - return fConfiguredContentTypes; - } - - /* Content assist procesors are contributed by extension for SSE now */ + /* Content assist processors are contributed by extension for SSE now */ protected IContentAssistProcessor[] getContentAssistProcessors(ISourceViewer sourceViewer, String partitionType) { IContentAssistProcessor[] processors = null; - if (partitionType == IHTMLPartitions.SCRIPT) { + if (IHTMLPartitions.SCRIPT.equals(partitionType) || IHTMLPartitions.SCRIPT_EVENTHANDLER.equals(partitionType)) { processors = new IContentAssistProcessor[]{new JSDTContentAssistant()}; } else{ @@ -126,130 +65,25 @@ public IContentFormatter getContentFormatter(ISourceViewer sourceViewer) { final IContentFormatter formatter = super.getContentFormatter(sourceViewer); + if(formatter instanceof MultiPassContentFormatter) { /* * Check for any externally supported auto edit strategies from EP. * [Bradley Childs - childsb@us.ibm.com] */ String[] contentTypes = getConfiguredContentTypes(sourceViewer); for (int i = 0; i < contentTypes.length; i++) { - IFormattingStrategy cf = (IFormattingStrategy) ExtendedConfigurationBuilder.getInstance().getConfiguration(externalTypeExtension.CONTENT_FORMATER, contentTypes[i]); - if (cf != null && formatter instanceof MultiPassContentFormatter) { - ((MultiPassContentFormatter) formatter).setSlaveStrategy(cf, contentTypes[i]); + if (IHTMLPartitions.SCRIPT.equals(contentTypes[i]) || IHTMLPartitions.SCRIPT_EVENTHANDLER.equals(contentTypes[i])) { + ((MultiPassContentFormatter) formatter).setSlaveStrategy(new FormattingStrategyJSDT(), contentTypes[i]); + } } } return formatter; } - - public ITextDoubleClickStrategy getDoubleClickStrategy(ISourceViewer sourceViewer, String contentType) { - return super.getDoubleClickStrategy(sourceViewer, contentType); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.ui.editors.text.TextSourceViewerConfiguration#getHyperlinkDetectors(org.eclipse.jface.text.source.ISourceViewer) - */ - - public IHyperlinkDetector[] getHyperlinkDetectors(ISourceViewer sourceViewer) { - if (sourceViewer == null || !fPreferenceStore.getBoolean(AbstractDecoratedTextEditorPreferenceConstants.EDITOR_HYPERLINKS_ENABLED)) { - return null; - } - List allDetectors = new ArrayList(0); - IHyperlinkDetector[] superDetectors = super.getHyperlinkDetectors(sourceViewer); - for (int m = 0; m < superDetectors.length; m++) { - IHyperlinkDetector detector = superDetectors[m]; - if (!allDetectors.contains(detector)) { - allDetectors.add(detector); - } - } - /* Check for external HyperLink Detectors */ - String[] contentTypes = getConfiguredContentTypes(sourceViewer); - for (int i = 0; i < contentTypes.length; i++) { - IHyperlinkDetector hl = (IHyperlinkDetector) ExtendedConfigurationBuilder.getInstance().getConfiguration(externalTypeExtension.HYPERLINK_DETECTOR, contentTypes[i]); - if (hl != null) { - allDetectors.add(hl); - } - } - return (IHyperlinkDetector[]) allDetectors.toArray(new IHyperlinkDetector[0]); - } - - - public String[] getIndentPrefixes(ISourceViewer sourceViewer, String contentType) { - return super.getIndentPrefixes(sourceViewer, contentType); - } - - protected IInformationProvider getInformationProvider(ISourceViewer sourceViewer, String partitionType) { - IInformationProvider provider = null; - /* - * IInformationProvider now provided by extension point [Bradley Childs - - * childsb@us.ibm.com] - */ - Object externalInfoProvider = ExtendedConfigurationBuilder.getInstance().getConfiguration(externalTypeExtension.INFORMATIONPROVIDER_ID, partitionType); - if (externalInfoProvider != null) { - provider = (IInformationProvider) externalInfoProvider; - } else { - provider = super.getInformationProvider(sourceViewer, partitionType); + if (IHTMLPartitions.SCRIPT.equals(partitionType) || IHTMLPartitions.SCRIPT_EVENTHANDLER.equals(partitionType)) { + return new JSDTInformationProvider(); } - return provider; - } - - - public LineStyleProvider[] getLineStyleProviders(ISourceViewer sourceViewer, String partitionType) { - LineStyleProvider[] providers = super.getLineStyleProviders(sourceViewer, partitionType); - return providers; - } - - - public ILabelProvider getStatusLineLabelProvider(ISourceViewer sourceViewer) { - if (fStatusLineLabelProvider == null) { - fStatusLineLabelProvider = super.getStatusLineLabelProvider(sourceViewer); - } - return fStatusLineLabelProvider; - } - - - public ITextHover getTextHover(ISourceViewer sourceViewer, String contentType, int stateMask) { - ITextHover textHover = null; - // look for appropriate text hover processor to return based on - // content type and state mask - TextHoverManager manager = SSEUIPlugin.getDefault().getTextHoverManager(); - TextHoverManager.TextHoverDescriptor[] hoverDescs = manager.getTextHovers(); - int i = 0; - while (i < hoverDescs.length && textHover == null) { - if (hoverDescs[i].isEnabled() && EditorUtility.computeStateMask(hoverDescs[i].getModifierString()) == stateMask) { - String hoverType = hoverDescs[i].getId(); - if (TextHoverManager.COMBINATION_HOVER.equalsIgnoreCase(hoverType)) { - /* - * Check extension for TextHover providers [Bradley Childs - - * childsb@us.ibm.com] - */ - Object externalHover = ExtendedConfigurationBuilder.getInstance().getConfiguration(externalTypeExtension.HOVER_ID, contentType); - if (externalHover != null) { - textHover = manager.createBestMatchHover((ITextHover) externalHover); - } else { - textHover = super.getTextHover(sourceViewer, contentType, stateMask); - } - } else if (TextHoverManager.DOCUMENTATION_HOVER.equalsIgnoreCase(hoverType)) { - /* - * Check extension for TextHover providers [Bradley Childs - - * childsb@us.ibm.com] - */ - Object externalHover = ExtendedConfigurationBuilder.getInstance().getConfiguration(externalTypeExtension.HOVER_ID, contentType); - if (externalHover != null) { - textHover = manager.createBestMatchHover((ITextHover) externalHover); - } else { - textHover = super.getTextHover(sourceViewer, contentType, stateMask); - } - } - } - i++; - } - // no appropriate text hovers found, try super - if (textHover == null) { - textHover = super.getTextHover(sourceViewer, contentType, stateMask); - } - return textHover; + return super.getInformationProvider(sourceViewer, partitionType); } }
diff --git a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/hyperlink/JSDTHyperlinkDetector.java b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/hyperlink/JSDTHyperlinkDetector.java index fb81ad2..e323ea9 100644 --- a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/hyperlink/JSDTHyperlinkDetector.java +++ b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/internal/hyperlink/JSDTHyperlinkDetector.java
@@ -14,9 +14,9 @@ import java.util.List; import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Path; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.IRegion; @@ -25,11 +25,11 @@ import org.eclipse.jface.text.hyperlink.AbstractHyperlinkDetector; import org.eclipse.jface.text.hyperlink.IHyperlink; import org.eclipse.wst.jsdt.core.IClassFile; -import org.eclipse.wst.jsdt.core.IJavaScriptUnit; import org.eclipse.wst.jsdt.core.IField; -import org.eclipse.wst.jsdt.core.IJavaScriptElement; -import org.eclipse.wst.jsdt.core.ILocalVariable; import org.eclipse.wst.jsdt.core.IFunction; +import org.eclipse.wst.jsdt.core.IJavaScriptElement; +import org.eclipse.wst.jsdt.core.IJavaScriptUnit; +import org.eclipse.wst.jsdt.core.ILocalVariable; import org.eclipse.wst.jsdt.core.ISourceRange; import org.eclipse.wst.jsdt.core.ISourceReference; import org.eclipse.wst.jsdt.core.JavaScriptModelException; @@ -39,7 +39,6 @@ import org.eclipse.wst.jsdt.web.ui.internal.Logger; import org.eclipse.wst.sse.core.StructuredModelManager; import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; -//import org.eclipse.wst.sse.core.internal.util.URIResolver; import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument; import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; @@ -196,11 +195,9 @@ private IFile getFile(String fileString) { IFile file = null; if (fileString != null) { - IFile[] files = ResourcesPlugin.getWorkspace().getRoot().findFilesForLocation(new Path(fileString)); - for (int i = 0; i < files.length && file == null; i++) { - if (files[i].exists()) { - file = files[i]; - } + IResource resource = ResourcesPlugin.getWorkspace().getRoot().findMember(fileString); + if(resource!=null && resource instanceof IFile) { + file = (IFile)resource; } } return file;
diff --git a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/views/contentoutline/JFaceNodeAdapterForJs.java b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/views/contentoutline/JFaceNodeAdapterForJs.java index d5cf5e9..8112da7 100644 --- a/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/views/contentoutline/JFaceNodeAdapterForJs.java +++ b/bundles/org.eclipse.wst.jsdt.web.ui/src/org/eclipse/wst/jsdt/web/ui/views/contentoutline/JFaceNodeAdapterForJs.java
@@ -324,7 +324,9 @@ private IJavaScriptUnit getLazyCu(Node node) { if(lazyCu==null) { - lazyCu = getTranslation(node).getCompilationUnit(); + IJsTranslation tran = getTranslation(node); + if(tran== null) return null; + lazyCu = tran.getCompilationUnit(); try { lazyCu.makeConsistent( new NullProgressMonitor() ); } catch (JavaScriptModelException e) { @@ -346,6 +348,7 @@ // model = modelManager.getModelForRead(doc); } IDOMModel domModel = (IDOMModel) model; + if(domModel == null) return null; xmlDoc = domModel.getDocument(); } catch (Exception e) { Logger.logException(e);