diff options
Diffstat (limited to 'bundles/org.eclipse.jst.jsp.ui/src/org/eclipse')
117 files changed, 0 insertions, 15354 deletions
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/StructuredTextViewerConfigurationJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/StructuredTextViewerConfigurationJSP.java deleted file mode 100644 index 0943cf62c6..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/StructuredTextViewerConfigurationJSP.java +++ /dev/null @@ -1,432 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2005 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.jdt.ui.PreferenceConstants; -import org.eclipse.jdt.ui.text.IJavaPartitions; -import org.eclipse.jdt.ui.text.JavaSourceViewerConfiguration; -import org.eclipse.jdt.ui.text.JavaTextTools; -import org.eclipse.jface.preference.IPreferenceStore; -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.contentassist.IContentAssistant; -import org.eclipse.jface.text.formatter.IContentFormatter; -import org.eclipse.jface.text.formatter.MultiPassContentFormatter; -import org.eclipse.jface.text.hyperlink.IHyperlinkDetector; -import org.eclipse.jface.text.information.IInformationPresenter; -import org.eclipse.jface.text.information.IInformationProvider; -import org.eclipse.jface.text.source.ISourceViewer; -import org.eclipse.jst.jsp.core.internal.provisional.text.IJSPPartitionTypes; -import org.eclipse.jst.jsp.core.internal.text.StructuredTextPartitionerForJSP; -import org.eclipse.jst.jsp.ui.internal.autoedit.AutoEditStrategyForTabs; -import org.eclipse.jst.jsp.ui.internal.autoedit.StructuredAutoEditStrategyJSP; -import org.eclipse.jst.jsp.ui.internal.contentassist.JSPContentAssistProcessor; -import org.eclipse.jst.jsp.ui.internal.contentassist.JSPELContentAssistProcessor; -import org.eclipse.jst.jsp.ui.internal.contentassist.JSPJavaContentAssistProcessor; -import org.eclipse.jst.jsp.ui.internal.contentassist.NoRegionContentAssistProcessorForJSP; -import org.eclipse.jst.jsp.ui.internal.format.FormattingStrategyJSPJava; -import org.eclipse.jst.jsp.ui.internal.hyperlink.JSPJavaHyperlinkDetector; -import org.eclipse.jst.jsp.ui.internal.hyperlink.TaglibHyperlinkDetector; -import org.eclipse.jst.jsp.ui.internal.hyperlink.XMLHyperlinkDetector; -import org.eclipse.jst.jsp.ui.internal.style.LineStyleProviderForJSP; -import org.eclipse.jst.jsp.ui.internal.style.java.LineStyleProviderForJava; -import org.eclipse.jst.jsp.ui.internal.style.jspel.LineStyleProviderForJSPEL; -import org.eclipse.jst.jsp.ui.internal.taginfo.JSPJavaJavadocHoverProcessor; -import org.eclipse.jst.jsp.ui.internal.taginfo.JSPTagInfoHoverProcessor; -import org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants; -import org.eclipse.wst.css.core.internal.provisional.text.ICSSPartitionTypes; -import org.eclipse.wst.html.core.internal.format.HTMLFormatProcessorImpl; -import org.eclipse.wst.html.core.internal.provisional.text.IHTMLPartitionTypes; -import org.eclipse.wst.html.ui.StructuredTextViewerConfigurationHTML; -import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredPartitionTypes; -import org.eclipse.wst.sse.ui.StructuredTextViewerConfiguration; -import org.eclipse.wst.sse.ui.internal.SSEUIPlugin; -import org.eclipse.wst.sse.ui.internal.format.StructuredFormattingStrategy; -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.xml.core.internal.provisional.text.IXMLPartitions; -import org.eclipse.wst.xml.ui.StructuredTextViewerConfigurationXML; - -/** - * Configuration for a source viewer which shows JSP content. - * <p> - * Clients can subclass and override just those methods which must be specific - * to their needs. - * </p> - * - * @see org.eclipse.wst.sse.ui.StructuredTextViewerConfiguration - * @since 1.0 - */ -public class StructuredTextViewerConfigurationJSP extends StructuredTextViewerConfiguration { - /* - * One instance per configuration because not sourceviewer-specific and - * it's a String array - */ - private String[] fConfiguredContentTypes; - /* - * One instance per configuration - */ - private LineStyleProvider fLineStyleProviderForJava; - /* - * One instance per configuration - */ - private LineStyleProvider fLineStyleProviderForJSP; - /* - * One instance per configuration - */ - private LineStyleProvider fLineStyleProviderForJSPEL; - private StructuredTextViewerConfiguration fHTMLSourceViewerConfiguration; - private JavaSourceViewerConfiguration fJavaSourceViewerConfiguration; - private StructuredTextViewerConfiguration fXMLSourceViewerConfiguration; - - /** - * Create new instance of StructuredTextViewerConfigurationJSP - */ - public StructuredTextViewerConfigurationJSP() { - // Must have empty constructor to createExecutableExtension - super(); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.text.source.SourceViewerConfiguration#getAutoEditStrategies(org.eclipse.jface.text.source.ISourceViewer, - * java.lang.String) - */ - public IAutoEditStrategy[] getAutoEditStrategies(ISourceViewer sourceViewer, String contentType) { - IAutoEditStrategy[] strategies = null; - - if (contentType == IXMLPartitions.XML_DEFAULT) { - // xml autoedit strategies - strategies = getXMLSourceViewerConfiguration().getAutoEditStrategies(sourceViewer, contentType); - } - else if (contentType == IJSPPartitionTypes.JSP_CONTENT_JAVA) { - // jsp java autoedit strategies - List allStrategies = new ArrayList(0); - - IAutoEditStrategy[] javaStrategies = getJavaSourceViewerConfiguration().getAutoEditStrategies(sourceViewer, IJavaPartitions.JAVA_PARTITIONING); - for (int i = 0; i < javaStrategies.length; i++) { - allStrategies.add(javaStrategies[i]); - } - // be sure this is added last, after others, so it can modify - // results from earlier steps. - // add auto edit strategy that handles when tab key is pressed - allStrategies.add(new AutoEditStrategyForTabs()); - - strategies = (IAutoEditStrategy[]) allStrategies.toArray(new IAutoEditStrategy[allStrategies.size()]); - } - else if (contentType == IHTMLPartitionTypes.HTML_DEFAULT || contentType == IHTMLPartitionTypes.HTML_DECLARATION) { - // html and jsp autoedit strategies - List allStrategies = new ArrayList(0); - - // add the jsp autoedit strategy first then add all html's - allStrategies.add(new StructuredAutoEditStrategyJSP()); - - IAutoEditStrategy[] htmlStrategies = getHTMLSourceViewerConfiguration().getAutoEditStrategies(sourceViewer, contentType); - for (int i = 0; i < htmlStrategies.length; i++) { - allStrategies.add(htmlStrategies[i]); - } - - strategies = (IAutoEditStrategy[]) allStrategies.toArray(new IAutoEditStrategy[allStrategies.size()]); - } - else { - // default autoedit strategies - List allStrategies = new ArrayList(0); - - IAutoEditStrategy[] superStrategies = super.getAutoEditStrategies(sourceViewer, contentType); - for (int i = 0; i < superStrategies.length; i++) { - allStrategies.add(superStrategies[i]); - } - - // be sure this is added last, after others, so it can modify - // results from earlier steps. - // add auto edit strategy that handles when tab key is pressed - allStrategies.add(new AutoEditStrategyForTabs()); - - strategies = (IAutoEditStrategy[]) allStrategies.toArray(new IAutoEditStrategy[allStrategies.size()]); - } - - return strategies; - } - - public String[] getConfiguredContentTypes(ISourceViewer sourceViewer) { - if (fConfiguredContentTypes == null) { - /* - * A little bit of cheating because assuming html's configured - * content types will add default, unknown, and all xml configured - * content types - */ - String[] htmlTypes = getHTMLSourceViewerConfiguration().getConfiguredContentTypes(sourceViewer); - String[] jspTypes = StructuredTextPartitionerForJSP.getConfiguredContentTypes(); - fConfiguredContentTypes = new String[htmlTypes.length + jspTypes.length]; - - int index = 0; - System.arraycopy(htmlTypes, 0, fConfiguredContentTypes, index, htmlTypes.length); - System.arraycopy(jspTypes, 0, fConfiguredContentTypes, index += htmlTypes.length, jspTypes.length); - } - - return fConfiguredContentTypes; - } - - protected IContentAssistProcessor[] getContentAssistProcessors(ISourceViewer sourceViewer, String partitionType) { - IContentAssistProcessor[] processors = null; - - if (partitionType == IHTMLPartitionTypes.SCRIPT) { - // HTML JavaScript - IContentAssistant htmlContentAssistant = getHTMLSourceViewerConfiguration().getContentAssistant(sourceViewer); - IContentAssistProcessor processor = htmlContentAssistant.getContentAssistProcessor(IHTMLPartitionTypes.SCRIPT); - processors = new IContentAssistProcessor[]{processor}; - } - else if (partitionType == ICSSPartitionTypes.STYLE) { - // HTML CSS - IContentAssistant htmlContentAssistant = getHTMLSourceViewerConfiguration().getContentAssistant(sourceViewer); - IContentAssistProcessor processor = htmlContentAssistant.getContentAssistProcessor(ICSSPartitionTypes.STYLE); - processors = new IContentAssistProcessor[]{processor}; - } - // // jspcontentassistprocessor handles this? - // else if ((partitionType == IHTMLPartitionTypes.HTML_DEFAULT) || - // (partitionType == IHTMLPartitionTypes.HTML_COMMENT)) { - // processors = new IContentAssistProcessor[]{new - // HTMLContentAssistProcessor()}; - // } - else if ((partitionType == IXMLPartitions.XML_DEFAULT) || (partitionType == IHTMLPartitionTypes.HTML_DEFAULT) || (partitionType == IHTMLPartitionTypes.HTML_COMMENT) || (partitionType == IJSPPartitionTypes.JSP_DEFAULT) || (partitionType == IJSPPartitionTypes.JSP_DIRECTIVE) || (partitionType == IJSPPartitionTypes.JSP_CONTENT_DELIMITER) || (partitionType == IJSPPartitionTypes.JSP_CONTENT_JAVASCRIPT) || (partitionType == IJSPPartitionTypes.JSP_COMMENT)) { - // jsp - processors = new IContentAssistProcessor[]{new JSPContentAssistProcessor()}; - } - else if ((partitionType == IXMLPartitions.XML_CDATA) || (partitionType == IJSPPartitionTypes.JSP_CONTENT_JAVA)) { - // jsp java - processors = new IContentAssistProcessor[]{new JSPJavaContentAssistProcessor()}; - } - else if (partitionType == IJSPPartitionTypes.JSP_DEFAULT_EL) { - // jsp el - processors = new IContentAssistProcessor[]{new JSPELContentAssistProcessor()}; - } - else if (partitionType == IStructuredPartitionTypes.UNKNOWN_PARTITION) { - // unknown - processors = new IContentAssistProcessor[]{new NoRegionContentAssistProcessorForJSP()}; - } - - return processors; - } - - public IContentFormatter getContentFormatter(ISourceViewer sourceViewer) { - MultiPassContentFormatter formatter = new MultiPassContentFormatter(getConfiguredDocumentPartitioning(sourceViewer), IXMLPartitions.XML_DEFAULT); - - formatter.setMasterStrategy(new StructuredFormattingStrategy(new HTMLFormatProcessorImpl())); - formatter.setSlaveStrategy(new FormattingStrategyJSPJava(), IJSPPartitionTypes.JSP_CONTENT_JAVA); - - return formatter; - } - - public ITextDoubleClickStrategy getDoubleClickStrategy(ISourceViewer sourceViewer, String contentType) { - ITextDoubleClickStrategy strategy = null; - - // html or javascript - if (contentType == IHTMLPartitionTypes.HTML_DEFAULT || contentType == IHTMLPartitionTypes.SCRIPT) - strategy = getHTMLSourceViewerConfiguration().getDoubleClickStrategy(sourceViewer, contentType); - else if (contentType == IJSPPartitionTypes.JSP_CONTENT_JAVA || contentType == IJSPPartitionTypes.JSP_CONTENT_JAVASCRIPT) - // JSP Java or JSP JavaScript - strategy = getJavaSourceViewerConfiguration().getDoubleClickStrategy(sourceViewer, contentType); - else if (contentType == IJSPPartitionTypes.JSP_DEFAULT) - // JSP (just treat like html) - strategy = getHTMLSourceViewerConfiguration().getDoubleClickStrategy(sourceViewer, IHTMLPartitionTypes.HTML_DEFAULT); - else - strategy = super.getDoubleClickStrategy(sourceViewer, contentType); - - return strategy; - } - - private StructuredTextViewerConfiguration getHTMLSourceViewerConfiguration() { - if (fHTMLSourceViewerConfiguration == null) { - fHTMLSourceViewerConfiguration = new StructuredTextViewerConfigurationHTML(); - } - return fHTMLSourceViewerConfiguration; - } - - public IHyperlinkDetector[] getHyperlinkDetectors(ISourceViewer sourceViewer) { - if (fPreferenceStore == null) - return null; - if (sourceViewer == null || !fPreferenceStore.getBoolean(AbstractDecoratedTextEditorPreferenceConstants.EDITOR_HYPERLINKS_ENABLED)) - return null; - - List allDetectors = new ArrayList(0); - allDetectors.add(new JSPJavaHyperlinkDetector()); - allDetectors.add(new TaglibHyperlinkDetector()); - allDetectors.add(new XMLHyperlinkDetector()); - - IHyperlinkDetector[] superDetectors = super.getHyperlinkDetectors(sourceViewer); - for (int m = 0; m < superDetectors.length; m++) { - IHyperlinkDetector detector = superDetectors[m]; - if (!allDetectors.contains(detector)) { - allDetectors.add(detector); - } - } - return (IHyperlinkDetector[]) allDetectors.toArray(new IHyperlinkDetector[0]); - } - - public String[] getIndentPrefixes(ISourceViewer sourceViewer, String contentType) { - String[] indentations = null; - - if (contentType == IXMLPartitions.XML_DEFAULT) - indentations = getXMLSourceViewerConfiguration().getIndentPrefixes(sourceViewer, contentType); - else - indentations = getHTMLSourceViewerConfiguration().getIndentPrefixes(sourceViewer, contentType); - - return indentations; - } - - protected IInformationProvider getInformationProvider(ISourceViewer sourceViewer, String partitionType) { - IInformationProvider provider = null; - if (partitionType == IHTMLPartitionTypes.HTML_DEFAULT) { - // HTML - IInformationPresenter htmlPresenter = getHTMLSourceViewerConfiguration().getInformationPresenter(sourceViewer); - provider = htmlPresenter.getInformationProvider(IHTMLPartitionTypes.HTML_DEFAULT); - } - else if (partitionType == IHTMLPartitionTypes.SCRIPT) { - // HTML JavaScript - IInformationPresenter htmlPresenter = getHTMLSourceViewerConfiguration().getInformationPresenter(sourceViewer); - provider = htmlPresenter.getInformationProvider(IHTMLPartitionTypes.SCRIPT); - } - else if (partitionType == IXMLPartitions.XML_DEFAULT) { - // XML - IInformationPresenter xmlPresenter = getXMLSourceViewerConfiguration().getInformationPresenter(sourceViewer); - provider = xmlPresenter.getInformationProvider(IXMLPartitions.XML_DEFAULT); - } - return provider; - } - - private JavaSourceViewerConfiguration getJavaSourceViewerConfiguration() { - if (fJavaSourceViewerConfiguration == null) { - IPreferenceStore store = PreferenceConstants.getPreferenceStore(); - JavaTextTools javaTextTools = new JavaTextTools(store); - /* - * NOTE: null text editor is being passed to - * JavaSourceViewerConfiguration because - * StructuredTextViewerConfiguration does not know current editor. - * this is okay because editor is not needed in the cases we are - * using javasourceviewerconfiguration. - */ - fJavaSourceViewerConfiguration = new JavaSourceViewerConfiguration(javaTextTools.getColorManager(), store, null, IJavaPartitions.JAVA_PARTITIONING); - } - return fJavaSourceViewerConfiguration; - } - - public LineStyleProvider[] getLineStyleProviders(ISourceViewer sourceViewer, String partitionType) { - LineStyleProvider[] providers = null; - - if (partitionType == IHTMLPartitionTypes.HTML_DEFAULT || partitionType == IHTMLPartitionTypes.HTML_COMMENT || partitionType == IHTMLPartitionTypes.HTML_DECLARATION) { - providers = getHTMLSourceViewerConfiguration().getLineStyleProviders(sourceViewer, IHTMLPartitionTypes.HTML_DEFAULT); - } - else if (partitionType == IHTMLPartitionTypes.SCRIPT || partitionType == IJSPPartitionTypes.JSP_CONTENT_JAVASCRIPT) { - providers = getHTMLSourceViewerConfiguration().getLineStyleProviders(sourceViewer, IHTMLPartitionTypes.SCRIPT); - } - else if (partitionType == ICSSPartitionTypes.STYLE) { - providers = getHTMLSourceViewerConfiguration().getLineStyleProviders(sourceViewer, ICSSPartitionTypes.STYLE); - } - else if (partitionType == IXMLPartitions.XML_DEFAULT || partitionType == IXMLPartitions.XML_CDATA || partitionType == IXMLPartitions.XML_COMMENT || partitionType == IXMLPartitions.XML_DECLARATION || partitionType == IXMLPartitions.XML_PI) { - providers = getXMLSourceViewerConfiguration().getLineStyleProviders(sourceViewer, IXMLPartitions.XML_DEFAULT); - } - else if (partitionType == IJSPPartitionTypes.JSP_CONTENT_JAVA) { - providers = new LineStyleProvider[]{getLineStyleProviderForJava()}; - } - else if (partitionType == IJSPPartitionTypes.JSP_DEFAULT_EL) { - providers = new LineStyleProvider[]{getLineStyleProviderForJSPEL()}; - } - else if (partitionType == IJSPPartitionTypes.JSP_COMMENT || partitionType == IJSPPartitionTypes.JSP_CONTENT_DELIMITER || partitionType == IJSPPartitionTypes.JSP_DEFAULT || partitionType == IJSPPartitionTypes.JSP_DIRECTIVE) { - providers = new LineStyleProvider[]{getLineStyleProviderForJSP()}; - } - - return providers; - } - - private LineStyleProvider getLineStyleProviderForJava() { - if (fLineStyleProviderForJava == null) { - fLineStyleProviderForJava = new LineStyleProviderForJava(); - } - return fLineStyleProviderForJava; - } - - private LineStyleProvider getLineStyleProviderForJSP() { - if (fLineStyleProviderForJSP == null) { - fLineStyleProviderForJSP = new LineStyleProviderForJSP(); - } - return fLineStyleProviderForJSP; - } - - private LineStyleProvider getLineStyleProviderForJSPEL() { - if (fLineStyleProviderForJSPEL == null) { - fLineStyleProviderForJSPEL = new LineStyleProviderForJSPEL(); - } - return fLineStyleProviderForJSPEL; - } - - public ITextHover getTextHover(ISourceViewer sourceViewer, String contentType, int stateMask) { - ITextHover hover = null; - - if (contentType == IHTMLPartitionTypes.HTML_DEFAULT || contentType == IHTMLPartitionTypes.SCRIPT) { - // html and javascript regions - hover = getHTMLSourceViewerConfiguration().getTextHover(sourceViewer, contentType, stateMask); - } - else if (contentType == IXMLPartitions.XML_DEFAULT) { - // xml regions - hover = getXMLSourceViewerConfiguration().getTextHover(sourceViewer, contentType, stateMask); - } - else if ((contentType == IJSPPartitionTypes.JSP_DEFAULT) || (contentType == IJSPPartitionTypes.JSP_DIRECTIVE) || (contentType == IJSPPartitionTypes.JSP_CONTENT_JAVA)) { - TextHoverManager manager = SSEUIPlugin.getDefault().getTextHoverManager(); - TextHoverManager.TextHoverDescriptor[] hoverDescs = manager.getTextHovers(); - int i = 0; - while (i < hoverDescs.length && hover == null) { - if (hoverDescs[i].isEnabled() && EditorUtility.computeStateMask(hoverDescs[i].getModifierString()) == stateMask) { - String hoverType = hoverDescs[i].getId(); - if (TextHoverManager.COMBINATION_HOVER.equalsIgnoreCase(hoverType)) { - if ((contentType == IJSPPartitionTypes.JSP_DEFAULT) || (contentType == IJSPPartitionTypes.JSP_DIRECTIVE)) { - // JSP - hover = manager.createBestMatchHover(new JSPTagInfoHoverProcessor()); - } - else { - // JSP Java - hover = manager.createBestMatchHover(new JSPJavaJavadocHoverProcessor()); - } - } - else if (TextHoverManager.DOCUMENTATION_HOVER.equalsIgnoreCase(hoverType)) { - if ((contentType == IJSPPartitionTypes.JSP_DEFAULT) || (contentType == IJSPPartitionTypes.JSP_DIRECTIVE)) { - // JSP - hover = new JSPTagInfoHoverProcessor(); - } - else { - // JSP Java - hover = new JSPJavaJavadocHoverProcessor(); - } - } - } - i++; - } - } - - // no appropriate text hovers found, try super - if (hover == null) - hover = super.getTextHover(sourceViewer, contentType, stateMask); - return hover; - } - - private StructuredTextViewerConfiguration getXMLSourceViewerConfiguration() { - if (fXMLSourceViewerConfiguration == null) { - fXMLSourceViewerConfiguration = new StructuredTextViewerConfigurationXML(); - } - return fXMLSourceViewerConfiguration; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/IActionConstantsJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/IActionConstantsJSP.java deleted file mode 100644 index a400780e48..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/IActionConstantsJSP.java +++ /dev/null @@ -1,19 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal; - -/** - * @author pavery - */ -public interface IActionConstantsJSP { - public final static String ACTION_NAME_RENAME_ELEMENT = "RenameElement"; //$NON-NLS-1$ - public final static String ACTION_NAME_MOVE_ELEMENT = "MoveElement"; //$NON-NLS-1$ -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/IActionDefinitionIdsJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/IActionDefinitionIdsJSP.java deleted file mode 100644 index f90607e7b2..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/IActionDefinitionIdsJSP.java +++ /dev/null @@ -1,21 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal; - -import org.eclipse.jdt.ui.actions.IJavaEditorActionDefinitionIds; - -/** - * @author pavery - */ -public interface IActionDefinitionIdsJSP { - public final static String RENAME_ELEMENT = IJavaEditorActionDefinitionIds.RENAME_ELEMENT; - public final static String MOVE_ELEMENT = IJavaEditorActionDefinitionIds.MOVE_ELEMENT; -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/JSPUIMessages.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/JSPUIMessages.java deleted file mode 100644 index aeff150408..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/JSPUIMessages.java +++ /dev/null @@ -1,96 +0,0 @@ -/********************************************************************** - * Copyright (c) 2005 IBM Corporation and others. 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: - * IBM - Initial API and implementation - **********************************************************************/ -package org.eclipse.jst.jsp.ui.internal; - -import java.util.MissingResourceException; -import java.util.ResourceBundle; - -import org.eclipse.osgi.util.NLS; - -/** - * Strings used by JSP UI - * - * @plannedfor 1.0 - */ -public class JSPUIMessages extends NLS { - private static final String BUNDLE_NAME = "org.eclipse.jst.jsp.ui.internal.JSPUIPluginResources";//$NON-NLS-1$ - private static ResourceBundle fResourceBundle; - - public static String Sample_JSP_doc; - public static String JSP_Delimiters_UI_; - public static String Refactor_label; - public static String RenameElement_label; // resource bundle - public static String MoveElement_label; // resource bundle - public static String MoveElementWizard; - public static String OK; - public static String JSP_changes; - public static String ActionContributorJSP_0; - public static String JSPRenameElementAction_0; - public static String JSPMoveElementAction_0; - public static String BasicRefactorSearchRequestor_0; - public static String BasicRefactorSearchRequestor_1; - public static String BasicRefactorSearchRequestor_2; - public static String BasicRefactorSearchRequestor_3; - public static String BasicRefactorSearchRequestor_4; - public static String BasicRefactorSearchRequestor_5; - public static String BasicRefactorSearchRequestor_6; - public static String _UI_WIZARD_NEW_TITLE; - public static String _UI_WIZARD_NEW_HEADING; - public static String _UI_WIZARD_NEW_DESCRIPTION; - public static String _ERROR_FILENAME_MUST_END_JSP; - public static String NewJSPTemplatesWizardPage_0; - public static String NewJSPTemplatesWizardPage_1; - public static String NewJSPTemplatesWizardPage_2; - public static String NewJSPTemplatesWizardPage_3; - public static String NewJSPTemplatesWizardPage_4; - public static String NewJSPTemplatesWizardPage_5; - public static String NewJSPTemplatesWizardPage_6; - public static String ToggleComment_label; // resource bundle - public static String ToggleComment_tooltip; // resource bundle - public static String ToggleComment_description; // resource bundle - public static String AddBlockComment_label; // resource bundle - public static String AddBlockComment_tooltip; // resource bundle - public static String AddBlockComment_description; // resource bundle - public static String RemoveBlockComment_label; // resource bundle - public static String RemoveBlockComment_tooltip; // resource bundle - public static String RemoveBlockComment_description; // resource bundle - public static String CleanupDocument_label; // resource bundle - public static String CleanupDocument_tooltip; // resource bundle - public static String CleanupDocument_description; // resource bundle - public static String FindOccurrences_label; // resource bundle - public static String OccurrencesSearchQuery_0; - public static String OccurrencesSearchQuery_2; - public static String Override_method_in; - public static String Creating_files_encoding; - public static String Content_Assist_not_availab_UI_; - public static String Java_Content_Assist_is_not_UI_; - public static String JSPSourcePreferencePage_0; - public static String JSPSourcePreferencePage_1; - public static String JSPSourcePreferencePage_2; - public static String JSPColorPage_jsp_content; - public static String JSPFilesPreferencePage_0; - public static String JSPFilesPreferencePage_1; - - static { - // load message values from bundle file - NLS.initializeMessages(BUNDLE_NAME, JSPUIMessages.class); - } - - public static ResourceBundle getResourceBundle() { - try { - if (fResourceBundle == null) - fResourceBundle = ResourceBundle.getBundle(BUNDLE_NAME); - } - catch (MissingResourceException x) { - fResourceBundle = null; - } - return fResourceBundle; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/JSPUIPlugin.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/JSPUIPlugin.java deleted file mode 100644 index 8aaeba0717..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/JSPUIPlugin.java +++ /dev/null @@ -1,98 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal; - -import java.io.IOException; - -import org.eclipse.jface.text.templates.ContextTypeRegistry; -import org.eclipse.jface.text.templates.persistence.TemplateStore; -import org.eclipse.jst.jsp.ui.internal.preferences.JSPUIPreferenceNames; -import org.eclipse.jst.jsp.ui.internal.templates.TemplateContextTypeIdsJSP; -import org.eclipse.ui.editors.text.templates.ContributionContextTypeRegistry; -import org.eclipse.ui.editors.text.templates.ContributionTemplateStore; -import org.eclipse.ui.plugin.AbstractUIPlugin; -import org.eclipse.wst.sse.ui.internal.provisional.registry.AdapterFactoryRegistry; -import org.eclipse.wst.sse.ui.internal.provisional.registry.AdapterFactoryRegistryImpl; - -/** - * The main plugin class to be used in the desktop. - */ -public class JSPUIPlugin extends AbstractUIPlugin { - public final static String ID = "org.eclipse.jst.jsp.ui"; //$NON-NLS-1$ - - protected static JSPUIPlugin instance = null; - - /** - * The template store for the jsp editor. - */ - private TemplateStore fTemplateStore; - - /** - * The template context type registry for the jsp editor. - */ - private ContextTypeRegistry fContextTypeRegistry; - - public JSPUIPlugin() { - super(); - instance = this; - } - - public static JSPUIPlugin getDefault() { - return instance; - } - - public synchronized static JSPUIPlugin getInstance() { - return instance; - } - - public AdapterFactoryRegistry getAdapterFactoryRegistry() { - return AdapterFactoryRegistryImpl.getInstance(); - - } - - /** - * Returns the template store for the jsp editor templates. - * - * @return the template store for the jsp editor templates - */ - public TemplateStore getTemplateStore() { - if (fTemplateStore == null) { - fTemplateStore= new ContributionTemplateStore(getTemplateContextRegistry(), getPreferenceStore(), JSPUIPreferenceNames.TEMPLATES_KEY); - - try { - fTemplateStore.load(); - } catch (IOException e) { - Logger.logException(e); - } - } - return fTemplateStore; - } - - /** - * Returns the template context type registry for the jsp plugin. - * - * @return the template context type registry for the jsp plugin - */ - public ContextTypeRegistry getTemplateContextRegistry() { - if (fContextTypeRegistry == null) { - ContributionContextTypeRegistry registry = new ContributionContextTypeRegistry(); - registry.addContextType(TemplateContextTypeIdsJSP.ALL); - registry.addContextType(TemplateContextTypeIdsJSP.NEW); - registry.addContextType(TemplateContextTypeIdsJSP.TAG); - registry.addContextType(TemplateContextTypeIdsJSP.ATTRIBUTE); - registry.addContextType(TemplateContextTypeIdsJSP.ATTRIBUTE_VALUE); - - fContextTypeRegistry= registry; - } - - return fContextTypeRegistry; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/JSPUIPluginResources.properties b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/JSPUIPluginResources.properties deleted file mode 100644 index a447662ce6..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/JSPUIPluginResources.properties +++ /dev/null @@ -1,74 +0,0 @@ -############################################################################### -# Copyright (c) 2004 IBM Corporation and others. -# 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: -# IBM Corporation - initial API and implementation -############################################################################### -## The following line is a sample JSP document. Please translate only the following parts: -## Use below tags ONLY for JSP 1.1 -## Welcome! -## Use below tags ONLY for JSP 1.2 -## Welcome! -Sample_JSP_doc=<%@ page \n\tlanguage=\"java\" \n\tcontentType=\"text/html; charset=ISO-8859-1\"\n%>\n<jsp:include flush=\"true\" page=\"titleBar.jsp\"/>\n\n<%-- Use below tags ONLY for JSP 1.1 --%>\n<%\n\tSystem.out.println(\"Welcome!\");\n%>\n<%-- Use below tags ONLY for JSP 1.2 --%>\n<jsp:scriptlet>\n\tSystem.out.println(\"Welcome!\");\n</jsp:scriptlet> -JSP_Delimiters_UI_=JSP Delimiters -Refactor_label=Refactor -RenameElement_label=Rename -MoveElement_label=Move -MoveElementWizard=Move the selected elements -# -OK=OK -JSP_changes=JSP changes -ActionContributorJSP_0=Refa&ctor -JSPRenameElementAction_0=Editor selection does not resolve to a renamable Java element -JSPMoveElementAction_0=Editor selection does not resolve to movable Java elements -BasicRefactorSearchRequestor_0=JSP Rename -BasicRefactorSearchRequestor_1=in file: {0} line: {1} -BasicRefactorSearchRequestor_2=Move Type ''{0}'' to package ''{1}'' -BasicRefactorSearchRequestor_3=Rename Method ''{0}'' to ''{1}'' -BasicRefactorSearchRequestor_4=Rename Type ''{0}'' to ''{1}'' -BasicRefactorSearchRequestor_5=Rename Package ''{0}'' to ''{1}'' -BasicRefactorSearchRequestor_6=JSP Rename Change -# -_UI_WIZARD_NEW_TITLE = New JavaServer Page -_UI_WIZARD_NEW_HEADING = JavaServer Page -_UI_WIZARD_NEW_DESCRIPTION = Create a new JavaServer Page. -_ERROR_FILENAME_MUST_END_JSP = The file name must end in one of the following extensions {0}. -NewJSPTemplatesWizardPage_0=Select JSP Template -NewJSPTemplatesWizardPage_1=Select a template as initial content in the JSP page. -NewJSPTemplatesWizardPage_2=Name -NewJSPTemplatesWizardPage_3=Description -NewJSPTemplatesWizardPage_4=Use JSP Template -NewJSPTemplatesWizardPage_5=Preview -NewJSPTemplatesWizardPage_6=Templates are 'New JSP' templates found in the <a>JSP Templates</a> preference page. -# Copied from sse.ui -CleanupDocument_label=Cleanup Document... -CleanupDocument_tooltip=Cleanup Document -CleanupDocument_description=Cleanup Document -ToggleComment_label=Toggle Comment -ToggleComment_tooltip=Toggle Comment -ToggleComment_description=Toggle Comment -AddBlockComment_label=Add Block Comment -AddBlockComment_tooltip=Add Block Comment -AddBlockComment_description=Add Block Comment -RemoveBlockComment_label=Remove Block Comment -RemoveBlockComment_tooltip=Remove Block Comment -RemoveBlockComment_description=Remove Block Comment -FindOccurrences_label=Occurrences in File -OccurrencesSearchQuery_0={0} - {1} Occurrences in {2} -OccurrencesSearchQuery_2=file -Content_Assist_not_availab_UI_=Content Assist not available at the current location -Java_Content_Assist_is_not_UI_=Java Content Assist is not available for the current cursor location -# -Override_method_in=Override method in ' -Creating_files_encoding=Creating files encoding preference -# -JSPSourcePreferencePage_0=JSP Source preferences are based on the content within the JSP. -JSPSourcePreferencePage_1=See <a>''{0}''</a> for JSP with HTML content. -JSPSourcePreferencePage_2=See <a>''{0}''</a> for JSP with XML content. -JSPColorPage_jsp_content=JSP Content -JSPFilesPreferencePage_0=Validating files -JSPFilesPreferencePage_1=Validate JSP fragments diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/Logger.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/Logger.java deleted file mode 100644 index a4373ab077..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/Logger.java +++ /dev/null @@ -1,144 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal; - -import java.util.StringTokenizer; - -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.Status; -import org.osgi.framework.Bundle; - -/** - * Small convenience class to log messages to plugin's log file and also, if desired, - * the console. This class should only be used by classes in this plugin. Other - * plugins should make their own copy, with appropriate ID. - */ -public class Logger { - private static final String PLUGIN_ID = "org.eclipse.jst.jsp.ui"; //$NON-NLS-1$ - - private static final String TRACEFILTER_LOCATION = "/debug/tracefilter"; //$NON-NLS-1$ - - public static final int OK = IStatus.OK; // 0 - public static final int INFO = IStatus.INFO; // 1 - public static final int WARNING = IStatus.WARNING; // 2 - public static final int ERROR = IStatus.ERROR; // 4 - - public static final int OK_DEBUG = 200 + OK; - public static final int INFO_DEBUG = 200 + INFO; - public static final int WARNING_DEBUG = 200 + WARNING; - public static final int ERROR_DEBUG = 200 + ERROR; - - /** - * Adds message to log. - * @param level severity level of the message (OK, INFO, WARNING, ERROR, OK_DEBUG, INFO_DEBUG, WARNING_DEBUG, ERROR_DEBUG) - * @param message text to add to the log - * @param exception exception thrown - */ - protected static void _log(int level, String message, Throwable exception) { - if (level == OK_DEBUG || level == INFO_DEBUG || level == WARNING_DEBUG || level == ERROR_DEBUG) { - if (!isDebugging()) - return; - } - - int severity = IStatus.OK; - switch (level) { - case INFO_DEBUG : - case INFO : - severity = IStatus.INFO; - break; - case WARNING_DEBUG : - case WARNING : - severity = IStatus.WARNING; - break; - case ERROR_DEBUG : - case ERROR : - severity = IStatus.ERROR; - } - message = (message != null) ? message : "null"; //$NON-NLS-1$ - Status statusObj = new Status(severity, PLUGIN_ID, severity, message, exception); - Bundle bundle = Platform.getBundle(PLUGIN_ID); - if (bundle != null) - Platform.getLog(bundle).log(statusObj); - } - - /** - * Prints message to log if category matches /debug/tracefilter option. - * @param message text to print - * @param category category of the message, to be compared with /debug/tracefilter - */ - protected static void _trace(String category, String message, Throwable exception) { - if (isTracing(category)) { - message = (message != null) ? message : "null"; //$NON-NLS-1$ - Status statusObj = new Status(IStatus.OK, PLUGIN_ID, IStatus.OK, message, exception); - Bundle bundle = Platform.getBundle(PLUGIN_ID); - if (bundle != null) - Platform.getLog(bundle).log(statusObj); - } - } - - /** - * @return true if the platform is debugging - */ - public static boolean isDebugging() { - return Platform.inDebugMode(); - } - - /** - * Determines if currently tracing a category - * @param category - * @return true if tracing category, false otherwise - */ - public static boolean isTracing(String category) { - if (!isDebugging()) - return false; - - String traceFilter = Platform.getDebugOption(PLUGIN_ID + TRACEFILTER_LOCATION); - if (traceFilter != null) { - StringTokenizer tokenizer = new StringTokenizer(traceFilter, ","); //$NON-NLS-1$ - while (tokenizer.hasMoreTokens()) { - String cat = tokenizer.nextToken().trim(); - if (category.equals(cat)) { - return true; - } - } - } - return false; - } - - public static void log(int level, String message) { - _log(level, message, null); - } - - public static void log(int level, String message, Throwable exception) { - _log(level, message, exception); - } - - public static void logException(String message, Throwable exception) { - _log(ERROR, message, exception); - } - - public static void logException(Throwable exception) { - _log(ERROR, exception.getMessage(), exception); - } - - public static void traceException(String category, String message, Throwable exception) { - _trace(category, message, exception); - } - - public static void traceException(String category, Throwable exception) { - _trace(category, exception.getMessage(), exception); - } - - public static void trace(String category, String message) { - _trace(category, message, null); - } -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/autoedit/AutoEditStrategyForTabs.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/autoedit/AutoEditStrategyForTabs.java deleted file mode 100644 index 2a2c4f850f..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/autoedit/AutoEditStrategyForTabs.java +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright (c) 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM - Initial API and implementation - * Jens Lukowski/Innoopract - initial renaming/restructuring - * - */ -package org.eclipse.jst.jsp.ui.internal.autoedit; - -import org.eclipse.core.runtime.Preferences; -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.ConfigurableLineTracker; -import org.eclipse.jface.text.DocumentCommand; -import org.eclipse.jface.text.IAutoEditStrategy; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.ILineTracker; -import org.eclipse.jface.text.IRegion; -import org.eclipse.jface.text.TextUtilities; -import org.eclipse.jst.jsp.ui.internal.Logger; -import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.texteditor.ITextEditor; -import org.eclipse.ui.texteditor.ITextEditorExtension3; -import org.eclipse.wst.html.core.internal.HTMLCorePlugin; -import org.eclipse.wst.html.core.internal.preferences.HTMLCorePreferenceNames; - -/** - * AutoEditStrategy to handle characters inserted when Tab key is pressed - */ -public class AutoEditStrategyForTabs implements IAutoEditStrategy { - private final String TAB_CHARACTER = "\t"; //$NON-NLS-1$ - - public void customizeDocumentCommand(IDocument document, DocumentCommand command) { - // if not in smart insert mode just ignore - if (!isSmartInsertMode()) - return; - - // spaces for tab character - if (command.length == 0 && command.text != null && command.text.length() > 0 && command.text.indexOf(TAB_CHARACTER) != -1) - smartInsertForTab(command, document); - } - - /** - * Insert spaces for tabs - * - * @param command - */ - private void smartInsertForTab(DocumentCommand command, IDocument document) { - // tab key was pressed. now check preferences to see if need to insert - // spaces instead of tab - int indentationWidth = getIndentationWidth(); - if (indentationWidth > -1) { - String originalText = command.text; - StringBuffer newText = new StringBuffer(originalText); - - // determine where in line this command begins - int lineOffset = -1; - try { - IRegion lineInfo = document.getLineInformationOfOffset(command.offset); - lineOffset = command.offset - lineInfo.getOffset(); - } catch (BadLocationException e) { - Logger.log(Logger.WARNING_DEBUG, e.getMessage(), e); - } - - ILineTracker lineTracker = getLineTracker(document, originalText); - - int startIndex = 0; - int index = newText.indexOf(TAB_CHARACTER); - while (index != -1) { - String indent = getIndentString(indentationWidth, lineOffset, lineTracker, index); - - // replace \t character with spaces - newText.replace(index, index + 1, indent); - if (lineTracker != null) { - try { - lineTracker.replace(index, 1, indent); - } catch (BadLocationException e) { - // if something goes wrong with replacing text, just - // reset to current string - lineTracker.set(newText.toString()); - Logger.log(Logger.WARNING_DEBUG, e.getMessage(), e); - } - } - - startIndex = index + indent.length(); - index = newText.indexOf(TAB_CHARACTER, startIndex); - } - command.text = newText.toString(); - } - } - - /** - * Calculate number of spaces for next tab stop - */ - private String getIndentString(int indentationWidth, int lineOffset, ILineTracker lineTracker, int index) { - int indentSize = indentationWidth; - int offsetInLine = -1; - if (lineTracker != null) { - try { - IRegion lineInfo = lineTracker.getLineInformationOfOffset(index); - if (lineInfo.getOffset() == 0 && lineOffset > -1) - offsetInLine = lineOffset + index; - else - offsetInLine = index - lineInfo.getOffset(); - } catch (BadLocationException e) { - Logger.log(Logger.WARNING_DEBUG, e.getMessage(), e); - } - } else { - if (lineOffset > -1) { - offsetInLine = lineOffset + index; - } - } - if (offsetInLine > -1 && indentationWidth > 0) { - int remainder = offsetInLine % indentationWidth; - indentSize = indentationWidth - remainder; - } - - StringBuffer indent = new StringBuffer(); - for (int i = 0; i < indentSize; i++) - indent.append(' '); - return indent.toString(); - } - - /** - * Set up a line tracker for text within command if text is multi-line - */ - private ILineTracker getLineTracker(IDocument document, String originalText) { - ConfigurableLineTracker lineTracker = null; - int[] delims = TextUtilities.indexOf(document.getLegalLineDelimiters(), originalText, 0); - if (delims[0] != -1 || delims[1] != -1) { - lineTracker = new ConfigurableLineTracker(document.getLegalLineDelimiters()); - lineTracker.set(originalText); - } - return lineTracker; - } - - /** - * Return true if active editor is in smart insert mode, false otherwise - * - * @return - */ - private boolean isSmartInsertMode() { - boolean isSmartInsertMode = false; - - ITextEditor textEditor = null; - IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); - if (window != null) { - IWorkbenchPage page = window.getActivePage(); - if (page != null) { - IEditorPart editor = page.getActiveEditor(); - if (editor != null) { - if (editor instanceof ITextEditor) - textEditor = (ITextEditor) editor; - else - textEditor = (ITextEditor) editor.getAdapter(ITextEditor.class); - } - } - } - - // check if smart insert mode - if (textEditor instanceof ITextEditorExtension3 && ((ITextEditorExtension3) textEditor).getInsertMode() == ITextEditorExtension3.SMART_INSERT) - isSmartInsertMode = true; - return isSmartInsertMode; - } - - /** - * Returns indentation width if using spaces for indentation, -1 otherwise - * - * @return - */ - private int getIndentationWidth() { - int width = -1; - - Preferences preferences = HTMLCorePlugin.getDefault().getPluginPreferences(); - if (HTMLCorePreferenceNames.SPACE.equals(preferences.getString(HTMLCorePreferenceNames.INDENTATION_CHAR))) - width = preferences.getInt(HTMLCorePreferenceNames.INDENTATION_SIZE); - - return width; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/autoedit/StructuredAutoEditStrategyJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/autoedit/StructuredAutoEditStrategyJSP.java deleted file mode 100644 index 757faa7cec..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/autoedit/StructuredAutoEditStrategyJSP.java +++ /dev/null @@ -1,104 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.autoedit; - -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.DocumentCommand; -import org.eclipse.jface.text.IAutoEditStrategy; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jst.jsp.ui.internal.Logger; -import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.texteditor.ITextEditor; -import org.eclipse.ui.texteditor.ITextEditorExtension3; -import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; -import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode; - -public class StructuredAutoEditStrategyJSP implements IAutoEditStrategy { - public void customizeDocumentCommand(IDocument document, DocumentCommand command) { - Object textEditor = getActiveTextEditor(); - if (!(textEditor instanceof ITextEditorExtension3 && ((ITextEditorExtension3) textEditor).getInsertMode() == ITextEditorExtension3.SMART_INSERT)) - return; - - IStructuredModel model = null; - try { - model = StructuredModelManager.getModelManager().getExistingModelForRead(document); - - if (model != null) { - if (command.text != null) { - if (command.text.equals("%")) { //$NON-NLS-1$ - // scriptlet - add end %> - IDOMNode node = (IDOMNode) model.getIndexedRegion(command.offset); - if (prefixedWith(document, command.offset, "<") && !node.getSource().endsWith("%>")) { //$NON-NLS-1$ //$NON-NLS-2$ - command.text += " %>"; //$NON-NLS-1$ - command.shiftsCaret = false; - command.caretOffset = command.offset + 1; - command.doit = false; - } - } - if (command.text.equals("{")) { //$NON-NLS-1$ - IDOMNode node = (IDOMNode) model.getIndexedRegion(command.offset); - if ((prefixedWith(document, command.offset, "$") || prefixedWith(document, command.offset, "#")) && //$NON-NLS-1$ //$NON-NLS-2$ - !node.getSource().endsWith("}")) { //$NON-NLS-1$ //$NON-NLS-2$ - command.text += " }"; //$NON-NLS-1$ - command.shiftsCaret = false; - command.caretOffset = command.offset + 1; - command.doit = false; - } - } - } - } - } - finally { - if (model != null) - model.releaseFromRead(); - } - } - - /** - * Return the active text editor if possible, otherwise the active editor - * part. - * - * @return - */ - private Object getActiveTextEditor() { - IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); - if (window != null) { - IWorkbenchPage page = window.getActivePage(); - if (page != null) { - IEditorPart editor = page.getActiveEditor(); - if (editor != null) { - if (editor instanceof ITextEditor) - return editor; - ITextEditor textEditor = (ITextEditor) editor.getAdapter(ITextEditor.class); - if (textEditor != null) - return textEditor; - return editor; - } - } - } - return null; - } - - private boolean prefixedWith(IDocument document, int offset, String string) { - - try { - return document.getLength() >= string.length() && document.get(offset - string.length(), string.length()).equals(string); - } - catch (BadLocationException e) { - Logger.logException(e); - return false; - } - } -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/breakpointproviders/AbstractBreakpointProvider.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/breakpointproviders/AbstractBreakpointProvider.java deleted file mode 100644 index f0747707ad..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/breakpointproviders/AbstractBreakpointProvider.java +++ /dev/null @@ -1,268 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.breakpointproviders; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IResource; -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDElementDeclaration; -import org.eclipse.jst.jsp.core.internal.provisional.JSP12Namespace; -import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts; -import org.eclipse.ui.IEditorInput; -import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; -import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion; -import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument; -import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion; -import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion; -import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionCollection; -import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList; -import org.eclipse.wst.sse.ui.internal.provisional.extensions.ISourceEditingTextTools; -import org.eclipse.wst.sse.ui.internal.provisional.extensions.breakpoint.IBreakpointProvider; -import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration; -import org.eclipse.wst.xml.core.internal.contentmodel.CMNode; -import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQuery; -import org.eclipse.wst.xml.core.internal.modelquery.ModelQueryUtil; -import org.eclipse.wst.xml.core.internal.provisional.contentmodel.CMNodeWrapper; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument; -import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext; -import org.eclipse.wst.xml.ui.internal.provisional.IDOMSourceEditingTextTools; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -/** - * Abstract breakpoint provider class which implements breakpoint provider - * interface. - * - * This is a temporary class for JavaBreakpointProvider and - * JavaScriptBreakpointProvider, and should be refactored to separate Java and - * JavaScript parts. - */ -public abstract class AbstractBreakpointProvider implements IBreakpointProvider { - - protected static final int END_OF_LINE = -1; - protected static final int JAVA = 1; - protected static final int JAVASCRIPT = 2; - private static final String[] JAVASCRIPT_LANGUAGE_KEYS = new String[]{"javascript", "javascript1.0", "javascript1.1_3", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - "javascript1.2", "javascript1.3", "javascript1.4", "javascript1.5", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ - "javascript1.6", "jscript", "sashscript"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - private static final String JSP_DIRECTIVE_PAGE = "jsp:directive.page"; //$NON-NLS-1$ - - protected static final int NO_VALID_CONTENT = -2; - protected static final int UNSUPPORTED = 0; - - protected static boolean contains(String[] haystack, String needle) { - for (int i = 0; i < haystack.length; i++) { - if (haystack[i].equals(needle)) { - return true; - } - } - return false; - } - - /* - * Return the page language - */ - protected static int getPageLanguage(Document doc) { - if (doc == null) - return UNSUPPORTED; - - NodeList pageDirectives = doc.getElementsByTagName(JSP_DIRECTIVE_PAGE); - // Search for first language directive - for (int i = 0; i < pageDirectives.getLength(); i++) { - Node child = pageDirectives.item(i); - Node languageAttr = child.getAttributes().getNamedItem("language"); //$NON-NLS-1$ - if (languageAttr != null) { - String pageLanguage = languageAttr.getNodeValue(); - if (pageLanguage == null || pageLanguage.length() == 0) - return UNSUPPORTED; - pageLanguage = pageLanguage.toLowerCase(); - if (contains(JAVASCRIPT_LANGUAGE_KEYS, pageLanguage)) - return JAVASCRIPT; - else if (pageLanguage.equals("java"))//$NON-NLS-1$ - return JAVA; - else - return UNSUPPORTED; - } - } - return JAVA; // Java is default if no language directive - } - - /* - * Search the RegionContainer's regions looking for JSP content. If valid - * content is found, return the position >= 0 If no valid content is - * found, return NO_VALID_CONTENT. If a region starts after the line's - * endOffset, return END_OF_LINE. - */ - private static int getValidRegionPosition(IStructuredModel model, ITextRegionCollection regionContainer, int startOffset, int endOffset) { - - ITextRegionList regions = regionContainer.getRegions(); - for (int i = 0; i < regions.size(); i++) { - ITextRegion region = regions.get(i); - if (region instanceof ITextRegionCollection) { - int validPosition = getValidRegionPosition(model, (ITextRegionCollection) region, startOffset, endOffset); - if (validPosition == END_OF_LINE || validPosition >= 0) - return validPosition; - } - else { - // region must be at least partially on selected line - if (regionContainer.getEndOffset(region) > startOffset) { - - int regionStartOffset = regionContainer.getStartOffset(region); - // if region starts after line's endOffset, we're done - // searching - if (regionStartOffset > endOffset) - return END_OF_LINE; - - // If region is JSP content, make sure the language is - // Java not Javascript by - // checking the content assist adapter's type. - if (region.getType().equals(DOMJSPRegionContexts.JSP_CONTENT)) { - // DWM: this logic is not incorrect ... given changes - // to adapters, etc. - // but probably don't need anything here, since both - // Java and JavaScript - // are supported in V5. - - // nsd_TODO: verify this!!! - - // INodeNotifier notifier = - // (INodeNotifier)model.getNode(region.getStartOffset()); - // IAdapterFactory factory = - // model.getFactoryRegistry().getFactoryFor(ContentAssistAdapter.class); - // if(factory instanceof - // HTMLContentAssistAdapterFactory) { - // INodeAdapter adapter = - // ((HTMLContentAssistAdapterFactory)factory).createAdapter(notifier, - // region); - // if(adapter != null && adapter instanceof - // JSPJavaContentAssistAdapter) - - if (regionStartOffset > startOffset) - return regionStartOffset; - else - return startOffset; - // } - } - // a custom tag, jsp:useBean, getproperty or setproperty - // statement is also a valid breakpoint location - else if (region.getType().equals(DOMRegionContext.XML_TAG_NAME) && (isCustomTagRegion(model.getIndexedRegion(regionStartOffset)) || regionContainer.getText(region).equals(JSP12Namespace.ElementName.USEBEAN) || regionContainer.getText(region).equals(JSP12Namespace.ElementName.GETPROPERTY) || regionContainer.getText(region).equals(JSP12Namespace.ElementName.SETPROPERTY))) { - - if (regionStartOffset > startOffset) - return regionStartOffset; - else - return startOffset; - } - else { - // Defect #241090, the Text Nodes inside of JSP - // scriptlets, expressions, and declarations are valid - // breakpoint-able locations - boolean isCodeNode = false; - IndexedRegion node = model.getIndexedRegion(regionStartOffset); - if (node != null && node instanceof Node) { - Node domNode = (Node) node; - Node root = domNode.getOwnerDocument().getDocumentElement(); - if (root != null && root.getNodeName().equals(JSP12Namespace.ElementName.ROOT) && domNode.getNodeType() == Node.TEXT_NODE && domNode.getParentNode() != null) { - String parentName = domNode.getParentNode().getNodeName(); - isCodeNode = parentName.equals(JSP12Namespace.ElementName.SCRIPTLET) || parentName.equals(JSP12Namespace.ElementName.EXPRESSION) || parentName.equals(JSP12Namespace.ElementName.DECLARATION); - } - } - if (isCodeNode) { - if (regionStartOffset > startOffset) - return regionStartOffset; - else - return startOffset; - } - } - } - } - } - return NO_VALID_CONTENT; - } - - private static boolean isCustomTagRegion(IndexedRegion node) { - - if (node instanceof Element) { - Element xmlElement = (Element) node; - ModelQuery mq = ModelQueryUtil.getModelQuery(xmlElement.getOwnerDocument()); - CMElementDeclaration decl = mq.getCMElementDeclaration(xmlElement); - if (decl instanceof CMNodeWrapper) { - CMNode cmNode = ((CMNodeWrapper) decl).getOriginNode(); - return cmNode instanceof TLDElementDeclaration; - } - } - return false; - } - - private ISourceEditingTextTools fSourceEditingTextTools; - - - protected IResource getEditorInputResource(IEditorInput input) { - IResource resource = (IResource) input.getAdapter(IFile.class); - if (resource == null) { - resource = (IResource) input.getAdapter(IResource.class); - } - return resource; - } - - public ISourceEditingTextTools getSourceEditingTextTools() { - return fSourceEditingTextTools; - } - - protected int getValidPosition(IDocument idoc, int lineNumber) { - if (!(getSourceEditingTextTools() instanceof IDOMSourceEditingTextTools)) { - return NO_VALID_CONTENT; - } - if (idoc == null) - return NO_VALID_CONTENT; - - int startOffset, endOffset; - try { - startOffset = idoc.getLineOffset(lineNumber - 1); - endOffset = idoc.getLineOffset(lineNumber) - 1; - - if (idoc == null) - return NO_VALID_CONTENT; - String lineText = idoc.get(startOffset, endOffset - startOffset).trim(); - - // blank lines or lines with only an open or close brace or - // scriptlet tag cannot have a breakpoint - if (lineText.equals("") || lineText.equals("{") || //$NON-NLS-2$//$NON-NLS-1$ - lineText.equals("}") || lineText.equals("<%"))//$NON-NLS-2$//$NON-NLS-1$ - return NO_VALID_CONTENT; - } - catch (BadLocationException e) { - return NO_VALID_CONTENT; - } - - IStructuredDocumentRegion flatNode = ((IStructuredDocument) idoc).getRegionAtCharacterOffset(startOffset); - // go through the node's regions looking for JSP content - // until reaching the end of the line - while (flatNode != null) { - int validPosition = getValidRegionPosition(((IDOMDocument) ((IDOMSourceEditingTextTools) getSourceEditingTextTools()).getDOMDocument()).getModel(), flatNode, startOffset, endOffset); - - if (validPosition == END_OF_LINE) - return NO_VALID_CONTENT; - - if (validPosition >= 0) - return validPosition; - - flatNode = flatNode.getNext(); - } - return NO_VALID_CONTENT; - } - - public void setSourceEditingTextTools(ISourceEditingTextTools sourceEditingTextTools) { - fSourceEditingTextTools = sourceEditingTextTools; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/breakpointproviders/JavaBreakpointProvider.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/breakpointproviders/JavaBreakpointProvider.java deleted file mode 100644 index f43607054a..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/breakpointproviders/JavaBreakpointProvider.java +++ /dev/null @@ -1,105 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.breakpointproviders; - -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.jdt.debug.core.JDIDebugModel; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; -import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IFileEditorInput; -import org.eclipse.wst.xml.ui.internal.provisional.IDOMSourceEditingTextTools; -import org.w3c.dom.Document; -import org.w3c.dom.Node; - -/** - * A BreakpointProvider supporting server-side Java as a JSP language - * - * @deprecated - */ -public class JavaBreakpointProvider extends AbstractBreakpointProvider { - - /* - * @param res @return String - */ - private static final String getTypeName(IResource res) { - IPath path = res.getFullPath(); - // Assume under Web Content folder if more than 2 segments - if (path.segmentCount() > 2) { - path = path.removeFirstSegments(2); - } - else { - path = path.removeFirstSegments(1); - } - String typeName = path.toString().replace(IPath.SEPARATOR, '.'); - if (res.getFileExtension() != null) { - typeName = typeName.substring(0, typeName.lastIndexOf('.')); - } - return typeName; - } - - - - public IStatus addBreakpoint(IDocument document, IEditorInput input, int lineNumber, int offset) throws CoreException { - int pos = getValidPosition(document, lineNumber); - if (pos != NO_VALID_CONTENT) { - IResource res = getEditorInputResource(input); - if (res != null) { - String typeName = getTypeName(res); - try { - JDIDebugModel.createLineBreakpoint(res, typeName, lineNumber, pos, pos, 0, true, null); - } - catch (CoreException e) { - return e.getStatus(); - } - } - } - return new Status(IStatus.OK, JSPUIPlugin.ID, IStatus.OK, JSPUIMessages.OK, null); //$NON-NLS-1$ - } - - public boolean canAddBreakpoint(IDocument document, IEditorInput input, Node node, int lineNumber, int offset) { - IResource res = input instanceof IFileEditorInput ? ((IFileEditorInput) input).getFile() : null; - Document doc = null; - if (getSourceEditingTextTools() instanceof IDOMSourceEditingTextTools) { - doc = ((IDOMSourceEditingTextTools) getSourceEditingTextTools()).getDOMDocument(); - } - - return res != null && !isBreakpointExist(res, lineNumber) && isValidPosition(document, lineNumber) && (getPageLanguage(doc) == JAVA); - } - - public IResource getResource(IEditorInput input) { - return getEditorInputResource(input); - } - - /* - * @param res @param lineNumber @return boolean - */ - private boolean isBreakpointExist(IResource res, int lineNumber) { - try { - return JDIDebugModel.lineBreakpointExists(getTypeName(res), lineNumber) != null; - } - catch (CoreException e) { - return false; - } - } - - /* - * @param doc @param idoc @param lineNumber @return boolean - */ - private boolean isValidPosition(IDocument idoc, int lineNumber) { - return getValidPosition(idoc, lineNumber) != NO_VALID_CONTENT; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/breakpointproviders/JavaScriptBreakpointProvider.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/breakpointproviders/JavaScriptBreakpointProvider.java deleted file mode 100644 index d32295c30e..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/breakpointproviders/JavaScriptBreakpointProvider.java +++ /dev/null @@ -1,81 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.breakpointproviders; - -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.debug.core.DebugPlugin; -import org.eclipse.debug.core.IBreakpointManager; -import org.eclipse.debug.core.model.IBreakpoint; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; -import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin; -import org.eclipse.ui.IEditorInput; -import org.w3c.dom.Document; - -/** - * A IBreakpointProvider supporting server-side JavaScript as a JSP language - * - */ -public class JavaScriptBreakpointProvider extends AbstractBreakpointProvider { - public boolean canAddBreakpoint(IDocument document, IEditorInput input, int lineNumber, int offset) { - IResource res = getEditorInputResource(input); - Document doc = null; - return res != null && !isBreakpointExist(res, lineNumber) && isValidPosition(document, lineNumber) && (getPageLanguage(doc) != JAVA); - } - - - public IStatus addBreakpoint(IDocument document, IEditorInput input, int lineNumber, int offset) { - int pos = getValidPosition(document, lineNumber); - if (pos != NO_VALID_CONTENT && canAddBreakpoint(document, input, lineNumber, offset)) { - IResource res = getEditorInputResource(input); - if (res != null) { - new JavascriptLineBreakpoint(res, lineNumber, pos, pos); - } - } - return new Status(IStatus.OK, JSPUIPlugin.ID, IStatus.OK, JSPUIMessages.OK, null); //$NON-NLS-1$ - } - - /* - * @param res @param lineNumber @return boolean - */ - private boolean isBreakpointExist(IResource res, int lineNumber) { - IBreakpointManager manager = DebugPlugin.getDefault().getBreakpointManager(); - IBreakpoint[] breakpoints = manager.getBreakpoints(); - for (int i = 0; i < breakpoints.length; i++) { - if (!(breakpoints[i] instanceof JavascriptLineBreakpoint)) - continue; - JavascriptLineBreakpoint breakpoint = (JavascriptLineBreakpoint) breakpoints[i]; - try { - if (breakpoint.getResource().equals(res) && breakpoint.getLineNumber() == lineNumber) { - return true; - } - } - catch (CoreException e) { - return true; - } - } - return false; - } - - /* - * @param doc @param idoc @param lineNumber @return boolean - */ - private boolean isValidPosition(IDocument idoc, int lineNumber) { - return getValidPosition(idoc, lineNumber) != NO_VALID_CONTENT; - } - - public IResource getResource(IEditorInput input) { - return getEditorInputResource(input); - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/breakpointproviders/JavaStratumBreakpointProvider.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/breakpointproviders/JavaStratumBreakpointProvider.java deleted file mode 100644 index 2827c09881..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/breakpointproviders/JavaStratumBreakpointProvider.java +++ /dev/null @@ -1,172 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.breakpointproviders; - -import java.util.HashMap; -import java.util.Map; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.IExecutableExtension; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.debug.core.model.IBreakpoint; -import org.eclipse.jdt.debug.core.JDIDebugModel; -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.IRegion; -import org.eclipse.jface.text.ITypedRegion; -import org.eclipse.jst.jsp.core.internal.provisional.text.IJSPPartitionTypes; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; -import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IStorageEditorInput; -import org.eclipse.wst.sse.ui.internal.StructuredResourceMarkerAnnotationModel; -import org.eclipse.wst.sse.ui.internal.provisional.extensions.ISourceEditingTextTools; -import org.eclipse.wst.sse.ui.internal.provisional.extensions.breakpoint.IBreakpointProvider; - -/** - * A IBreakpointProvider supporting JSP breakpoints for a Non-Java Language - * Source JSP page - */ -public class JavaStratumBreakpointProvider implements IBreakpointProvider, IExecutableExtension { - private String fClassPattern = null; - - public IStatus addBreakpoint(IDocument document, IEditorInput input, int editorLineNumber, int offset) throws CoreException { - // check if there is a valid position to set breakpoint - int pos = getValidPosition(document, editorLineNumber); - IStatus status = null; - if (pos >= 0) { - IResource res = getResourceFromInput(input); - if (res != null) { - String path = null; //res.getName();// res.getFullPath().removeFirstSegments(2).toString(); - IBreakpoint point = JDIDebugModel.createStratumBreakpoint(res, "JSP", res.getName(), path, getClassPattern(), editorLineNumber, pos, pos, 0, true, null); //$NON-NLS-1$ - if (point == null) { - status = new Status(IStatus.ERROR, JSPUIPlugin.ID, IStatus.ERROR, "unsupported input type", null); //$NON-NLS-1$ - } - } - else if (input instanceof IStorageEditorInput) { - // For non-resources, use the workspace root and a coordinated - // attribute that is used to - // prevent unwanted (breakpoint) markers from being loaded - // into the editors. - res = ResourcesPlugin.getWorkspace().getRoot(); - String id = input.getName(); - if (input instanceof IStorageEditorInput && ((IStorageEditorInput) input).getStorage() != null && ((IStorageEditorInput) input).getStorage().getFullPath() != null) { - id = ((IStorageEditorInput) input).getStorage().getFullPath().toString(); - } - Map attributes = new HashMap(); - attributes.put(StructuredResourceMarkerAnnotationModel.SECONDARY_ID_KEY, id); - String path = null; - IBreakpoint point = JDIDebugModel.createStratumBreakpoint(res, "JSP", input.getName(), path, getClassPattern(), editorLineNumber, pos, pos, 0, true, attributes); //$NON-NLS-1$ - if (point == null) { - status = new Status(IStatus.ERROR, JSPUIPlugin.ID, IStatus.ERROR, "unsupported input type", null); //$NON-NLS-1$ - } - } - } - if (status == null) { - status = new Status(IStatus.OK, JSPUIPlugin.ID, IStatus.OK, JSPUIMessages.OK, null); - } - return status; - } - - private String getClassPattern() { - return fClassPattern; - } - - - public IResource getResource(IEditorInput input) { - return getResourceFromInput(input); - } - - private IResource getResourceFromInput(IEditorInput input) { - IResource resource = (IResource) input.getAdapter(IFile.class); - if (resource == null) { - resource = (IResource) input.getAdapter(IResource.class); - } - return resource; - } - - /** - * Finds a valid position somewhere on lineNumber in document, idoc, where - * a breakpoint can be set and returns that position. -1 is returned if a - * position could not be found. - * - * @param idoc - * @param editorLineNumber - * @return position to set breakpoint or -1 if no position could be found - */ - private int getValidPosition(IDocument idoc, int editorLineNumber) { - int result = -1; - if (idoc != null) { - - int startOffset = 0; - int endOffset = 0; - try { - IRegion line = idoc.getLineInformation(editorLineNumber - 1); - startOffset = line.getOffset(); - endOffset = Math.max(line.getOffset(), line.getOffset() + line.getLength()); - - String lineText = idoc.get(startOffset, endOffset - startOffset).trim(); - - // blank lines or lines with only an open or close brace or - // scriptlet tag cannot have a breakpoint - if (lineText.equals("") || lineText.equals("{") || //$NON-NLS-1$ //$NON-NLS-2$ - lineText.equals("}") || lineText.equals("<%")) //$NON-NLS-1$ //$NON-NLS-2$ - { - result = -1; - } - else { - // get all partitions for current line - ITypedRegion[] partitions = null; - - partitions = idoc.computePartitioning(startOffset, endOffset - startOffset); - - - for (int i = 0; i < partitions.length; ++i) { - String type = partitions[i].getType(); - // if found jsp java content, jsp directive tags, - // custom - // tags, - // return that position - if (type == IJSPPartitionTypes.JSP_CONTENT_JAVA || type == IJSPPartitionTypes.JSP_DIRECTIVE) { - result = partitions[i].getOffset(); - } - } - } - } - catch (BadLocationException e) { - result = -1; - } - } - - return result; - } - - /** - * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement, - * java.lang.String, java.lang.Object) - */ - public void setInitializationData(IConfigurationElement config, String propertyName, Object data) throws CoreException { - if (data != null) { - if (data instanceof String && data.toString().length() > 0) { - fClassPattern = (String) data; - } - } - } - - public void setSourceEditingTextTools(ISourceEditingTextTools tools) { - // not used - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/breakpointproviders/JavascriptLineBreakpoint.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/breakpointproviders/JavascriptLineBreakpoint.java deleted file mode 100644 index 68580d9c6c..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/breakpointproviders/JavascriptLineBreakpoint.java +++ /dev/null @@ -1,64 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -/* - * Created on Jul 20, 2003 - * - * To change the template for this generated file go to - * Window>Preferences>Java>Code Generation>Code and Comments - */ -package org.eclipse.jst.jsp.ui.internal.breakpointproviders; - -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.CoreException; - -/** - * @author davidw - * - * To change the template for this generated type comment go to - * Window>Preferences>Java>Code Generation>Code and Comments - */ -public class JavascriptLineBreakpoint { - - /** - * @param res - * @param lineNumber - * @param pos - * @param pos1 - */ - public JavascriptLineBreakpoint(IResource res, int lineNumber, int pos, int pos1) { - - // TODO Should be deleted? Along with calling class? - } - - /** - * - */ - public JavascriptLineBreakpoint() { - super(); - } - - /** - * - */ - public IResource getResource() throws CoreException { - // TODO Auto-generated method stub - return null; - } - - /** - * @return - */ - public int getLineNumber() { - // TODO Auto-generated method stub - return 0; - } - -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/BeanInfoProvider.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/BeanInfoProvider.java deleted file mode 100644 index 1b74c67a1c..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/BeanInfoProvider.java +++ /dev/null @@ -1,442 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.contentassist; - -import java.beans.Introspector; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.StringTokenizer; - -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.QualifiedName; -import org.eclipse.jdt.core.Flags; -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jdt.core.IMethod; -import org.eclipse.jdt.core.IType; -import org.eclipse.jdt.core.ITypeHierarchy; -import org.eclipse.jdt.core.JavaCore; -import org.eclipse.jdt.core.JavaModelException; -import org.eclipse.jst.jsp.ui.internal.Logger; - -/** - * Navigates the IJavaProject classpath (incl. source) on a given resource and infers bean properties - * given a fully qualified beanname. Bean properties can be retrieved using: - * <code>getRuntimeProperties(IResource baseResource, String typeName)</code> - * - * @plannedfor 1.0 - */ -public class BeanInfoProvider implements IBeanInfoProvider { - - public class JavaPropertyDescriptor implements IJavaPropertyDescriptor { - String fType = null; - String fName = null; - boolean fReadable = true; - boolean fWritable = true; - - public JavaPropertyDescriptor(String name, String type, boolean readable, boolean writable) { - fName = name; - fType = type; - fReadable = readable; - fWritable = writable; - } - - public String getDeclaredType() { - return fType; - } - - public String getDisplayName() { - return fName; - } - - public String getName() { - return fName; - } - - public boolean getReadable() { - return fReadable; - } - - public boolean getWriteable() { - return fWritable; - } - } - - // looks up encoded type (see Class.getName), and gives you a displayable string - private HashMap fEncodedTypeMap = null; - // to avoid repeat properties from showing up - private HashSet fRepeatMethods = null; - - public BeanInfoProvider() { - fRepeatMethods = new HashSet(); - } - - /** - * Returns the inferred properties of a bean based on the project from the baseResource, - * and the fully qualified name of the bean. - * - * @param baseResource the base resource where the bean is being used - * @param typeName the <i>fully qualified</i> type name (eg. javax.swing.JButton) of the bean - */ - public IJavaPropertyDescriptor[] getRuntimeProperties(IResource baseResource, String typeName) { - IJavaProject javaProject = JavaCore.create(baseResource.getProject()); - QualifiedName typeQualifiedName = getTypeQualifiedName(typeName); - List getMethodResults = new ArrayList(); - List isMethodResults = new ArrayList(); - List setMethodResults = new ArrayList(); - List descriptorResults = new ArrayList(); - try { - IType type = javaProject.findType(typeQualifiedName.getQualifier() + "." + typeQualifiedName.getLocalName()); //$NON-NLS-1$ - // type must exist - if(type != null) { - ITypeHierarchy hierarchy = type.newTypeHierarchy(null); - IType[] supers = hierarchy.getAllSuperclasses(type); - - IMethod[] methods = type.getMethods(); - // iterate the bean's methods - for (int i = 0; i < methods.length; i++) - acceptMethod(getMethodResults, isMethodResults, setMethodResults, methods[i]); - // the bean hierarchy's methods - for (int i = 0; i < supers.length; i++) { - methods = supers[i].getMethods(); - for (int j = 0; j < methods.length; j++) - acceptMethod(getMethodResults, isMethodResults, setMethodResults, methods[j]); - } - adaptMethodsToPropertyDescriptors(getMethodResults, isMethodResults, setMethodResults, descriptorResults); - } - } - catch (JavaModelException jmex) { - Logger.logException("Problem navigating JavaProject in BeanInfoProvider", jmex); //$NON-NLS-1$ - } - - IJavaPropertyDescriptor[] finalResults = new IJavaPropertyDescriptor[descriptorResults.size()]; - System.arraycopy(descriptorResults.toArray(), 0, finalResults, 0, descriptorResults.size()); - return finalResults; - } - - /** - * Retrieves the necessary information from method declaration lists, creates and fills a list of JavaPropertyDescriptors. - * @param getMethods - * @param isMethods - * @param setMethods - * @param descriptorResults - */ - private void adaptMethodsToPropertyDescriptors(List getMethods, List isMethods, List setMethods, List descriptors) throws JavaModelException { - List readable = new ArrayList(); - HashMap types = new HashMap(); - - // iterate through get* and is* methods, updating 'readable' list and 'types' map - filterGetMethods(getMethods, readable, types); - filterIsMethods(isMethods, readable, types); - - // iterate set* methods, checking overlap w/ readable - Iterator it = setMethods.iterator(); - IMethod temp = null; - String name = ""; //$NON-NLS-1$ - String type = ""; //$NON-NLS-1$ - String[] encodedParams = null; - String returnType = ""; //$NON-NLS-1$ - String param0 = ""; //$NON-NLS-1$ - - while (it.hasNext()) { - temp = (IMethod) it.next(); - name = createPropertyNameFromMethod(temp); - // invalid naming convention - if (name == null) - continue; - - returnType = getDecodedTypeName(temp.getReturnType()); - // setter should have no return type - if (!returnType.equals("void")) //$NON-NLS-1$ - continue; - - // need to get type from parameter - encodedParams = temp.getParameterTypes(); - if (encodedParams != null && encodedParams.length > 0) { - if (encodedParams.length > 1) { - // multiple params - param0 = getDecodedTypeName(encodedParams[0]); - if (!param0.equals("int")) //$NON-NLS-1$ - // not a valid indexed property - continue; - - type = getDecodedTypeName(encodedParams[1]); - } - else { - // one param, regular setter - if (isArray(encodedParams[0])) - type = getDecodedTypeName(encodedParams[0]); - } - } - - if (readable.contains(name)) { - // writable and readable - if (!fRepeatMethods.contains(name)) { - descriptors.add(new JavaPropertyDescriptor(name, (String) types.get(name), true, true)); - readable.remove(name); - fRepeatMethods.add(name); - } - } - else { - // wasn't readable, just writable - String[] params = temp.getParameterTypes(); - // can't be setProperty if no parameters - if (!(params.length > 0)) - continue; - if (!fRepeatMethods.contains(name)) { - type = getDecodedTypeName(params[0]); - descriptors.add(new JavaPropertyDescriptor(name, type, false, true)); - fRepeatMethods.add(name); - } - } - } - // add leftover from readable, get* and is* methods (readable = true, writable = false) - it = readable.iterator(); - while (it.hasNext()) { - name = (String) it.next(); - if (!fRepeatMethods.contains(name)) { - descriptors.add(new JavaPropertyDescriptor(name, (String) types.get(name), true, false)); - fRepeatMethods.add(name); - } - } - } - - private void filterGetMethods(List getMethods, List readable, HashMap types) throws JavaModelException { - IMethod temp; - String name; - String encodedReturnType; - String returnType; - Iterator it = getMethods.iterator(); - String[] encodedParams; - String paramType; - // iterate get* methods - while (it.hasNext()) { - temp = (IMethod) it.next(); - name = createPropertyNameFromMethod(temp); - // invalid bean naming convention - if (name == null) - continue; - - encodedReturnType = temp.getReturnType(); - returnType = getDecodedTypeName(encodedReturnType); - - // can't get be a getProperty if returns void - if (returnType.equals("void")) //$NON-NLS-1$ - continue; - - // check params in case it's indexed propety - encodedParams = temp.getParameterTypes(); - if (encodedParams != null && encodedParams.length == 1) { - paramType = getDecodedTypeName(encodedParams[0]); - // syntax is > Type getter(int); - if (!paramType.equals("int")) { //$NON-NLS-1$ - //it's not an indexed property - continue; - } - // it is indexed, prop type is an ARRAY - returnType += "[]"; //$NON-NLS-1$ - } - - readable.add(name); - types.put(name, returnType); - } - - } - - private void filterIsMethods(List isMethodResults, List readable, HashMap types) throws JavaModelException { - IMethod temp; - String name; - String encodedReturnType; - String returnType; - String[] encodedParams; - String paramType; - // iterate is* methods - Iterator it = isMethodResults.iterator(); - while (it.hasNext()) { - temp = (IMethod) it.next(); - name = createPropertyNameFromMethod(temp); - // invalid bean naming convention - if (name == null) - continue; - encodedReturnType = temp.getReturnType(); - returnType = getDecodedTypeName(encodedReturnType); - - // isProperty only valid for boolean - if (!returnType.equals("boolean")) //$NON-NLS-1$ - continue; - - // check params in case it's indexed propety - encodedParams = temp.getParameterTypes(); - if (encodedParams != null && encodedParams.length == 1) { - paramType = getDecodedTypeName(encodedParams[0]); - // syntax is > Type getter(int); - if (!paramType.equals("int")) { //$NON-NLS-1$ - //it's not a valid indexed property - continue; - } - } - - readable.add(name); - types.put(name, returnType); - } - } - - /** - * Pass in a get*|set*|is* method and it will return an inferred property name using <code>Introspector.decapitalize(String)</code> - * @param temp - * @return an inferred property name based on the IMethod name, null if the name is not valid according to bean spec - */ - private String createPropertyNameFromMethod(IMethod temp) { - String name = temp.getElementName(); - if (name.startsWith("is")) //$NON-NLS-1$ - name = Introspector.decapitalize(name.substring(2)); - else - // must be get or set - name = Introspector.decapitalize(name.substring(3)); - return name; - } - - /** - * Initial filtering of methods. Checks prefix if it's valid length. If the prefix is "get" the method name - * is placed in the getMethodResults List. If the prefix is "is", the name is added to the isMethodResults list. If the - * prefix is "set", it's added to the setMethodResultsList. - * - * @param getMethodResults - * @param isMethodResults - * @param setMethodResults - * @param method - */ - private void acceptMethod(List getMethodResults, List isMethodResults, List setMethodResults, IMethod method) throws JavaModelException { - if (!fRepeatMethods.contains(method.getElementName())) { - fRepeatMethods.add(method.getElementName()); - int flags = method.getFlags(); - String methodName = method.getElementName(); - if (Flags.isPublic(flags)) { - if (methodName.length() > 3 && methodName.startsWith("get")) //$NON-NLS-1$ - getMethodResults.add(method); - else if (methodName.length() > 2 && methodName.startsWith("is")) //$NON-NLS-1$ - isMethodResults.add(method); - else if (methodName.length() > 3 && methodName.startsWith("set")) //$NON-NLS-1$ - setMethodResults.add(method); - } - } - } - - /** - * @param typeName - * @return a Qualified name with the package as the qualifier, and class name as LocalName - */ - private QualifiedName getTypeQualifiedName(String typeName) { - StringTokenizer st = new StringTokenizer(typeName, ".", false); //$NON-NLS-1$ - int length = st.countTokens(); - int count = 0; - StringBuffer root = new StringBuffer(); - while (count++ < length - 1) { - root.append(st.nextToken()); - if (count < length - 1) - root.append('.'); - } - return new QualifiedName(root.toString(), st.nextToken()); - } - - /** - * Checks if encodedTypeName is an array - * @param encodedTypeName - * @return true if encodedTypeName is an array, false otherwise. - */ - private boolean isArray(String encodedTypeName) { - if (encodedTypeName != null && encodedTypeName.length() > 0) { - if (encodedTypeName.charAt(0) == '[') - return true; - } - return false; - } - - /** - * Returns the decoded (displayable) name fo the type. - * Either a primitive type (int, long, float...) Object (String) - * @param type - * @return decoded name for the encoded string - */ - private String getDecodedTypeName(String encoded) { - HashMap map = getEncodedTypeMap(); - - StringBuffer decoded = new StringBuffer(); - char BRACKET = '['; - String BRACKETS = "[]"; //$NON-NLS-1$ - char identifier = ' '; - int last = 0; - // count brackets - while (encoded.indexOf(BRACKET, last) != -1) { - last++; - } - identifier = encoded.charAt(last); - Object primitiveType = map.get(String.valueOf(identifier)); - // L > binary type name, Q > source type name - if (identifier == 'L' || identifier == 'Q') { - // handle object - String classname = encoded.substring(last + 1, encoded.length() - 1); - decoded.append(classname); - } - else if (primitiveType != null) { - // handle primitive type (from IField.getSignature()) - decoded.append((String) primitiveType); - } - else { - // handle primitive type (from Class.getName()) - decoded.append(encoded); - } - // handle arrays - if (last > 0) { - for (int i = 0; i < last; i++) { - decoded.append(BRACKETS); - } - } - return decoded.toString(); - } - - /** - * from Class.getName() javadoc - * also see Signature in jdt.core api - *<pre> - * B byte - * C char - * D double - * F float - * I int - * J long - * Lclassname; class or interface - * Qsourcename; source - * S short - * Z boolean - * V void - *</pre> - * - * @return the "encoding letter" to "type" map. - */ - private HashMap getEncodedTypeMap() { - if (fEncodedTypeMap == null) { - fEncodedTypeMap = new HashMap(); - fEncodedTypeMap.put("B", "byte"); //$NON-NLS-1$ //$NON-NLS-2$ - fEncodedTypeMap.put("C", "char"); //$NON-NLS-1$ //$NON-NLS-2$ - fEncodedTypeMap.put("D", "double"); //$NON-NLS-1$ //$NON-NLS-2$ - fEncodedTypeMap.put("F", "float"); //$NON-NLS-1$ //$NON-NLS-2$ - fEncodedTypeMap.put("I", "int"); //$NON-NLS-1$ //$NON-NLS-2$ - fEncodedTypeMap.put("J", "long"); //$NON-NLS-1$ //$NON-NLS-2$ - fEncodedTypeMap.put("S", "short"); //$NON-NLS-1$ //$NON-NLS-2$ - fEncodedTypeMap.put("Z", "boolean"); //$NON-NLS-1$ //$NON-NLS-2$ - fEncodedTypeMap.put("V", "void"); //$NON-NLS-1$ //$NON-NLS-2$ - } - return fEncodedTypeMap; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/CustomTemplateProposal.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/CustomTemplateProposal.java deleted file mode 100644 index d95c7fb187..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/CustomTemplateProposal.java +++ /dev/null @@ -1,42 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - * - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.contentassist; - -import org.eclipse.jface.text.IRegion; -import org.eclipse.jface.text.templates.Template; -import org.eclipse.jface.text.templates.TemplateContext; -import org.eclipse.jface.text.templates.TemplateProposal; -import org.eclipse.swt.graphics.Image; -import org.eclipse.wst.sse.core.internal.util.StringUtils; -import org.eclipse.wst.sse.ui.internal.contentassist.IRelevanceCompletionProposal; - -/** - * Purpose of this class is to make the additional proposal info into content - * fit for an HTML viewer (by escaping characters) - * - * @plannedfor 1.0 - */ -class CustomTemplateProposal extends TemplateProposal implements IRelevanceCompletionProposal { - // copies of this class exist in: - // org.eclipse.jst.jsp.ui.internal.contentassist - // org.eclipse.wst.html.ui.internal.contentassist - // org.eclipse.wst.xml.ui.internal.contentassist - - public CustomTemplateProposal(Template template, TemplateContext context, IRegion region, Image image, int relevance) { - super(template, context, region, image, relevance); - } - - public String getAdditionalProposalInfo() { - String additionalInfo = super.getAdditionalProposalInfo(); - return StringUtils.convertToHTMLContent(additionalInfo); - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/IBeanInfoProvider.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/IBeanInfoProvider.java deleted file mode 100644 index 7487e3cccb..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/IBeanInfoProvider.java +++ /dev/null @@ -1,20 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.contentassist; - -import org.eclipse.core.resources.IResource; - -/** - * @plannedfor 1.0 - */ -public interface IBeanInfoProvider { - IJavaPropertyDescriptor[] getRuntimeProperties(IResource baseResource, String typeName); -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/IJavaPropertyDescriptor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/IJavaPropertyDescriptor.java deleted file mode 100644 index 1606a2e4f4..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/IJavaPropertyDescriptor.java +++ /dev/null @@ -1,27 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.contentassist; - -/** - * @plannedfor 1.0 - */ -public interface IJavaPropertyDescriptor { - - String getDeclaredType(); - - String getDisplayName(); - - String getName(); - - boolean getReadable(); - - boolean getWriteable(); -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPCompletionProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPCompletionProcessor.java deleted file mode 100644 index 0741695bd8..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPCompletionProcessor.java +++ /dev/null @@ -1,273 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.contentassist; - -import java.util.HashMap; -import java.util.Iterator; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.Platform; -import org.eclipse.jdt.core.ICompilationUnit; -import org.eclipse.jface.text.ITextViewer; -import org.eclipse.jface.text.Position; -import org.eclipse.jface.text.contentassist.ICompletionProposal; -import org.eclipse.jface.text.contentassist.IContentAssistProcessor; -import org.eclipse.jst.jsp.core.internal.java.IJSPTranslation; -import org.eclipse.jst.jsp.core.internal.java.JSPTranslation; -import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapter; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; -import org.eclipse.jst.jsp.ui.internal.Logger; -import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager; -import org.eclipse.wst.sse.ui.internal.IReleasable; -import org.eclipse.wst.sse.ui.internal.StructuredTextViewer; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; -import org.osgi.framework.Bundle; -import org.osgi.framework.BundleException; - - -/** - * @plannedfor 1.0 - */ -public class JSPCompletionProcessor implements IContentAssistProcessor, IReleasable { - // for debugging - private static final boolean DEBUG; - static { - String value = Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jsptranslation"); //$NON-NLS-1$ - DEBUG = value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$ - } - - private static final String JDT_CORE_PLUGIN_ID = "org.eclipse.jdt.core"; //$NON-NLS-1$ - - protected int fJspSourcePosition, fJavaPosition; - protected String fErrorMessage = null; - protected StructuredTextViewer fViewer = null; - private JSPTranslationAdapter fTranslationAdapter = null; - - /** - * Returns a list of completion proposals based on the specified location - * within the document that corresponds to the current cursor position - * within the text viewer. - * - * @param viewer - * the viewer whose document is used to compute the proposals - * @param documentPosition - * an offset within the document for which completions should - * be computed - * @return an array of completion proposals or <code>null</code> if no - * proposals are possible - */ - public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int pos) { - initialize(pos); - - JSPProposalCollector collector = null; - - IDOMModel xmlModel = null; - try { - if (viewer instanceof StructuredTextViewer) - fViewer = (StructuredTextViewer) viewer; - - xmlModel = (IDOMModel) StructuredModelManager.getModelManager().getExistingModelForRead(fViewer.getDocument()); - - IDOMDocument xmlDoc = xmlModel.getDocument(); - if (fTranslationAdapter == null) - fTranslationAdapter = (JSPTranslationAdapter) xmlDoc.getAdapterFor(IJSPTranslation.class); - if (fTranslationAdapter != null) { - - JSPTranslation translation = fTranslationAdapter.getJSPTranslation(); - fJavaPosition = translation.getJavaOffset(getDocumentPosition()); - - if (DEBUG) - System.out.println(debug(translation)); - - try { - - ICompilationUnit cu = translation.getCompilationUnit(); - - // can't get java proposals w/out a compilation unit - // or without a valid position - if (cu == null || -1 == fJavaPosition) - return new ICompletionProposal[0]; - - collector = getProposalCollector(cu, translation); - synchronized (cu) { - cu.codeComplete(fJavaPosition, collector, null); - } - } - catch (CoreException coreEx) { - // a possible Java Model Exception due to not being a Web - // (Java) Project - coreEx.printStackTrace(); - } - } - } - catch (Exception exc) { - exc.printStackTrace(); - // throw out exceptions on code assist. - } - finally { - if (xmlModel != null) { - xmlModel.releaseFromRead(); - } - } - ICompletionProposal[] results = new ICompletionProposal[0]; - if(collector != null) { - results = collector.getJSPCompletionProposals(); - if (results == null || results.length < 1) - fErrorMessage = JSPUIMessages.Java_Content_Assist_is_not_UI_; - } - return results; - } - - protected JSPProposalCollector getProposalCollector(ICompilationUnit cu, JSPTranslation translation) { - return new JSPProposalCollector(cu, translation); - } - - /** - * For debugging translation mapping only. - * - * @param translation - */ - private String debug(JSPTranslation translation) { - StringBuffer debugString = new StringBuffer(); - HashMap jsp2java = translation.getJsp2JavaMap(); - String javaText = translation.getJavaText(); - String jspText = fViewer.getDocument().get(); - debugString.append("[jsp2JavaMap in JSPCompletionProcessor]\r\n"); //$NON-NLS-1$ - debugString.append("jsp cursor position >> " + fViewer.getTextWidget().getCaretOffset() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$ - Iterator it = jsp2java.keySet().iterator(); - while (it.hasNext()) { - try { - Position jspPos = (Position) it.next(); - Position javaPos = (Position) jsp2java.get(jspPos); - debugString.append("jsp > " + jspPos.offset + ":" + jspPos.length + ":" + jspText.substring(jspPos.offset, jspPos.offset + jspPos.length) + ":\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ - debugString.append("java > " + javaPos.offset + ":" + javaPos.length + ":" + javaText.substring(javaPos.offset, javaPos.offset + javaPos.length) + ":\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ - debugString.append("-------------------------------------------------\n"); //$NON-NLS-1$ - } - catch (Exception e) { - // eat exceptions, it's only for debug - } - } - return debugString.toString(); - } - - /** - * Returns information about possible contexts based on the specified - * location within the document that corresponds to the current cursor - * position within the text viewer. - * - * @param viewer - * the viewer whose document is used to compute the possible - * contexts - * @param documentPosition - * an offset within the document for which context information - * should be computed - * @return an array of context information objects or <code>null</code> - * if no context could be found - */ - public org.eclipse.jface.text.contentassist.IContextInformation[] computeContextInformation(org.eclipse.jface.text.ITextViewer viewer, int documentOffset) { - return null; - } - - /** - * Returns a string of characters which when pressed should automatically - * display content-assist proposals. - * - * @return string of characters - */ - public java.lang.String getAutoProposalInvocationCharacters() { - return null; - } - - /** - * Returns a string of characters which when pressed should automatically - * display a content-assist tip. - * - * @return string of characters - */ - public java.lang.String getAutoTipInvocationCharacters() { - return null; - } - - /** - * Returns the characters which when entered by the user should - * automatically trigger the presentation of possible completions. - * - * @return the auto activation characters for completion proposal or - * <code>null</code> if no auto activation is desired - */ - public char[] getCompletionProposalAutoActivationCharacters() { - return null; - } - - /** - * Returns the characters which when entered by the user should - * automatically trigger the presentation of context information. - * - * @return the auto activation characters for presenting context - * information or <code>null</code> if no auto activation is - * desired - */ - public char[] getContextInformationAutoActivationCharacters() { - return null; - } - - /** - * Returns a validator used to determine when displayed context - * information should be dismissed. May only return <code>null</code> if - * the processor is incapable of computing context information. - * - * @return a context information validator, or <code>null</code> if the - * processor is incapable of computing context information - */ - public org.eclipse.jface.text.contentassist.IContextInformationValidator getContextInformationValidator() { - return null; - } - - protected int getDocumentPosition() { - return fJspSourcePosition; - } - - public String getErrorMessage() { - // TODO: get appropriate error message - // if (fCollector.getErrorMessage() != null && - // fCollector.getErrorMessage().length() > 0) - // return fCollector.getErrorMessage(); - return fErrorMessage; - } - - /** - * Initialize the code assist processor. - */ - protected void initialize(int pos) { - initializeJavaPlugins(); - - fJspSourcePosition = pos; - fErrorMessage = null; - } - - /** - * Initialize the Java Plugins that the JSP processor requires. - */ - protected void initializeJavaPlugins() { - try { - Bundle bundle = Platform.getBundle(JDT_CORE_PLUGIN_ID); - bundle.start(); - } - catch (BundleException exc) { - Logger.logException("Could not initialize the JDT Plugins", exc);//$NON-NLS-1$ - } - } - - public void release() { - fTranslationAdapter = null; - } -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPCompletionProposal.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPCompletionProposal.java deleted file mode 100644 index e0e6c3bf7d..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPCompletionProposal.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.eclipse.jst.jsp.ui.internal.contentassist; - -import org.eclipse.jdt.ui.text.java.IJavaCompletionProposal; -import org.eclipse.jface.text.ITextViewer; -import org.eclipse.jface.text.contentassist.IContextInformation; -import org.eclipse.swt.graphics.Image; -import org.eclipse.wst.sse.ui.internal.contentassist.CustomCompletionProposal; - -/** - * Implements IJavaCompletionProposal for use with JSPProposalCollector. - * - * @plannedfor 1.0 - */ -public class JSPCompletionProposal extends CustomCompletionProposal implements IJavaCompletionProposal { - - public JSPCompletionProposal(String replacementString, int replacementOffset, int replacementLength, int cursorPosition, Image image, String displayString, IContextInformation contextInformation, String additionalProposalInfo, int relevance, boolean updateReplacementLengthOnValidate) { - super(replacementString, replacementOffset, replacementLength, cursorPosition, image, displayString, contextInformation, additionalProposalInfo, relevance, updateReplacementLengthOnValidate); - } - - /** - * Sets cursor position after applying. - */ - public void apply(ITextViewer viewer, char trigger, int stateMask, int offset) { - super.apply(viewer, trigger, stateMask, offset); - viewer.setSelectedRange(getCursorPosition(), 0); - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPContentAssistProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPContentAssistProcessor.java deleted file mode 100644 index de14905755..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPContentAssistProcessor.java +++ /dev/null @@ -1,1240 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.contentassist; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Vector; - -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.ITextViewer; -import org.eclipse.jface.text.TextUtilities; -import org.eclipse.jface.text.contentassist.ICompletionProposal; -import org.eclipse.jface.text.contentassist.IContentAssistProcessor; -import org.eclipse.jface.text.contentassist.IContextInformation; -import org.eclipse.jface.text.contentassist.IContextInformationValidator; -import org.eclipse.jst.jsp.core.internal.contentmodel.TaglibController; -import org.eclipse.jst.jsp.core.internal.contentmodel.tld.TLDCMDocumentManager; -import org.eclipse.jst.jsp.core.internal.document.PageDirectiveAdapter; -import org.eclipse.jst.jsp.core.internal.document.PageDirectiveAdapterFactory; -import org.eclipse.jst.jsp.core.internal.provisional.JSP11Namespace; -import org.eclipse.jst.jsp.core.internal.provisional.JSP12Namespace; -import org.eclipse.jst.jsp.core.internal.provisional.contenttype.ContentTypeIdForJSP; -import org.eclipse.jst.jsp.core.internal.provisional.text.IJSPPartitionTypes; -import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts; -import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin; -import org.eclipse.jst.jsp.ui.internal.Logger; -import org.eclipse.jst.jsp.ui.internal.editor.JSPEditorPluginImageHelper; -import org.eclipse.jst.jsp.ui.internal.editor.JSPEditorPluginImages; -import org.eclipse.jst.jsp.ui.internal.preferences.JSPUIPreferenceNames; -import org.eclipse.jst.jsp.ui.internal.templates.TemplateContextTypeIdsJSP; -import org.eclipse.wst.css.ui.internal.contentassist.CSSContentAssistProcessor; -import org.eclipse.wst.html.core.internal.contentmodel.HTMLCMDocumentFactory; -import org.eclipse.wst.html.core.internal.contentmodel.HTMLElementDeclaration; -import org.eclipse.wst.html.core.internal.contentmodel.JSPCMDocument; -import org.eclipse.wst.html.core.internal.provisional.HTMLCMProperties; -import org.eclipse.wst.html.core.internal.provisional.text.IHTMLPartitionTypes; -import org.eclipse.wst.html.ui.internal.contentassist.HTMLContentAssistProcessor; -import org.eclipse.wst.javascript.ui.internal.common.contentassist.JavaScriptContentAssistProcessor; -import org.eclipse.wst.sse.core.internal.ltk.parser.BlockMarker; -import org.eclipse.wst.sse.core.internal.provisional.IModelManager; -import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier; -import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; -import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion; -import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager; -import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument; -import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion; -import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredPartitionTypes; -import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredPartitioning; -import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion; -import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionContainer; -import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList; -import org.eclipse.wst.sse.core.internal.util.StringUtils; -import org.eclipse.wst.sse.ui.internal.IReleasable; -import org.eclipse.wst.sse.ui.internal.StructuredTextViewer; -import org.eclipse.wst.sse.ui.internal.contentassist.ContentAssistUtils; -import org.eclipse.wst.sse.ui.internal.contentassist.CustomCompletionProposal; -import org.eclipse.wst.sse.ui.internal.contentassist.IRelevanceCompletionProposal; -import org.eclipse.wst.sse.ui.internal.contentassist.IRelevanceConstants; -import org.eclipse.wst.sse.ui.internal.provisional.registry.AdapterFactoryProvider; -import org.eclipse.wst.sse.ui.internal.provisional.registry.AdapterFactoryRegistry; -import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument; -import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration; -import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap; -import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQuery; -import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQueryAction; -import org.eclipse.wst.xml.core.internal.modelquery.ModelQueryUtil; -import org.eclipse.wst.xml.core.internal.parser.XMLSourceParser; -import org.eclipse.wst.xml.core.internal.provisional.contentmodel.CMDocType; -import org.eclipse.wst.xml.core.internal.provisional.contentmodel.CMDocumentTracker; -import org.eclipse.wst.xml.core.internal.provisional.contentmodel.CMNodeWrapper; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode; -import org.eclipse.wst.xml.core.internal.provisional.text.IXMLPartitions; -import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext; -import org.eclipse.wst.xml.core.internal.ssemodelquery.ModelQueryAdapter; -import org.eclipse.wst.xml.ui.internal.contentassist.AbstractContentAssistProcessor; -import org.eclipse.wst.xml.ui.internal.contentassist.ContentAssistRequest; -import org.eclipse.wst.xml.ui.internal.contentassist.NonValidatingModelQueryAction; -import org.eclipse.wst.xml.ui.internal.contentassist.ProposalComparator; -import org.eclipse.wst.xml.ui.internal.contentassist.XMLContentAssistProcessor; -import org.eclipse.wst.xml.ui.internal.contentassist.XMLContentAssistUtilities; -import org.eclipse.wst.xml.ui.internal.contentassist.XMLRelevanceConstants; -import org.w3c.dom.Attr; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -/** - * Adds proposals not normally covered by the generic behavior with the - * content model - * - * @plannedfor 1.0 - */ -public class JSPContentAssistProcessor extends AbstractContentAssistProcessor { - - protected int depthCount = 0; - protected ITextViewer fViewer = null; - protected boolean useEmbeddedResults = true; - protected boolean isInternalAdapter = false; - protected HashMap fNameToProcessorMap = null; - protected HashMap fPartitionToProcessorMap = null; - private final ICompletionProposal[] EMPTY_PROPOSAL_SET = new ICompletionProposal[0]; - private JSPTemplateCompletionProcessor fTemplateProcessor = null; - private List fTemplateContexts = new ArrayList(); - - public JSPContentAssistProcessor() { - super(); - initNameToProcessorMap(); - initPartitionToProcessorMap(); - } - - /** - * init map for extra content assist processors (useBean, - * get/setProperty). points [tagname > processor] - */ - protected void initNameToProcessorMap() { - fNameToProcessorMap = new HashMap(); - JSPPropertyContentAssistProcessor jspPropertyCAP = new JSPPropertyContentAssistProcessor(); - fNameToProcessorMap.put(JSP11Namespace.ElementName.SETPROPERTY, jspPropertyCAP); - fNameToProcessorMap.put(JSP11Namespace.ElementName.GETPROPERTY, jspPropertyCAP); - fNameToProcessorMap.put(JSP11Namespace.ElementName.USEBEAN, new JSPUseBeanContentAssistProcessor()); - } - - /** - * int map that points [partition > processor]. This takes place of - * embedded adapters for now. - */ - protected void initPartitionToProcessorMap() { - fPartitionToProcessorMap = new HashMap(); - HTMLContentAssistProcessor htmlProcessor = new HTMLContentAssistProcessor(); - JSPJavaContentAssistProcessor jspJavaProcessor = new JSPJavaContentAssistProcessor(); - XMLContentAssistProcessor xmlProcessor = new XMLContentAssistProcessor(); - JavaScriptContentAssistProcessor javascriptProcessor = new JavaScriptContentAssistProcessor(); - - fPartitionToProcessorMap.put(IHTMLPartitionTypes.HTML_DEFAULT, htmlProcessor); - fPartitionToProcessorMap.put(IXMLPartitions.XML_DEFAULT, xmlProcessor); - fPartitionToProcessorMap.put(IStructuredPartitionTypes.DEFAULT_PARTITION, htmlProcessor); - fPartitionToProcessorMap.put(IJSPPartitionTypes.JSP_DEFAULT, jspJavaProcessor); - fPartitionToProcessorMap.put(IJSPPartitionTypes.JSP_DIRECTIVE, xmlProcessor); - fPartitionToProcessorMap.put(IHTMLPartitionTypes.HTML_COMMENT, htmlProcessor); - fPartitionToProcessorMap.put(IJSPPartitionTypes.JSP_CONTENT_JAVASCRIPT, javascriptProcessor); - fPartitionToProcessorMap.put(IJSPPartitionTypes.JSP_DEFAULT_EL, jspJavaProcessor); - fPartitionToProcessorMap.put(IHTMLPartitionTypes.SCRIPT, javascriptProcessor); // default - // to - // javascript - // for - // all - // script - } - - protected void addCommentProposal(ContentAssistRequest contentAssistRequest) { - // do nothing - } - - protected void addDocTypeProposal(ContentAssistRequest contentAssistRequest) { - // do nothing - } - - protected void addEmptyDocumentProposals(ContentAssistRequest contentAssistRequest) { - addTemplates(contentAssistRequest, TemplateContextTypeIdsJSP.NEW); - - super.addEmptyDocumentProposals(contentAssistRequest); - addTagInsertionProposals(contentAssistRequest, 0); - } - - protected void addEndTagNameProposals(ContentAssistRequest contentAssistRequest) { - // do nothing - } - - protected void addPCDATAProposal(String nodeName, ContentAssistRequest contentAssistRequest) { - // do nothing - } - - protected void addStartDocumentProposals(ContentAssistRequest contentAssistRequest) { - // do nothing - } - - protected void addTagCloseProposals(ContentAssistRequest contentAssistRequest) { - // do nothing - } - - protected void addXMLProposal(ContentAssistRequest contentAssistRequest) { - // do nothing - } - - protected void addEndTagProposals(ContentAssistRequest contentAssistRequest) { - // do nothing - } - - protected void addAttributeNameProposals(ContentAssistRequest contentAssistRequest) { - addTemplates(contentAssistRequest, TemplateContextTypeIdsJSP.ATTRIBUTE); - } - - /** - * add proposals for tags in attribute values - */ - protected void addAttributeValueProposals(ContentAssistRequest contentAssistRequest) { - addTemplates(contentAssistRequest, TemplateContextTypeIdsJSP.ATTRIBUTE_VALUE); - - IDOMNode node = (IDOMNode) contentAssistRequest.getNode(); - - // add JSP extra proposals from JSPBeanInfoContentAssistProcessor - // JSPPropertyContentAssistProcessor - - // 2.1 - // get results from JSPUseBean and JSPProperty here - // (look up processor in a map based on node name) - JSPDummyContentAssistProcessor extraProcessor = (JSPDummyContentAssistProcessor) fNameToProcessorMap.get(node.getNodeName()); - if (extraProcessor != null && contentAssistRequest != null) { - extraProcessor.addAttributeValueProposals(contentAssistRequest); - } - - ModelQuery mq = ModelQueryUtil.getModelQuery(node.getOwnerDocument()); - if (mq != null) { - CMDocument doc = mq.getCorrespondingCMDocument(node); - // this shouldn't have to have the prefix coded in - if (doc instanceof JSPCMDocument || doc instanceof CMNodeWrapper || node.getNodeName().startsWith("jsp:")) //$NON-NLS-1$ - return; - } - - // Find the attribute name for which this position should have a value - IStructuredDocumentRegion open = node.getFirstStructuredDocumentRegion(); - ITextRegionList openRegions = open.getRegions(); - int i = openRegions.indexOf(contentAssistRequest.getRegion()); - if (i < 0) - return; - ITextRegion nameRegion = null; - while (i >= 0) { - nameRegion = openRegions.get(i--); - if (nameRegion.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) - break; - } - - String attributeName = null; - if (nameRegion != null) - attributeName = open.getText(nameRegion); - String currentValue = null; - if (attributeName != null) - currentValue = node.getAttributes().getNamedItem(attributeName).getNodeValue(); - - // on an empty value, add all the JSP and taglib tags - if ((contentAssistRequest.getRegion().getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_EQUALS && contentAssistRequest.getReplacementLength() == 0) || (contentAssistRequest.getRegion().getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE && (currentValue == null || currentValue.length() == 0))) { - List rejectElements = new ArrayList(); - rejectElements.add(JSP12Namespace.ElementName.SCRIPTLET); - rejectElements.add(JSP12Namespace.ElementName.EXPRESSION); - rejectElements.add(JSP12Namespace.ElementName.DECLARATION); - rejectElements.add(JSP12Namespace.ElementName.DIRECTIVE_INCLUDE); - rejectElements.add(JSP12Namespace.ElementName.DIRECTIVE_PAGE); - rejectElements.add(JSP12Namespace.ElementName.DIRECTIVE_TAGLIB); - rejectElements.add(JSP12Namespace.ElementName.FALLBACK); - rejectElements.add(JSP12Namespace.ElementName.USEBEAN); - rejectElements.add(JSP12Namespace.ElementName.SETPROPERTY); - rejectElements.add(JSP12Namespace.ElementName.FORWARD); - rejectElements.add(JSP12Namespace.ElementName.PLUGIN); - rejectElements.add(JSP12Namespace.ElementName.FALLBACK); - rejectElements.add(JSP12Namespace.ElementName.PARAMS); - - List additionalElements = getAdditionalChildren(new ArrayList(), node, -1); - for (i = 0; i < additionalElements.size(); i++) { - CMElementDeclaration ed = (CMElementDeclaration) additionalElements.get(i); - if (rejectElements.contains(ed.getNodeName())) - continue; - String tagname = getContentGenerator().getRequiredName(node, ed); - StringBuffer contents = new StringBuffer("\""); //$NON-NLS-1$ - getContentGenerator().generateTag(node, ed, contents); - contents.append('"'); - CustomCompletionProposal proposal = new CustomCompletionProposal(contents.toString(), contentAssistRequest.getReplacementBeginPosition(), contentAssistRequest.getReplacementLength(), contents.length(), JSPEditorPluginImageHelper.getInstance().getImage(JSPEditorPluginImages.IMG_OBJ_TAG_GENERIC), tagname, null, null, XMLRelevanceConstants.R_JSP_ATTRIBUTE_VALUE); - contentAssistRequest.addProposal(proposal); - } - } - - else if (contentAssistRequest.getRegion().getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) { - try { - // Create a new model for Content Assist to operate on. This - // will simulate - // a full Document and then adjust the offset numbers in the - // list of results. - IStructuredModel internalModel = null; - IModelManager mmanager = StructuredModelManager.getModelManager(); - internalModel = mmanager.createUnManagedStructuredModelFor(ContentTypeIdForJSP.ContentTypeID_JSP); - IDOMNode xmlNode = null; - IDOMModel xmlOuterModel = null; - if (contentAssistRequest.getNode() instanceof IDOMNode) { - xmlNode = (IDOMNode) contentAssistRequest.getNode(); - xmlOuterModel = xmlNode.getModel(); - internalModel.setResolver(xmlOuterModel.getResolver()); - internalModel.setBaseLocation(xmlOuterModel.getBaseLocation()); - } - String contents = StringUtils.strip(contentAssistRequest.getText()); - if (xmlNode != null && contents != null) { - int additionalShifts = 0; - // Be sure that custom tags from taglibs also show up - // by - // adding taglib declarations to the internal model. - TLDCMDocumentManager mgr = TaglibController.getTLDCMDocumentManager(xmlOuterModel.getStructuredDocument()); - if (mgr != null) { - List trackers = mgr.getCMDocumentTrackers(contentAssistRequest.getReplacementBeginPosition()); - if (trackers != null) { - for (i = 0; i < trackers.size(); i++) { - CMDocumentTracker tracker = (CMDocumentTracker) trackers.get(i); - String declaration = tracker.getStructuredDocumentRegion().getText(); - if (declaration != null) { - contents = declaration + contents; - additionalShifts += declaration.length(); - } - } - } - } - // Also copy any jsp:useBean tags so that - // jsp:[gs]etProperty will function - Document doc = null; - if (contentAssistRequest.getNode().getNodeType() == Node.DOCUMENT_NODE) - doc = (Document) node; - else - doc = node.getOwnerDocument(); - NodeList useBeans = doc.getElementsByTagName(JSP12Namespace.ElementName.USEBEAN); - for (int k = 0; k < useBeans.getLength(); k++) { - IDOMNode useBean = (IDOMNode) useBeans.item(k); - if (useBean.getStartOffset() < contentAssistRequest.getReplacementBeginPosition()) { - StringBuffer useBeanText = new StringBuffer("<jsp:useBean"); //$NON-NLS-1$ - for (int j = 0; j < useBean.getAttributes().getLength(); j++) { - Attr attr = (Attr) useBean.getAttributes().item(j); - useBeanText.append(' '); - useBeanText.append(attr.getName()); - useBeanText.append("=\""); //$NON-NLS-1$ - useBeanText.append(attr.getValue()); - useBeanText.append('"'); - } - useBeanText.append("/>"); //$NON-NLS-1$ - additionalShifts += useBeanText.length(); - contents = useBeanText.toString() + contents; - } - } - internalModel.getStructuredDocument().set(contents); - int internalOffset = 0; - boolean quoted = false; - // if quoted, use position inside and shift by one - if (contentAssistRequest.getMatchString().length() > 0 && (contentAssistRequest.getMatchString().charAt(0) == '\'' || contentAssistRequest.getMatchString().charAt(0) == '"')) { - internalOffset = contentAssistRequest.getMatchString().length() - 1 + additionalShifts; - quoted = true; - } - // if unquoted, use position inside - else if (contentAssistRequest.getMatchString().length() > 0 && contentAssistRequest.getMatchString().charAt(0) == '<') - internalOffset = contentAssistRequest.getMatchString().length() + additionalShifts; - else - internalOffset = contentAssistRequest.getReplacementBeginPosition() - contentAssistRequest.getStartOffset() + additionalShifts; - depthCount++; - IndexedRegion internalNode = null; - int tmpOffset = internalOffset; - while (internalNode == null && tmpOffset >= 0) - internalNode = internalModel.getIndexedRegion(tmpOffset--); - - if (internalModel.getFactoryRegistry() != null) { - // set up the internal model - if (internalModel.getFactoryRegistry().getFactoryFor(PageDirectiveAdapter.class) == null) { - internalModel.getFactoryRegistry().addFactory(new PageDirectiveAdapterFactory()); - } - PageDirectiveAdapter outerEmbeddedTypeAdapter = (PageDirectiveAdapter) xmlOuterModel.getDocument().getAdapterFor(PageDirectiveAdapter.class); - PageDirectiveAdapter internalEmbeddedTypeAdapter = (PageDirectiveAdapter) ((INodeNotifier) ((Node) internalNode).getOwnerDocument()).getAdapterFor(PageDirectiveAdapter.class); - internalEmbeddedTypeAdapter.setEmbeddedType(outerEmbeddedTypeAdapter.getEmbeddedType()); - } - - AdapterFactoryRegistry adapterRegistry = JSPUIPlugin.getDefault().getAdapterFactoryRegistry(); - Iterator adapterList = adapterRegistry.getAdapterFactories(); - // And all those appropriate for this particular type - // of content - while (adapterList.hasNext()) { - try { - AdapterFactoryProvider provider = (AdapterFactoryProvider) adapterList.next(); - if (provider.isFor(internalModel.getModelHandler())) { - provider.addAdapterFactories(internalModel); - } - } catch (Exception e) { - Logger.logException(e); - } - } - - /** - * the internal adapter does all the real work of using - * the JSP content model to form proposals - */ - ICompletionProposal[] results = null; - depthCount--; - if (results != null) { - for (i = 0; i < results.length; i++) { - contentAssistRequest.addProposal(new CustomCompletionProposal(((CustomCompletionProposal) results[i]).getReplacementString(), ((CustomCompletionProposal) results[i]).getReplacementOffset() - additionalShifts + contentAssistRequest.getStartOffset() + (quoted ? 1 : 0), ((CustomCompletionProposal) results[i]).getReplacementLength(), ((CustomCompletionProposal) results[i]).getCursorPosition(), results[i].getImage(), results[i].getDisplayString(), ((CustomCompletionProposal) results[i]).getContextInformation(), ((CustomCompletionProposal) results[i]).getAdditionalProposalInfo(), (results[i] instanceof IRelevanceCompletionProposal) ? ((IRelevanceCompletionProposal) results[i]).getRelevance() : IRelevanceConstants.R_NONE)); - } - } - } - } catch (Exception e) { - Logger.logException("Error in embedded JSP Content Assist", e); //$NON-NLS-1$ - } - } - - - } - - private List getAdditionalChildren(List elementDecls, Node node, int childIndex) { - if (node instanceof IDOMNode) { - /* - * find the location of the intended insertion as it will give us - * the correct offset for checking position dependent CMDocuments - */ - int textInsertionOffset = 0; - NodeList children = node.getChildNodes(); - if (children.getLength() >= childIndex && childIndex >= 0) { - Node nodeAlreadyAtIndex = children.item(childIndex); - if (nodeAlreadyAtIndex instanceof IDOMNode) - textInsertionOffset = ((IDOMNode) nodeAlreadyAtIndex).getEndOffset(); - } else { - textInsertionOffset = ((IDOMNode) node).getStartOffset(); - } - TLDCMDocumentManager mgr = TaglibController.getTLDCMDocumentManager(((IDOMNode) node).getStructuredDocument()); - if (mgr != null) { - List moreCMDocuments = mgr.getCMDocumentTrackers(textInsertionOffset); - if (moreCMDocuments != null) { - for (int i = 0; i < moreCMDocuments.size(); i++) { - CMDocument doc = (CMDocument) moreCMDocuments.get(i); - CMNamedNodeMap elements = doc.getElements(); - if (elements != null) { - for (int j = 0; j < elements.getLength(); j++) { - CMElementDeclaration ed = (CMElementDeclaration) elements.item(j); - elementDecls.add(ed); - } - } - } - } - } - - // get position dependent CMDocuments and insert their tags as - // proposals - - ModelQueryAdapter mqAdapter = null; - if (node.getNodeType() == Node.DOCUMENT_NODE) - mqAdapter = (ModelQueryAdapter) ((IDOMNode) node).getAdapterFor(ModelQueryAdapter.class); - else - mqAdapter = (ModelQueryAdapter) ((IDOMNode) node.getOwnerDocument()).getAdapterFor(ModelQueryAdapter.class); - - if (mqAdapter != null) { - CMDocument doc = mqAdapter.getModelQuery().getCorrespondingCMDocument(node); - // this shouldn't have to have the prefix coded in - if (!(doc != null && (doc instanceof JSPCMDocument || doc instanceof CMNodeWrapper || node.getNodeName().startsWith("jsp:")))) { //$NON-NLS-1$ - // get jsp namespace elements and insert their contents - CMDocument JCMDoc = HTMLCMDocumentFactory.getCMDocument(CMDocType.JSP11_DOC_TYPE); - CMNamedNodeMap jspelements = JCMDoc.getElements(); - - if (jspelements != null) { - List rejectElements = new ArrayList(); - - // determine if the document is in XML form - Document domDoc = null; - if (node.getNodeType() == Node.DOCUMENT_NODE) - domDoc = (Document) node; - else - domDoc = node.getOwnerDocument(); - // Show XML tag forms of JSP markers if jsp:root is - // the document element OR it's HTML but - // isn't really in the text. - // If the document isn't strictly XML, pull out the - // XML tag forms - if (!isXMLFormat(domDoc)) { - rejectElements.add(JSP12Namespace.ElementName.SCRIPTLET); - rejectElements.add(JSP12Namespace.ElementName.EXPRESSION); - rejectElements.add(JSP12Namespace.ElementName.DECLARATION); - rejectElements.add(JSP12Namespace.ElementName.DIRECTIVE_INCLUDE); - rejectElements.add(JSP12Namespace.ElementName.DIRECTIVE_PAGE); - rejectElements.add(JSP12Namespace.ElementName.TEXT); - } - // always exclude jsp:directive.taglib - if (isInternalAdapter) { - rejectElements.add(JSP12Namespace.ElementName.DIRECTIVE_TAGLIB); - rejectElements.add(JSP12Namespace.ElementName.DIRECTIVE_TAGLIB); - rejectElements.add(JSP12Namespace.ElementName.FALLBACK); - rejectElements.add(JSP12Namespace.ElementName.USEBEAN); - rejectElements.add(JSP12Namespace.ElementName.SETPROPERTY); - rejectElements.add(JSP12Namespace.ElementName.FORWARD); - rejectElements.add(JSP12Namespace.ElementName.PLUGIN); - rejectElements.add(JSP12Namespace.ElementName.FALLBACK); - rejectElements.add(JSP12Namespace.ElementName.PARAMS); - } - - // don't show jsp:root if a document element already - // exists - Element docElement = domDoc.getDocumentElement(); - if (docElement != null && ((docElement.getNodeName().equals("jsp:root")) || ((((IDOMNode) docElement).getStartStructuredDocumentRegion() != null || ((IDOMNode) docElement).getEndStructuredDocumentRegion() != null)))) //$NON-NLS-1$ - rejectElements.add(JSP12Namespace.ElementName.ROOT); - - for (int j = 0; j < jspelements.getLength(); j++) { - CMElementDeclaration ed = (CMElementDeclaration) jspelements.item(j); - if (rejectElements.contains(ed.getNodeName())) - continue; - elementDecls.add(ed); - } - } - } - } - } - return elementDecls; - } - - protected List getAvailableChildrenAtIndex(Element parent, int index, int validityChecking) { - List list = new ArrayList(); - List additionalElements = getAdditionalChildren(new ArrayList(), parent, index); - for (int i = 0; i < additionalElements.size(); i++) { - ModelQueryAction insertAction = new NonValidatingModelQueryAction((CMElementDeclaration) additionalElements.get(i), ModelQueryAction.INSERT, 0, parent.getChildNodes().getLength(), null); - list.add(insertAction); - } - - // add allowed children of implicit tags that don't already exist - NodeList children = parent.getChildNodes(); - List childNames = new ArrayList(); - if (children != null) { - for (int i = 0; i < children.getLength(); i++) { - Node child = children.item(i); - if (child.getNodeType() == Node.ELEMENT_NODE) - childNames.add(child.getNodeName().toLowerCase()); - } - } - List allActions = new ArrayList(); - Iterator iterator = list.iterator(); - ModelQuery modelQuery = ModelQueryUtil.getModelQuery(parent.getOwnerDocument()); - while (iterator.hasNext()) { - ModelQueryAction action = (ModelQueryAction) iterator.next(); - allActions.add(action); - if (action.getCMNode() instanceof HTMLElementDeclaration) { - HTMLElementDeclaration ed = (HTMLElementDeclaration) action.getCMNode(); - String ommission = (String) ed.getProperty(HTMLCMProperties.OMIT_TYPE); - if (!childNames.contains(ed.getNodeName().toLowerCase()) && ((ommission != null) && (ommission.equals(HTMLCMProperties.Values.OMIT_BOTH)))) { - List implicitValidActions = new ArrayList(); - modelQuery.getInsertActions(parent, ed, 0, ModelQuery.INCLUDE_CHILD_NODES, ModelQuery.VALIDITY_NONE, implicitValidActions); - if (implicitValidActions != null) { - Iterator implicitValidActionsIterator = implicitValidActions.iterator(); - while (implicitValidActionsIterator.hasNext()) { - ModelQueryAction insertAction = new NonValidatingModelQueryAction(((ModelQueryAction) implicitValidActionsIterator.next()).getCMNode(), ModelQueryAction.INSERT, 0, parent.getChildNodes().getLength(), null); - allActions.add(insertAction); - } - } - } - } - } - return allActions; - } - - protected List getAvailableRootChildren(Document document, int childIndex) { - List list = new ArrayList(); - if (!isXMLFormat(document)) - getAdditionalChildren(list, document, childIndex); - return list; - } - - protected void init() { - super.init(); - } - - public void setErrorMessage(String errorMessage) { - if (depthCount == 0) - fErrorMessage = errorMessage; - } - - /** - * This method is acting as a "catch all" for pulling together content - * assist proposals from different Processors when document partitioning - * alone couldn't determine definitively what content assist should show - * up at that particular position in the document - * - * @see org.eclipse.jface.text.contentassist.IContentAssistProcessor#computeCompletionProposals(ITextViewer, - * int) - */ - public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int documentPosition) { - fTemplateContexts.clear(); - - IStructuredDocumentRegion sdRegion = ContentAssistUtils.getStructuredDocumentRegion((StructuredTextViewer) viewer, documentPosition); - fViewer = viewer; - ICompletionProposal[] jspResults = EMPTY_PROPOSAL_SET; - ICompletionProposal[] embeddedResults = EMPTY_PROPOSAL_SET; - - // check the actual partition type - String partitionType = getPartitionType((StructuredTextViewer) viewer, documentPosition); - IStructuredDocument structuredDocument = (IStructuredDocument)viewer.getDocument(); - - IStructuredDocumentRegion fn = structuredDocument.getRegionAtCharacterOffset(documentPosition); - - // //////////////////////////////////////////////////////////////////////////// - // ANOTHER WORKAROUND UNTIL PARTITIONING TAKES CARE OF THIS - // check for xml-jsp tags... - if (partitionType == IJSPPartitionTypes.JSP_DIRECTIVE && fn != null) { - IStructuredDocumentRegion possibleXMLJSP = ((fn.getType() == DOMRegionContext.XML_CONTENT) && fn.getPrevious() != null) ? fn.getPrevious() : fn; - ITextRegionList regions = possibleXMLJSP.getRegions(); - if (regions.size() > 1) { - // check bounds cases - ITextRegion xmlOpenOrClose = regions.get(0); - if (xmlOpenOrClose.getType() == DOMRegionContext.XML_TAG_OPEN && documentPosition == possibleXMLJSP.getStartOffset()) { - // do regular jsp content assist - } else if (xmlOpenOrClose.getType() == DOMRegionContext.XML_END_TAG_OPEN && documentPosition > possibleXMLJSP.getStartOffset()) { - // do regular jsp content assist - } else { - // possible xml-jsp - ITextRegion nameRegion = regions.get(1); - String name = possibleXMLJSP.getText(nameRegion); - if (name.equals("jsp:scriptlet") || name.equals("jsp:expression") || name.equals("jsp:declaration")) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - return getJSPJavaCompletionProposals(viewer, documentPosition); - } - } - } - } - - // //////////////////////////////////////////////////////////////////////////// - // ** THIS IS A TEMP FIX UNTIL PARTITIONING TAKES CARE OF THIS... - // check for XML-JSP in a <script> region - if (partitionType == IJSPPartitionTypes.JSP_CONTENT_JAVASCRIPT || partitionType == IHTMLPartitionTypes.SCRIPT) { - // fn should be block text - IStructuredDocumentRegion decodedSDRegion = decodeScriptBlock(fn.getFullText()); - // System.out.println("decoded > " + - // blockOfText.substring(decodedSDRegion.getStartOffset(), - // decodedSDRegion.getEndOffset())); - if (decodedSDRegion != null) { - IStructuredDocumentRegion sdr = decodedSDRegion; - while (sdr != null) { - // System.out.println("sdr " + sdr.getType()); - // System.out.println("sdr > " + - // blockOfText.substring(sdr.getStartOffset(), - // sdr.getEndOffset())); - if (sdr.getType() == DOMJSPRegionContexts.JSP_CONTENT) { - if (documentPosition >= fn.getStartOffset() + sdr.getStartOffset() && documentPosition <= fn.getStartOffset() + sdr.getEndOffset()) { - return getJSPJavaCompletionProposals(viewer, documentPosition); - } - } else if (sdr.getType() == DOMRegionContext.XML_TAG_NAME) { - if (documentPosition > fn.getStartOffset() + sdr.getStartOffset() && documentPosition < fn.getStartOffset() + sdr.getEndOffset()) { - return EMPTY_PROPOSAL_SET; - } else if (documentPosition == fn.getStartOffset() + sdr.getEndOffset() && sdr.getNext() != null && sdr.getNext().getType() == DOMJSPRegionContexts.JSP_CONTENT) { - // the end of an open tag <script> - // <jsp:scriptlet>| blah </jsp:scriptlet> - return getJSPJavaCompletionProposals(viewer, documentPosition); - } else if (documentPosition == fn.getStartOffset() + sdr.getStartOffset() && sdr.getPrevious() != null && sdr.getPrevious().getType() == DOMRegionContext.XML_TAG_NAME) { - return getJSPJavaCompletionProposals(viewer, documentPosition); - } - } - sdr = sdr.getNext(); - } - } - } - // ///////////////////////////////////////////////////////////////////////// - // check special JSP delimiter cases - if (fn != null && partitionType == IJSPPartitionTypes.JSP_CONTENT_DELIMITER) { - IStructuredDocumentRegion fnDelim = fn; - - // if it's a nested JSP region, need to get the correct - // StructuredDocumentRegion - // not sure why this check was there... - // if (fnDelim.getType() == XMLRegionContext.BLOCK_TEXT) { - Iterator blockRegions = fnDelim.getRegions().iterator(); - ITextRegion temp = null; - ITextRegionContainer trc; - while (blockRegions.hasNext()) { - temp = (ITextRegion) blockRegions.next(); - // we hit a nested - if (temp instanceof ITextRegionContainer) { - trc = (ITextRegionContainer) temp; - // it's in this region - if (documentPosition >= trc.getStartOffset() && documentPosition < trc.getEndOffset()) { - Iterator nestedJSPRegions = trc.getRegions().iterator(); - while (nestedJSPRegions.hasNext()) { - temp = (ITextRegion) nestedJSPRegions.next(); - if (XMLContentAssistUtilities.isJSPOpenDelimiter(temp.getType()) && documentPosition == trc.getStartOffset(temp)) { - // HTML content assist - // we actually want content assist for the - // previous type of region, - // well get those proposals from the embedded - // adapter - if (documentPosition > 0) { - partitionType = getPartitionType((StructuredTextViewer) viewer, documentPosition - 1); - break; - } - } else if (XMLContentAssistUtilities.isJSPCloseDelimiter(temp.getType()) && documentPosition == trc.getStartOffset(temp)) { - // JSP content assist - return getJSPJavaCompletionProposals(viewer, documentPosition); - } - } - } - } - // } - } - - // take care of XML-JSP delimter cases - if (XMLContentAssistUtilities.isXMLJSPDelimiter(fnDelim)) { - // since it's a delimiter, we know it's a ITextRegionContainer - ITextRegion firstRegion = fnDelim.getRegions().get(0); - if (fnDelim.getStartOffset() == documentPosition && (firstRegion.getType() == DOMRegionContext.XML_TAG_OPEN)) { - // |<jsp:scriptlet> </jsp:scriptlet> - // (pa) commented out so that we get regular behavior JSP - // macros etc... - // return getHTMLCompletionProposals(viewer, - // documentPosition); - } else if (fnDelim.getStartOffset() == documentPosition && (firstRegion.getType() == DOMRegionContext.XML_END_TAG_OPEN)) { - // <jsp:scriptlet> |</jsp:scriptlet> - // check previous partition type to see if it's JAVASCRIPT - // if it is, we're just gonna let the embedded JAVASCRIPT - // adapter get the proposals - if (documentPosition > 0) { - String checkType = getPartitionType((StructuredTextViewer) viewer, documentPosition - 1); - if (checkType != IJSPPartitionTypes.JSP_CONTENT_JAVASCRIPT) { // this - // check - // is - // failing - // for - // XML-JSP - // (region - // is - // not - // javascript...) - return getJSPJavaCompletionProposals(viewer, documentPosition); - } - partitionType = IJSPPartitionTypes.JSP_CONTENT_JAVASCRIPT; - } - } else if ((firstRegion.getType() == DOMRegionContext.XML_TAG_OPEN) && documentPosition >= fnDelim.getEndOffset()) { - // anything else inbetween - return getJSPJavaCompletionProposals(viewer, documentPosition); - } - } else if (XMLContentAssistUtilities.isJSPDelimiter(fnDelim)) { - // the delimiter <%, <%=, <%!, ... - if (XMLContentAssistUtilities.isJSPCloseDelimiter(fnDelim)) { - if (documentPosition == fnDelim.getStartOffset()) { - // check previous partition type to see if it's - // JAVASCRIPT - // if it is, we're just gonna let the embedded - // JAVASCRIPT adapter get the proposals - if (documentPosition > 0) { - String checkType = getPartitionType((StructuredTextViewer) viewer, documentPosition - 1); - if (checkType != IJSPPartitionTypes.JSP_CONTENT_JAVASCRIPT) { - return getJSPJavaCompletionProposals(viewer, documentPosition); - } - partitionType = IJSPPartitionTypes.JSP_CONTENT_JAVASCRIPT; - } - } - } else if (XMLContentAssistUtilities.isJSPOpenDelimiter(fnDelim)) { - // if it's the first position of open delimiter - // use embedded HTML results - if (documentPosition == fnDelim.getStartOffset()) { - embeddedResults = getHTMLCompletionProposals(viewer, documentPosition); - } else if (documentPosition == fnDelim.getEndOffset()) { - // it's at the EOF <%| - return getJSPJavaCompletionProposals(viewer, documentPosition); - } - } - } - } - - // need to check if it's JSP region inside of CDATA w/ no region - // <![CDATA[ <%|%> ]]> - // or a comment region - // <!-- <% |%> --> - if (fn != null && (fn.getType() == DOMRegionContext.XML_CDATA_TEXT || fn.getType() == DOMRegionContext.XML_COMMENT_TEXT)) { - if (fn instanceof ITextRegionContainer) { - Object[] cdataRegions = fn.getRegions().toArray(); - ITextRegion r = null; - ITextRegion jspRegion = null; - for (int i = 0; i < cdataRegions.length; i++) { - r = (ITextRegion) cdataRegions[i]; - if (r instanceof ITextRegionContainer) { - // CDATA embedded container, or comment container - Object[] jspRegions = ((ITextRegionContainer) r).getRegions().toArray(); - for (int j = 0; j < jspRegions.length; j++) { - jspRegion = (ITextRegion) jspRegions[j]; - if (jspRegion.getType() == DOMJSPRegionContexts.JSP_CLOSE) { - if (sdRegion.getStartOffset(jspRegion) == documentPosition) - return getJSPJavaCompletionProposals(viewer, documentPosition); - } - } - } - } - - } - } - - // check if it's in an attribute value, if so, don't add CDATA - // proposal - ITextRegion attrContainer = (fn != null) ? fn.getRegionAtCharacterOffset(documentPosition) : null; - if (attrContainer != null && attrContainer instanceof ITextRegionContainer) { - if (attrContainer.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) { - // test location of the cursor - // return null if it's in the middle of an open/close - // delimeter - Iterator attrRegions = ((ITextRegionContainer) attrContainer).getRegions().iterator(); - ITextRegion testRegion = null; - while (attrRegions.hasNext()) { - testRegion = (ITextRegion) attrRegions.next(); - // need to check for other valid attribute regions - if (XMLContentAssistUtilities.isJSPOpenDelimiter(testRegion.getType())) { - if (!(((ITextRegionContainer) attrContainer).getEndOffset(testRegion) <= documentPosition)) - return EMPTY_PROPOSAL_SET; - } else if (XMLContentAssistUtilities.isJSPCloseDelimiter(testRegion.getType())) { - if (!(((ITextRegionContainer) attrContainer).getStartOffset(testRegion) >= documentPosition)) - return EMPTY_PROPOSAL_SET; - } - } - // TODO: handle non-Java code such as nested tags - if (testRegion.getType().equals(DOMJSPRegionContexts.JSP_CONTENT)) - return getJSPJavaCompletionProposals(viewer, documentPosition); - return EMPTY_PROPOSAL_SET; - } - } - - IContentAssistProcessor p = (IContentAssistProcessor) fPartitionToProcessorMap.get(partitionType); - if (p != null) { - embeddedResults = p.computeCompletionProposals(viewer, documentPosition); - // get bean methods, objects, and constants if there are any... - if (partitionType == IJSPPartitionTypes.JSP_CONTENT_JAVASCRIPT || partitionType == IHTMLPartitionTypes.SCRIPT) { - ICompletionProposal[] beanResults = getJSPJavaBeanProposals(viewer, documentPosition); - if (beanResults != null && beanResults.length > 0) { - ICompletionProposal[] added = new ICompletionProposal[beanResults.length + embeddedResults.length]; - System.arraycopy(beanResults, 0, added, 0, beanResults.length); - System.arraycopy(embeddedResults, 0, added, beanResults.length, embeddedResults.length); - embeddedResults = added; - } - } - } else { - // the partition type is probably not mapped - } - - // fix for: - // HTML content assist give JSP tags in between empty script tags - if (!(p instanceof JavaScriptContentAssistProcessor || p instanceof CSSContentAssistProcessor)) { - fTemplateContexts.clear(); - jspResults = super.computeCompletionProposals(viewer, documentPosition); - } - if (useEmbeddedResults) { - if (embeddedResults != null && embeddedResults.length > 0) { - List results = new ArrayList(); - for (int i = 0; i < embeddedResults.length; i++) - results.add(embeddedResults[i]); - if (jspResults != null) { - for (int i = 0; i < jspResults.length; i++) - results.add(jspResults[i]); - } - jspResults = new ICompletionProposal[results.size()]; - Collections.sort(results, new ProposalComparator()); - for (int i = 0; i < results.size(); i++) - jspResults[i] = (ICompletionProposal) results.get(i); - - } - } - if (jspResults == null) - jspResults = EMPTY_PROPOSAL_SET; - setErrorMessage(jspResults.length == 0 ? UNKNOWN_CONTEXT : null); - - // fix for: - // check for |<%-- --%> first position of jsp comment - if (partitionType == IJSPPartitionTypes.JSP_COMMENT) { - if (sdRegion.getStartOffset() == documentPosition) { - ICompletionProposal[] htmlResults = getHTMLCompletionProposals(viewer, documentPosition); - jspResults = merge(jspResults, htmlResults); - } - } - - // https://bugs.eclipse.org/bugs/show_bug.cgi?id=86656 - if(partitionType == IJSPPartitionTypes.JSP_DIRECTIVE) { - ICompletionProposal[] importProposals = getImportProposals(viewer, documentPosition); - if(importProposals.length > 0) - jspResults = merge(jspResults, importProposals); - } - return jspResults; - } - - private ICompletionProposal[] getImportProposals(ITextViewer viewer, int documentPosition) { - List importProposals = new ArrayList(); - ICompletionProposal[] proposals = getJSPJavaCompletionProposals(viewer, documentPosition); - for (int i = 0; i < proposals.length; i++) { - if(proposals[i] instanceof JSPCompletionProposal) { - - ICompletionProposal importProposal = adjustImportProposal((JSPCompletionProposal)proposals[i]); - importProposals.add(importProposal); - } - } - return (ICompletionProposal[])importProposals.toArray(new ICompletionProposal[importProposals.size()]); - } - - - private ICompletionProposal adjustImportProposal(JSPCompletionProposal importProposal) { - - // just need to remove the ";" - // and adjust offsets for the change - String newReplace = importProposal.getReplacementString().replaceAll(";", ""); - importProposal.setReplacementString(newReplace); - - String newDisplay = importProposal.getDisplayString().replaceAll(";", ""); - importProposal.setDisplayString(newDisplay); - - int newReplacementLength = importProposal.getReplacementLength()-1; - importProposal.setReplacementLength(newReplacementLength); - - int newCursorPosition = importProposal.getCursorPosition() - 1; - importProposal.setCursorPosition(newCursorPosition); - - return importProposal; - } - - /** - * Adds 2 arrays of ICompletionProposals and sorts them with a - * ProposalComparator. - * - * @param jspResults - * @param htmlResults - * @return - */ - private ICompletionProposal[] merge(ICompletionProposal[] jspResults, ICompletionProposal[] htmlResults) { - List results = new ArrayList(); - List jsps = Arrays.asList(jspResults); - List htmls = Arrays.asList(htmlResults); - - results.addAll(jsps); - results.addAll(htmls); - - Collections.sort(results, new ProposalComparator()); - return (ICompletionProposal[]) results.toArray(new ICompletionProposal[results.size()]); - } - - /* - * This method will return JSPJava Proposals that are relevant to any java - * beans that in scope at the documentPosition - * - * TODO (pa) are taglib vars getting filtered? - * - * @param viewer @param documentPosition @return ICompletionProposal[] - */ - private ICompletionProposal[] getJSPJavaBeanProposals(ITextViewer viewer, int documentPosition) { - ICompletionProposal[] regularJSPResults = getJSPJavaCompletionProposals(viewer, documentPosition); - Vector filteredProposals = new Vector(); - ICompletionProposal[] finalResults = EMPTY_PROPOSAL_SET; - for (int i = 0; i < regularJSPResults.length; i++) { - ICompletionProposal test = regularJSPResults[i]; - - System.out.println("proposal > " + test.getDisplayString()); //$NON-NLS-1$ - System.out.println("relevance > " + ((CustomCompletionProposal) test).getRelevance()); //$NON-NLS-1$ - - if (isRelevanceAllowed(((CustomCompletionProposal) test).getRelevance())) { - filteredProposals.add(test); - } - } - if (filteredProposals.size() > 0) { - finalResults = new ICompletionProposal[filteredProposals.size()]; - Iterator it = filteredProposals.iterator(); - int j = 0; - while (it.hasNext()) { - finalResults[j++] = (ICompletionProposal) it.next(); - } - } - return finalResults; - } - - // These are the only things I'm allowing for use bean if the language is - // JAVASCRIPT - // I'm filtering based on JavaContentAssistProposal relevance - // - // 485 > method that belongs to the bean - // 486 > bean object - // 386 > bean CONSTANT - private boolean isRelevanceAllowed(int relevance) { - return (relevance == 485 || relevance == 486 || relevance == 326); - } - - - /** - * - * @param viewer - * @param documentPosition - * @return ICompletionProposal[] - */ - private ICompletionProposal[] getHTMLCompletionProposals(ITextViewer viewer, int documentPosition) { - - IContentAssistProcessor p = (IContentAssistProcessor) fPartitionToProcessorMap.get(IHTMLPartitionTypes.HTML_DEFAULT); - return p.computeCompletionProposals(viewer, documentPosition); - } - - /** - * - * @param viewer - * @param documentPosition - * @return ICompletionProposal[] - */ - protected ICompletionProposal[] getJSPJavaCompletionProposals(ITextViewer viewer, int documentPosition) { - JSPJavaContentAssistProcessor p = (JSPJavaContentAssistProcessor) fPartitionToProcessorMap.get(IJSPPartitionTypes.JSP_DEFAULT); - return p.computeCompletionProposals(viewer, documentPosition); - } - - /** - * @param viewer - * @param documentPosition - * @return String - */ - protected String getPartitionType(StructuredTextViewer viewer, int documentPosition) { - String partitionType = null; - try { - partitionType = TextUtilities.getContentType(viewer.getDocument(), IStructuredPartitioning.DEFAULT_STRUCTURED_PARTITIONING, viewer.modelOffset2WidgetOffset(documentPosition), false); - } catch (BadLocationException e) { - partitionType = IDocument.DEFAULT_CONTENT_TYPE; - } - return partitionType; - } - - /* - * ** TEMP WORKAROUND FOR CMVC 241882 Takes a String and blocks out - * jsp:scriptlet, jsp:expression, and jsp:declaration @param blockText - * @return - */ - private IStructuredDocumentRegion decodeScriptBlock(String blockText) { - XMLSourceParser parser = new XMLSourceParser(); - // use JSP_CONTENT for region type - parser.addBlockMarker(new BlockMarker("jsp:scriptlet", null, DOMJSPRegionContexts.JSP_CONTENT, false, false)); //$NON-NLS-1$ - parser.addBlockMarker(new BlockMarker("jsp:expression", null, DOMJSPRegionContexts.JSP_CONTENT, false, false)); //$NON-NLS-1$ - parser.addBlockMarker(new BlockMarker("jsp:declaration", null, DOMJSPRegionContexts.JSP_CONTENT, false, false)); //$NON-NLS-1$ - parser.reset(blockText); - return parser.getDocumentRegions(); - } - - /* - * @see ContentAssistAdapter#computeContextInformation(ITextViewer, int, - * IndexedRegion) - */ - public IContextInformation[] computeContextInformation(ITextViewer viewer, int documentOffset, IndexedRegion indexedNode) { - return super.computeContextInformation(viewer, documentOffset); - } - - /* - * @see ContentAssistAdapter#getContextInformationAutoActivationCharacters() - */ - public char[] getContextInformationAutoActivationCharacters() { - return super.getContextInformationAutoActivationCharacters(); - } - - - public char[] getCompletionProposalAutoActivationCharacters() { - IPreferenceStore store = JSPUIPlugin.getDefault().getPreferenceStore(); - String key = JSPUIPreferenceNames.AUTO_PROPOSE_CODE; - - String chars = store.getString(key); - return (chars != null) ? chars.toCharArray() : new char[0]; - } - - /* - * @see ContentAssistAdapter#getContextInformationValidator() - */ - public IContextInformationValidator getContextInformationValidator() { - return super.getContextInformationValidator(); - } - - protected boolean isXMLFormat(Document doc) { - if (doc == null) - return false; - Element docElement = doc.getDocumentElement(); - return docElement != null && ((docElement.getNodeName().equals("jsp:root")) || ((((IDOMNode) docElement).getStartStructuredDocumentRegion() == null && ((IDOMNode) docElement).getEndStructuredDocumentRegion() == null))); //$NON-NLS-1$ - } - - /* - * @see ContentAssistAdapter#release() - */ - public void release() { - super.release(); - // release *ContentAssistProcessors in maps - // CMVC 254023 - releasePartitionToProcessorMap(); - releaseNameToProcessorMap(); - } - - protected void releasePartitionToProcessorMap() { - releaseMap(fPartitionToProcessorMap); - } - - protected void releaseNameToProcessorMap() { - releaseMap(fNameToProcessorMap); - } - - protected void releaseMap(HashMap map) { - if (map != null) { - if (!map.isEmpty()) { - Iterator it = map.keySet().iterator(); - Object key = null; - while (it.hasNext()) { - key = it.next(); - if (map.get(key) instanceof IReleasable ) { - ((IReleasable) map.get(key)).release(); - } - } - } - map.clear(); - map = null; - } - } - - /** - * @see AbstractContentAssistProcessor#computeCompletionProposals(int, - * String, ITextRegion, IDOMNode, IDOMNode) - */ - protected ContentAssistRequest computeCompletionProposals(int documentPosition, String matchString, ITextRegion completionRegion, IDOMNode treeNode, IDOMNode xmlnode) { - - ContentAssistRequest request = super.computeCompletionProposals(documentPosition, matchString, completionRegion, treeNode, xmlnode); - IStructuredDocumentRegion sdRegion = ContentAssistUtils.getStructuredDocumentRegion((StructuredTextViewer) fTextViewer, documentPosition); - - Document doc = null; - if (xmlnode != null) { - if (xmlnode.getNodeType() == Node.DOCUMENT_NODE) - doc = (Document) xmlnode; - else - doc = xmlnode.getOwnerDocument(); - } - String[] directiveNames = {"page", "include", "taglib"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - // suggest JSP Expression inside of XML comments - if (completionRegion.getType() == DOMRegionContext.XML_COMMENT_TEXT && !isXMLFormat(doc)) { - if (request == null) - request = newContentAssistRequest(treeNode, xmlnode, sdRegion, completionRegion, documentPosition, 0, ""); //$NON-NLS-1$ - request.addProposal(new CustomCompletionProposal("<%= %>", documentPosition, 0, 4, JSPEditorPluginImageHelper.getInstance().getImage(JSPEditorPluginImages.IMG_OBJ_TAG_GENERIC), "jsp:expression", null, "<%= %>", XMLRelevanceConstants.R_JSP)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ - } - // handle proposals in and around JSP_DIRECTIVE_OPEN and - // JSP_DIRECTIVE_NAME - else if ((completionRegion.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_OPEN && documentPosition >= sdRegion.getTextEndOffset(completionRegion)) || (completionRegion.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME && documentPosition <= sdRegion.getTextEndOffset(completionRegion))) { - if (completionRegion.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_OPEN) { - if (request == null) - request = newContentAssistRequest(xmlnode, xmlnode, sdRegion, completionRegion, documentPosition, 0, matchString); - Iterator regions = sdRegion.getRegions().iterator(); - String nameString = null; - int begin = request.getReplacementBeginPosition(); - int length = request.getReplacementLength(); - while (regions.hasNext()) { - ITextRegion region = (ITextRegion) regions.next(); - if (region.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME) { - nameString = sdRegion.getText(region); - begin = sdRegion.getStartOffset(region); - length = region.getTextLength(); - break; - } - } - if (nameString == null) - nameString = ""; //$NON-NLS-1$ - for (int i = 0; i < directiveNames.length; i++) { - if (directiveNames[i].startsWith(nameString) || documentPosition <= begin) - request.addProposal(new CustomCompletionProposal(directiveNames[i], begin, length, directiveNames[i].length(), JSPEditorPluginImageHelper.getInstance().getImage(JSPEditorPluginImages.IMG_OBJ_TAG_GENERIC), directiveNames[i], null, null, XMLRelevanceConstants.R_JSP)); - } - } else { // by default, JSP_DIRECTIVE_NAME - if (request == null) - request = newContentAssistRequest(xmlnode, xmlnode, sdRegion, completionRegion, sdRegion.getStartOffset(completionRegion), completionRegion.getTextLength(), matchString); - for (int i = 0; i < directiveNames.length; i++) { - if (directiveNames[i].startsWith(matchString)) - request.addProposal(new CustomCompletionProposal(directiveNames[i], request.getReplacementBeginPosition(), request.getReplacementLength(), directiveNames[i].length(), JSPEditorPluginImageHelper.getInstance().getImage(JSPEditorPluginImages.IMG_OBJ_TAG_GENERIC), directiveNames[i], null, null, XMLRelevanceConstants.R_JSP)); - } - } - } else if ((completionRegion.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME && documentPosition > sdRegion.getTextEndOffset(completionRegion)) || (completionRegion.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_CLOSE && documentPosition <= sdRegion.getStartOffset(completionRegion))) { - if (request == null) - request = computeAttributeProposals(documentPosition, matchString, completionRegion, treeNode, xmlnode); - super.addTagCloseProposals(request); - // CMVC 274033, this is being added for all <jsp:* tags - // in addAttributeNameProposals(contentAssistRequest) - // super.addAttributeNameProposals(request); - } - // no name?: <%@ %> - else if (completionRegion.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_CLOSE && documentPosition <= sdRegion.getStartOffset(completionRegion)) { - if (request != null) - request = computeAttributeProposals(documentPosition, matchString, completionRegion, treeNode, xmlnode); - Iterator regions = sdRegion.getRegions().iterator(); - String nameString = null; - while (regions.hasNext()) { - ITextRegion region = (ITextRegion) regions.next(); - if (region.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME) { - nameString = sdRegion.getText(region); - break; - } - } - if (nameString == null) { - for (int i = 0; i < directiveNames.length; i++) { - request.addProposal(new CustomCompletionProposal(directiveNames[i], request.getReplacementBeginPosition(), request.getReplacementLength(), directiveNames[i].length(), JSPEditorPluginImageHelper.getInstance().getImage(JSPEditorPluginImages.IMG_OBJ_TAG_GENERIC), directiveNames[i], null, null, XMLRelevanceConstants.R_JSP)); - } - } - } - - addTemplates(request, TemplateContextTypeIdsJSP.ALL); - return request; - } - - private JSPTemplateCompletionProcessor getTemplateCompletionProcessor() { - if (fTemplateProcessor == null) { - fTemplateProcessor = new JSPTemplateCompletionProcessor(); - } - return fTemplateProcessor; - } - - /** - * Adds templates to the list of proposals - * - * @param contentAssistRequest - * @param context - */ - private void addTemplates(ContentAssistRequest contentAssistRequest, String context) { - if (contentAssistRequest == null) - return; - - // if already adding template proposals for a certain context type, do - // not add again - if (!fTemplateContexts.contains(context)) { - fTemplateContexts.add(context); - boolean useProposalList = !contentAssistRequest.shouldSeparate(); - - if (getTemplateCompletionProcessor() != null) { - getTemplateCompletionProcessor().setContextType(context); - ICompletionProposal[] proposals = getTemplateCompletionProcessor().computeCompletionProposals(fTextViewer, contentAssistRequest.getReplacementBeginPosition()); - for (int i = 0; i < proposals.length; ++i) { - if (useProposalList) - contentAssistRequest.addProposal(proposals[i]); - else - contentAssistRequest.addMacro(proposals[i]); - } - } - } - } - - - protected void addEntityProposals(ContentAssistRequest contentAssistRequest, int documentPosition, ITextRegion completionRegion, IDOMNode treeNode) { - // ignore - } - - protected void addTagInsertionProposals(ContentAssistRequest contentAssistRequest, int childPosition) { - addTemplates(contentAssistRequest, TemplateContextTypeIdsJSP.TAG); - - super.addTagInsertionProposals(contentAssistRequest, childPosition); - if (isInternalAdapter) - useEmbeddedResults = false; - } -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPDummyContentAssistProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPDummyContentAssistProcessor.java deleted file mode 100644 index cbab2b8109..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPDummyContentAssistProcessor.java +++ /dev/null @@ -1,310 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.contentassist; - -import java.util.List; -import java.util.Properties; -import java.util.Vector; - -import org.eclipse.jface.text.ITextViewer; -import org.eclipse.jface.text.contentassist.ICompletionProposal; -import org.eclipse.jface.text.contentassist.IContextInformation; -import org.eclipse.jface.text.contentassist.IContextInformationValidator; -import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion; -import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion; -import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration; -import org.eclipse.wst.xml.core.internal.contentmodel.CMContent; -import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration; -import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap; -import org.eclipse.wst.xml.core.internal.contentmodel.CMNode; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode; -import org.eclipse.wst.xml.ui.internal.contentassist.AbstractContentAssistProcessor; -import org.eclipse.wst.xml.ui.internal.contentassist.ContentAssistRequest; -import org.eclipse.wst.xml.ui.internal.contentassist.XMLContentModelGenerator; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; - -/** - * This class is a "null" version of AbstractContentAssistProcessor - * - * @plannedfor 1.0 - */ -public class JSPDummyContentAssistProcessor extends AbstractContentAssistProcessor { - protected void addAttributeNameProposals(ContentAssistRequest contentAssistRequest) { - super.addAttributeNameProposals(contentAssistRequest); - } - - protected void addAttributeValueProposals(ContentAssistRequest contentAssistRequest) { - super.addAttributeValueProposals(contentAssistRequest); - } - - - protected void addCommentProposal(ContentAssistRequest contentAssistRequest) { - super.addCommentProposal(contentAssistRequest); - } - - - protected void addContent(List contentList, CMContent content) { - super.addContent(contentList, content); - } - - - protected void addDocTypeProposal(ContentAssistRequest contentAssistRequest) { - super.addDocTypeProposal(contentAssistRequest); - } - - - protected void addEmptyDocumentProposals(ContentAssistRequest contentAssistRequest) { - super.addEmptyDocumentProposals(contentAssistRequest); - } - - - protected void addEndTagNameProposals(ContentAssistRequest contentAssistRequest) { - super.addEndTagNameProposals(contentAssistRequest); - } - - - protected void addEndTagProposals(ContentAssistRequest contentAssistRequest) { - super.addEndTagProposals(contentAssistRequest); - } - - - protected void addEntityProposals(ContentAssistRequest contentAssistRequest, int documentPosition, ITextRegion completionRegion, IDOMNode treeNode) { - super.addEntityProposals(contentAssistRequest, documentPosition, completionRegion, treeNode); - } - - - protected void addEntityProposals(Vector proposals, Properties map, String key, int nodeOffset, IStructuredDocumentRegion parent, ITextRegion completionRegion) { - super.addEntityProposals(proposals, map, key, nodeOffset, parent, completionRegion); - } - - - protected void addPCDATAProposal(String nodeName, ContentAssistRequest contentAssistRequest) { - super.addPCDATAProposal(nodeName, contentAssistRequest); - } - - - protected void addStartDocumentProposals(ContentAssistRequest contentAssistRequest) { - super.addStartDocumentProposals(contentAssistRequest); - } - - - protected void addTagCloseProposals(ContentAssistRequest contentAssistRequest) { - super.addTagCloseProposals(contentAssistRequest); - } - - - protected void addTagInsertionProposals(ContentAssistRequest contentAssistRequest, int childPosition) { - super.addTagInsertionProposals(contentAssistRequest, childPosition); - } - - - protected void addTagNameProposals(ContentAssistRequest contentAssistRequest, int childPosition) { - super.addTagNameProposals(contentAssistRequest, childPosition); - } - - - protected void addXMLProposal(ContentAssistRequest contentAssistRequest) { - super.addXMLProposal(contentAssistRequest); - } - - - protected boolean attributeInList(IDOMNode node, Node parent, CMNode cmnode) { - return super.attributeInList(node, parent, cmnode); - } - - - protected boolean beginsWith(String aString, String prefix) { - return super.beginsWith(aString, prefix); - } - - - protected ContentAssistRequest computeAttributeProposals(int documentPosition, String matchString, ITextRegion completionRegion, IDOMNode nodeAtOffset, IDOMNode node) { - return super.computeAttributeProposals(documentPosition, matchString, completionRegion, nodeAtOffset, node); - } - - - protected ContentAssistRequest computeAttributeValueProposals(int documentPosition, String matchString, ITextRegion completionRegion, IDOMNode nodeAtOffset, IDOMNode node) { - return super.computeAttributeValueProposals(documentPosition, matchString, completionRegion, nodeAtOffset, node); - } - - - protected ContentAssistRequest computeCompletionProposals(int documentPosition, String matchString, ITextRegion completionRegion, IDOMNode treeNode, IDOMNode xmlnode) { - return super.computeCompletionProposals(documentPosition, matchString, completionRegion, treeNode, xmlnode); - } - - - public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int documentOffset) { - return super.computeCompletionProposals(viewer, documentOffset); - } - - - protected ContentAssistRequest computeContentProposals(int documentPosition, String matchString, ITextRegion completionRegion, IDOMNode nodeAtOffset, IDOMNode node) { - return super.computeContentProposals(documentPosition, matchString, completionRegion, nodeAtOffset, node); - } - - - /** - * @see org.eclipse.jface.text.contentassist.IContentAssistProcessor#computeContextInformation(org.eclipse.jface.text.ITextViewer, - * int) - */ - public IContextInformation[] computeContextInformation(ITextViewer viewer, int documentOffset) { - return super.computeContextInformation(viewer, documentOffset); - } - - protected ContentAssistRequest computeEndTagOpenProposals(int documentPosition, String matchString, ITextRegion completionRegion, IDOMNode nodeAtOffset, IDOMNode node) { - return super.computeEndTagOpenProposals(documentPosition, matchString, completionRegion, nodeAtOffset, node); - } - - - protected ICompletionProposal[] computeEntityReferenceProposals(int documentPosition, ITextRegion completionRegion, IDOMNode treeNode) { - return super.computeEntityReferenceProposals(documentPosition, completionRegion, treeNode); - } - - protected ContentAssistRequest computeEqualsProposals(int documentPosition, String matchString, ITextRegion completionRegion, IDOMNode nodeAtOffset, IDOMNode node) { - return super.computeEqualsProposals(documentPosition, matchString, completionRegion, nodeAtOffset, node); - } - - protected ContentAssistRequest computeStartDocumentProposals(int documentPosition, String matchString, ITextRegion completionRegion, IDOMNode nodeAtOffset, IDOMNode node) { - return super.computeStartDocumentProposals(documentPosition, matchString, completionRegion, nodeAtOffset, node); - } - - protected ContentAssistRequest computeTagCloseProposals(int documentPosition, String matchString, ITextRegion completionRegion, IDOMNode nodeAtOffset, IDOMNode node) { - return super.computeTagCloseProposals(documentPosition, matchString, completionRegion, nodeAtOffset, node); - } - - protected ContentAssistRequest computeTagNameProposals(int documentPosition, String matchString, ITextRegion completionRegion, IDOMNode nodeAtOffset, IDOMNode node) { - return super.computeTagNameProposals(documentPosition, matchString, completionRegion, nodeAtOffset, node); - } - - protected ContentAssistRequest computeTagOpenProposals(int documentPosition, String matchString, ITextRegion completionRegion, IDOMNode nodeAtOffset, IDOMNode node) { - return super.computeTagOpenProposals(documentPosition, matchString, completionRegion, nodeAtOffset, node); - } - - protected String getAdditionalInfo(CMNode parentOrOwner, CMNode cmnode) { - return super.getAdditionalInfo(parentOrOwner, cmnode); - } - - protected List getAvailableChildrenAtIndex(Element parent, int index, int validityChecking) { - return super.getAvailableChildrenAtIndex(parent, index, validityChecking); - } - - protected List getAvailableRootChildren(Document document, int childIndex) { - return super.getAvailableRootChildren(document, childIndex); - } - - protected CMElementDeclaration getCMElementDeclaration(Node node) { - return super.getCMElementDeclaration(node); - } - - public char[] getCompletionProposalAutoActivationCharacters() { - return super.getCompletionProposalAutoActivationCharacters(); - } - - protected ITextRegion getCompletionRegion(int offset, IStructuredDocumentRegion flatNode) { - return super.getCompletionRegion(offset, flatNode); - } - - protected ITextRegion getCompletionRegion(int documentPosition, Node domnode) { - return super.getCompletionRegion(documentPosition, domnode); - } - - public XMLContentModelGenerator getContentGenerator() { - return super.getContentGenerator(); - } - - public char[] getContextInformationAutoActivationCharacters() { - return super.getContextInformationAutoActivationCharacters(); - } - - public IContextInformationValidator getContextInformationValidator() { - return super.getContextInformationValidator(); - } - - protected int getElementPosition(Node child) { - return super.getElementPosition(child); - } - - /** - * @see org.eclipse.jface.text.contentassist.IContentAssistProcessor#getErrorMessage() - */ - public String getErrorMessage() { - return super.getErrorMessage(); - } - - protected String getMatchString(IStructuredDocumentRegion parent, ITextRegion aRegion, int offset) { - return super.getMatchString(parent, aRegion, offset); - } - - protected ITextRegion getNameRegion(IStructuredDocumentRegion flatNode) { - return super.getNameRegion(flatNode); - } - - - protected List getPossibleDataTypeValues(Node node, CMAttributeDeclaration ad) { - return super.getPossibleDataTypeValues(node, ad); - } - - - protected String getRequiredName(Node parentOrOwner, CMNode cmnode) { - return super.getRequiredName(parentOrOwner, cmnode); - } - - protected String getRequiredText(Node parentOrOwner, CMAttributeDeclaration attrDecl) { - return super.getRequiredText(parentOrOwner, attrDecl); - } - - protected String getRequiredText(Node parentOrOwner, CMElementDeclaration elementDecl) { - return super.getRequiredText(parentOrOwner, elementDecl); - } - - protected List getValidChildElementDeclarations(Element parent, int childPosition, int kindOfAction) { - return super.getValidChildElementDeclarations(parent, childPosition, kindOfAction); - } - - protected void init() { - super.init(); - } - - protected boolean isCloseRegion(ITextRegion region) { - return super.isCloseRegion(region); - } - - protected boolean isNameRegion(ITextRegion region) { - return super.isNameRegion(region); - } - - protected boolean isQuote(String string) { - return super.isQuote(string); - } - - protected Properties mapToProperties(CMNamedNodeMap map) { - return super.mapToProperties(map); - } - - public void setErrorMessage(String errorMessage) { - super.setErrorMessage(errorMessage); - } - - protected void setErrorMessage(String errorMessage, String append) { - super.setErrorMessage(errorMessage, append); - } - - protected void setErrorMessage(String errorMessage, String prepend, String append) { - super.setErrorMessage(errorMessage, prepend, append); - } - - protected boolean stringsEqual(String a, String b) { - return super.stringsEqual(a, b); - } - -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPELCompletionProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPELCompletionProcessor.java deleted file mode 100644 index 0ef4b79b2b..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPELCompletionProcessor.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.eclipse.jst.jsp.ui.internal.contentassist; - -import org.eclipse.jdt.core.ICompilationUnit; -import org.eclipse.jst.jsp.core.internal.java.JSPTranslation; - -public class JSPELCompletionProcessor extends JSPCompletionProcessor { - protected JSPProposalCollector getProposalCollector(ICompilationUnit cu, JSPTranslation translation) { - return new JSPELProposalCollector(cu, translation); - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPELContentAssistProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPELContentAssistProcessor.java deleted file mode 100644 index 0d717f2506..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPELContentAssistProcessor.java +++ /dev/null @@ -1,139 +0,0 @@ -package org.eclipse.jst.jsp.ui.internal.contentassist; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import org.eclipse.jface.text.ITextViewer; -import org.eclipse.jface.text.contentassist.ICompletionProposal; -import org.eclipse.jst.jsp.core.internal.contentmodel.TaglibController; -import org.eclipse.jst.jsp.core.internal.contentmodel.tld.CMDocumentImpl; -import org.eclipse.jst.jsp.core.internal.contentmodel.tld.TLDCMDocumentManager; -import org.eclipse.jst.jsp.core.internal.contentmodel.tld.TaglibTracker; -import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDFunction; -import org.eclipse.jst.jsp.core.internal.java.jspel.ASTExpression; -import org.eclipse.jst.jsp.core.internal.java.jspel.ASTFunctionInvocation; -import org.eclipse.jst.jsp.core.internal.java.jspel.FindFunctionInvocationVisitor; -import org.eclipse.jst.jsp.core.internal.java.jspel.JSPELParser; -import org.eclipse.jst.jsp.core.internal.java.jspel.JSPELParserConstants; -import org.eclipse.jst.jsp.core.internal.java.jspel.JSPELParserTokenManager; -import org.eclipse.jst.jsp.core.internal.java.jspel.ParseException; -import org.eclipse.jst.jsp.core.internal.java.jspel.SimpleCharStream; -import org.eclipse.jst.jsp.core.internal.java.jspel.Token; -import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts; -import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion; -import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion; -import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionContainer; -import org.eclipse.wst.sse.ui.internal.StructuredTextViewer; -import org.eclipse.wst.sse.ui.internal.contentassist.ContentAssistUtils; -import org.eclipse.wst.sse.ui.internal.contentassist.CustomCompletionProposal; -import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext; - -public class JSPELContentAssistProcessor extends JSPJavaContentAssistProcessor { - protected char elCompletionProposalAutoActivationCharacters[] = new char[]{'.', ':'}; - - protected JSPCompletionProcessor getJspCompletionProcessor() { - if (fJspCompletionProcessor == null) { - fJspCompletionProcessor = new JSPELCompletionProcessor(); - } - return fJspCompletionProcessor; - } - - public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int documentPosition) { - - - // get results from JSP completion processor - fJspCompletionProcessor = getJspCompletionProcessor(); - ICompletionProposal[] results = fJspCompletionProcessor.computeCompletionProposals(viewer, documentPosition); - fErrorMessage = fJspCompletionProcessor.getErrorMessage(); - if (results.length == 0 && (fErrorMessage == null || fErrorMessage.length() == 0)) { - fErrorMessage = UNKNOWN_CONTEXT; - } - - IStructuredDocumentRegion flat = ContentAssistUtils.getStructuredDocumentRegion((StructuredTextViewer) viewer, documentPosition); - - if (flat != null) { - ITextRegion cursorRegion = flat.getRegionAtCharacterOffset(documentPosition); - if (DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE == cursorRegion.getType()) { - ITextRegionContainer container = (ITextRegionContainer) cursorRegion; - cursorRegion = container.getRegionAtCharacterOffset(documentPosition); - if (cursorRegion.getType() == DOMJSPRegionContexts.JSP_EL_CONTENT) { - String elText = container.getText(cursorRegion).trim(); - String prefix = getPrefix(documentPosition - container.getStartOffset(cursorRegion) - 1, elText); - if (null != prefix) { - List proposals = getFunctionProposals(prefix, (StructuredTextViewer) viewer, documentPosition); - results = new ICompletionProposal[proposals.size()]; - proposals.toArray(results); - } - } - } - } - - - return results; - } - - protected String getPrefix(int relativePosition, String elText) { - java.io.StringReader reader = new java.io.StringReader(elText); - JSPELParserTokenManager scanner = new JSPELParserTokenManager(new SimpleCharStream(reader, 1, 1)); - Token curToken = null, lastIdentifier = null; - while (JSPELParserConstants.EOF != (curToken = scanner.getNextToken()).kind) { - if (JSPELParserConstants.COLON == curToken.kind && curToken.endColumn == relativePosition && null != lastIdentifier) { - return (lastIdentifier.image); - } - - if (JSPELParserConstants.IDENTIFIER == curToken.kind) { - lastIdentifier = curToken; - } - else { - lastIdentifier = null; - } - } - return null; - } - - protected ASTFunctionInvocation getInvocation(int relativePosition, String elText) { - FindFunctionInvocationVisitor visitor = new FindFunctionInvocationVisitor(relativePosition); - JSPELParser parser = JSPELParser.createParser(elText); - try { - ASTExpression expression = parser.Expression(); - return (ASTFunctionInvocation) expression.jjtAccept(visitor, null); - } - catch (ParseException e) { /* parse exception = no completion */ - } - return (null); - } - - - public char[] getCompletionProposalAutoActivationCharacters() { - return elCompletionProposalAutoActivationCharacters; - } - - protected List getFunctionProposals(String prefix, StructuredTextViewer viewer, int offset) { - TLDCMDocumentManager docMgr = TaglibController.getTLDCMDocumentManager(viewer.getDocument()); - ArrayList completionList = new ArrayList(); - if (docMgr == null) - return null; - - Iterator taglibs = docMgr.getCMDocumentTrackers(offset).iterator(); - while (taglibs.hasNext()) { - TaglibTracker tracker = (TaglibTracker) taglibs.next(); - if (tracker.getPrefix().equals(prefix)) { - CMDocumentImpl doc = (CMDocumentImpl) tracker.getDocument(); - - List functions = doc.getFunctions(); - for (Iterator it = functions.iterator(); it.hasNext();) { - TLDFunction function = (TLDFunction) it.next(); - CustomCompletionProposal proposal = new CustomCompletionProposal(function.getName() + "()", //$NON-NLS-1$ - offset, 0, function.getName().length() + 1, null, function.getName() + " - " + function.getSignature(), null, null, 1); //$NON-NLS-1$ - - completionList.add(proposal); - } - } - } - return completionList; - } - - - -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPELProposalCollector.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPELProposalCollector.java deleted file mode 100644 index ecad40ec02..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPELProposalCollector.java +++ /dev/null @@ -1,77 +0,0 @@ -package org.eclipse.jst.jsp.ui.internal.contentassist; - -import org.eclipse.jdt.core.CompletionProposal; -import org.eclipse.jdt.core.ICompilationUnit; -import org.eclipse.jdt.ui.text.java.IJavaCompletionProposal; -import org.eclipse.jface.text.contentassist.IContextInformation; -import org.eclipse.jst.jsp.core.internal.java.JSPTranslation; -import org.eclipse.swt.graphics.Image; - -public class JSPELProposalCollector extends JSPProposalCollector { - - public JSPELProposalCollector(ICompilationUnit cu, JSPTranslation translation) { - super(cu, translation); - } - - protected IJavaCompletionProposal createJavaCompletionProposal(CompletionProposal proposal) { - JSPCompletionProposal jspProposal = null; - - if(null == proposal || null == proposal.getName()) - return(null); - - String rawName = new String(proposal.getName()); - String completion = null; - - if(proposal.getKind() == CompletionProposal.METHOD_REF && proposal.findParameterNames(null).length == 0) { - if(rawName.length() > 3 && rawName.startsWith("get")) { //$NON-NLS-1$ - completion = rawName.substring(3,4).toLowerCase() + rawName.substring(4, rawName.length()); - } else { - return null; - } - - // java offset - int offset = proposal.getReplaceStart() + 1; - - // replacement length - int length = proposal.getReplaceEnd() - offset + 1; - - // translate offset from Java > JSP - offset = getTranslation().getJspOffset(offset); - - // cursor position after must be calculated - int positionAfter = offset + completion.length(); - - // from java proposal - IJavaCompletionProposal javaProposal = super.createJavaCompletionProposal(proposal); - Image image = null; - String longDisplayString = javaProposal.getDisplayString(); - int fistSpaceIndex = longDisplayString.indexOf(' '); - String shortDisplayString = longDisplayString; - - if(fistSpaceIndex != -1) { - shortDisplayString = longDisplayString.substring(fistSpaceIndex); - } - - String displayString = completion + " " + shortDisplayString; //$NON-NLS-1$ - IContextInformation contextInformation = javaProposal.getContextInformation(); - String additionalInfo = javaProposal.getAdditionalProposalInfo(); - int relevance = javaProposal.getRelevance(); - - boolean updateLengthOnValidate = true; - - jspProposal = new JSPCompletionProposal(completion, offset, length, positionAfter, image, displayString, contextInformation, additionalInfo, relevance, updateLengthOnValidate); - return jspProposal; - } else { - return null; - } - } - -// protected void acceptMethod(char[] declaringTypePackageName, char[] declaringTypeName, char[] name, char[][] parameterPackageNames, char[][] parameterTypeNames, char[][] parameterNames, char[] returnTypePackageName, char[] returnTypeName, char[] completionName, int modifiers, int start, int end, int relevance) { -// String rawName = String.valueOf(name); -// if(parameterNames.length == 0 && rawName.length() > 3 && rawName.startsWith("get")) -// { -// String mangledName = rawName.substring(3,4).toLowerCase() + rawName.substring(4, rawName.length()); -// super.acceptField(declaringTypePackageName, declaringTypeName, mangledName.toCharArray(), returnTypePackageName, returnTypeName, mangledName.toCharArray(), modifiers, start, end, relevance); -// } -// } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPJavaContentAssistProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPJavaContentAssistProcessor.java deleted file mode 100644 index 177b99db49..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPJavaContentAssistProcessor.java +++ /dev/null @@ -1,239 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.contentassist; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.IDocumentExtension3; -import org.eclipse.jface.text.IDocumentPartitioner; -import org.eclipse.jface.text.ITextViewer; -import org.eclipse.jface.text.contentassist.ICompletionProposal; -import org.eclipse.jface.text.contentassist.IContentAssistProcessor; -import org.eclipse.jface.text.contentassist.IContextInformation; -import org.eclipse.jface.text.contentassist.IContextInformationValidator; -import org.eclipse.jst.jsp.core.internal.provisional.text.IJSPPartitionTypes; -import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; -import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion; -import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion; -import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredPartitioning; -import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion; -import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionContainer; -import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList; -import org.eclipse.wst.sse.ui.internal.IReleasable; -import org.eclipse.wst.sse.ui.internal.StructuredTextViewer; -import org.eclipse.wst.sse.ui.internal.contentassist.ContentAssistUtils; -import org.eclipse.wst.sse.ui.internal.contentassist.CustomCompletionProposal; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode; -import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext; -import org.eclipse.wst.xml.ui.internal.contentassist.XMLRelevanceConstants; -import org.eclipse.wst.xml.ui.internal.util.SharedXMLEditorPluginImageHelper; - -/** - * @plannedfor 1.0 - */ -public class JSPJavaContentAssistProcessor implements IContentAssistProcessor, IReleasable { - protected char completionProposalAutoActivationCharacters[] = new char[]{'.'}; - protected char contextInformationAutoActivationCharacters[] = null; - protected static final String UNKNOWN_CONTEXT = JSPUIMessages.Content_Assist_not_availab_UI_; - protected String fErrorMessage = null; - protected JSPCompletionProcessor fJspCompletionProcessor = null; - - public JSPJavaContentAssistProcessor() { - super(); - } - - /** - * Return a list of proposed code completions based on the - * specified location within the document that corresponds - * to the current cursor position within the text-editor control. - * - * @param documentPosition a location within the document - * @return an array of code-assist items - */ - public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int documentPosition) { - - IndexedRegion treeNode = ContentAssistUtils.getNodeAt((StructuredTextViewer) viewer, documentPosition); - - // get results from JSP completion processor - fJspCompletionProcessor = getJspCompletionProcessor(); - ICompletionProposal[] results = fJspCompletionProcessor.computeCompletionProposals(viewer, documentPosition); - fErrorMessage = fJspCompletionProcessor.getErrorMessage(); - if (results.length == 0 && (fErrorMessage == null || fErrorMessage.length() == 0)) { - fErrorMessage = UNKNOWN_CONTEXT; - } - - IDOMNode xNode = null; - IStructuredDocumentRegion flat = null; - if (treeNode instanceof IDOMNode) { - xNode = (IDOMNode) treeNode; - flat = xNode.getFirstStructuredDocumentRegion(); - if (flat != null && flat.getType() == DOMJSPRegionContexts.JSP_CONTENT) { - flat = flat.getPrevious(); - } - } - - // this is in case it's a <%@, it will be a region container... - ITextRegion openRegion = null; - if (flat != null && flat instanceof ITextRegionContainer) { - ITextRegionList v = ((ITextRegionContainer) flat).getRegions(); - if (v.size() > 0) - openRegion = v.get(0); - } - - // ADD CDATA PROPOSAL IF IT'S AN XML-JSP TAG - if (flat != null && flat.getType() != DOMJSPRegionContexts.JSP_SCRIPTLET_OPEN && flat.getType() != DOMJSPRegionContexts.JSP_DECLARATION_OPEN && flat.getType() != DOMJSPRegionContexts.JSP_EXPRESSION_OPEN && flat.getType() != DOMRegionContext.BLOCK_TEXT && (openRegion != null && openRegion.getType() != DOMJSPRegionContexts.JSP_DIRECTIVE_OPEN) && !inAttributeRegion(flat, documentPosition)) { - - // determine if cursor is before or after selected range - int adjustedDocPosition = documentPosition; - int realCaretPosition = viewer.getTextWidget().getCaretOffset(); - int selectionLength = viewer.getSelectedRange().y; - if (documentPosition > realCaretPosition) { - adjustedDocPosition -= selectionLength; - } - - CustomCompletionProposal cdataProposal = createCDATAProposal(adjustedDocPosition, selectionLength); - ICompletionProposal[] newResults = new ICompletionProposal[results.length + 1]; - System.arraycopy(results, 0, newResults, 0, results.length); - newResults[results.length] = cdataProposal; - results = newResults; - } - - // (pa) ** this is code in progress... - // add ending %> proposal for non closed JSP tags - // String tagText = flat.getText(); - // // TODO need a much better compare (using constants?) - // if(tagText.equals("<%") || tagText.equals("<%=") || tagText.equals("<%!")); - // { - // ICompletionProposal testah = ContentAssistUtils.computeJSPEndTagProposal(viewer,documentPosition, treeNode, "<%" , SharedXMLEditorPluginImageHelper.IMG_OBJ_TAG_GENERIC); - // if(testah != null) - // { - // ICompletionProposal[] newResults = new ICompletionProposal[results.length + 1]; - // System.arraycopy( results, 0, newResults, 0, results.length); - // newResults[results.length] = testah; - // results = newResults; - // } - // } - - return results; - } - - private CustomCompletionProposal createCDATAProposal(int adjustedDocPosition, int selectionLength) { - return new CustomCompletionProposal("<![CDATA[]]>", //$NON-NLS-1$ - adjustedDocPosition, selectionLength, // should be the selection length - 9, SharedXMLEditorPluginImageHelper.getImage(SharedXMLEditorPluginImageHelper.IMG_OBJ_CDATASECTION), - "CDATA Section", //$NON-NLS-1$ - null, null, XMLRelevanceConstants.R_CDATA); - } - - private boolean inAttributeRegion(IStructuredDocumentRegion flat, int documentPosition) { - ITextRegion attrContainer = flat.getRegionAtCharacterOffset(documentPosition); - if (attrContainer != null && attrContainer instanceof ITextRegionContainer) { - if (attrContainer.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) { - return true; - } - } - return false; - } - - /** - * Returns the characters which when entered by the user should - * automatically trigger the presentation of possible completions. - * - * @return the auto activation characters for completion proposal or <code>null</code> - * if no auto activation is desired - */ - public char[] getCompletionProposalAutoActivationCharacters() { - return completionProposalAutoActivationCharacters; - } - - /** - * Returns the characters which when entered by the user should - * automatically trigger the presentation of context information. - * - * @return the auto activation characters for presenting context information - * or <code>null</code> if no auto activation is desired - */ - public char[] getContextInformationAutoActivationCharacters() { - return contextInformationAutoActivationCharacters; - } - - /** - * Return the reason why computeProposals was not able to find any completions. - * - * @return an error message - * or null if no error occurred - */ - public String getErrorMessage() { - return fErrorMessage; - } - - /** - * @see ContentAssistAdapter#release() - */ - public void release() { - if (fJspCompletionProcessor != null) { - fJspCompletionProcessor.release(); - fJspCompletionProcessor = null; - } - } - - /** - * - */ - protected JSPCompletionProcessor getJspCompletionProcessor() { - if (fJspCompletionProcessor == null) { - fJspCompletionProcessor = new JSPCompletionProcessor(); - } - return fJspCompletionProcessor; - } - - /** - * @see org.eclipse.jface.text.contentassist.IContentAssistProcessor#computeContextInformation(org.eclipse.jface.text.ITextViewer, int) - */ - public IContextInformation[] computeContextInformation(ITextViewer viewer, int documentOffset) { - List results = new ArrayList(); - // need to compute context info here, if it's JSP, call java computer - IDocument doc = viewer.getDocument(); - IDocumentPartitioner dp = null; - if(doc instanceof IDocumentExtension3) { - dp = ((IDocumentExtension3)doc).getDocumentPartitioner(IStructuredPartitioning.DEFAULT_STRUCTURED_PARTITIONING); - } - if(dp != null) { - //IDocumentPartitioner dp = viewer.getDocument().getDocumentPartitioner(); - String type = dp.getPartition(documentOffset).getType(); - if (type == IJSPPartitionTypes.JSP_DEFAULT || type == IJSPPartitionTypes.JSP_CONTENT_JAVA) { - // get context info from completion results... - ICompletionProposal[] proposals = computeCompletionProposals(viewer, documentOffset); - for (int i = 0; i < proposals.length; i++) { - IContextInformation ci = proposals[i].getContextInformation(); - if (ci != null) - results.add(ci); - } - } - } - return (IContextInformation[]) results.toArray(new IContextInformation[results.size()]); - } - - /** - * Returns a validator used to determine when displayed context information - * should be dismissed. May only return <code>null</code> if the processor is - * incapable of computing context information. - * - * @return a context information validator, or <code>null</code> if the processor - * is incapable of computing context information - */ - public IContextInformationValidator getContextInformationValidator() { - return new JavaParameterListValidator(); - } -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPPropertyContentAssistProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPPropertyContentAssistProcessor.java deleted file mode 100644 index 416ca677db..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPPropertyContentAssistProcessor.java +++ /dev/null @@ -1,259 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.contentassist; - - - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IWorkspaceRoot; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Path; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jst.jsp.core.internal.provisional.JSP11Namespace; -import org.eclipse.jst.jsp.ui.internal.editor.JSPEditorPluginImageHelper; -import org.eclipse.jst.jsp.ui.internal.editor.JSPEditorPluginImages; -import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; -import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion; -import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager; -import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion; -import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion; -import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionContainer; -import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList; -import org.eclipse.wst.sse.core.internal.util.StringUtils; -import org.eclipse.wst.sse.ui.internal.contentassist.CustomCompletionProposal; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode; -import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext; -import org.eclipse.wst.xml.ui.internal.contentassist.ContentAssistRequest; -import org.eclipse.wst.xml.ui.internal.contentassist.XMLRelevanceConstants; -import org.eclipse.wst.xml.ui.internal.util.SharedXMLEditorPluginImageHelper; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -/** - * This class computes attribute value completion proposals for <jsp:[gs]etProperty> tags. - * @plannedfor 1.0 - */ -public class JSPPropertyContentAssistProcessor extends JSPDummyContentAssistProcessor { - public JSPPropertyContentAssistProcessor() { - super(); - } - - protected void addAttributeValueProposals(ContentAssistRequest contentAssistRequest) { - IDOMNode node = (IDOMNode) contentAssistRequest.getNode(); - - // Find the attribute name for which this position should have a value - IStructuredDocumentRegion open = node.getFirstStructuredDocumentRegion(); - ITextRegionList openRegions = open.getRegions(); - int i = openRegions.indexOf(contentAssistRequest.getRegion()); - if (i < 0) - return; - - // get the attribute in question (first attr name to the left of the cursor) - ITextRegion attrNameRegion = null; - String attributeName = null; - while (i >= 0) { - attrNameRegion = openRegions.get(i--); - if (attrNameRegion.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) - break; - } - if (attrNameRegion != null) - attributeName = open.getText(attrNameRegion); - - // determine get or set - ITextRegion tagNameRegion = null; - boolean isGetProperty = true; - for (int j = 0; j < openRegions.size(); j++) { - tagNameRegion = openRegions.get(j); - if (tagNameRegion.getType() == DOMRegionContext.XML_TAG_NAME && open.getText(tagNameRegion).trim().equals("jsp:setProperty")) { //$NON-NLS-1$ - isGetProperty = false; - break; - } - } - - String currentValue = null; - if (contentAssistRequest.getRegion().getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) - currentValue = contentAssistRequest.getText(); - else - currentValue = ""; //$NON-NLS-1$ - String matchString = null; - // fixups since the matchString computations don't care if there are quotes around the value - if (currentValue.length() > StringUtils.strip(currentValue).length() && (currentValue.startsWith("\"") || currentValue.startsWith("'")) && contentAssistRequest.getMatchString().length() > 0) //$NON-NLS-1$ //$NON-NLS-2$ - matchString = currentValue.substring(1, contentAssistRequest.getMatchString().length()); - else - matchString = currentValue.substring(0, contentAssistRequest.getMatchString().length()); - - // for now we ignore complicated values such as jsp embedded in an attribute - boolean existingComplicatedValue = contentAssistRequest.getRegion() != null && contentAssistRequest.getRegion() instanceof ITextRegionContainer; - if (existingComplicatedValue) { - contentAssistRequest.getProposals().clear(); - contentAssistRequest.getMacros().clear(); - } - else { - if (attributeName.equals(JSP11Namespace.ATTR_NAME_NAME)) { - addBeanNameProposals(contentAssistRequest, node, matchString); - } - else if (attributeName.equals(JSP11Namespace.ATTR_NAME_PROPERTY)) { - addBeanPropertyProposals(contentAssistRequest, node, isGetProperty, matchString); - } - } - } - - private void addBeanPropertyProposals(ContentAssistRequest contentAssistRequest, IDOMNode node, boolean isGetProperty, String matchString) { - // assumes that the node is the [gs]etProperty tag - String useBeanName = ((Element) node).getAttribute(JSP11Namespace.ATTR_NAME_NAME); - // properties can only be provided if a class/type/beanName has been declared - if (useBeanName != null && useBeanName.length() > 0) { - NodeList useBeans = node.getOwnerDocument().getElementsByTagName(JSP11Namespace.ElementName.USEBEAN); - if (useBeans != null) { - String typeName = null; - for (int j = 0; j < useBeans.getLength(); j++) { - if (useBeans.item(j).getNodeType() != Node.ELEMENT_NODE) - continue; - Element useBean = (Element) useBeans.item(j); - if (useBean instanceof IndexedRegion && ((IndexedRegion) useBean).getStartOffset() < node.getStartOffset()) { - if (useBean.getAttribute(JSP11Namespace.ATTR_NAME_ID).equals(useBeanName)) { - typeName = useBean.getAttribute(JSP11Namespace.ATTR_NAME_CLASS); - if (typeName == null || typeName.length() < 1) { - typeName = useBean.getAttribute(JSP11Namespace.ATTR_NAME_TYPE); - } - if (typeName == null || typeName.length() < 1) { - typeName = useBean.getAttribute(JSP11Namespace.ATTR_NAME_BEAN_NAME); - } - } - } - } - if (typeName != null && typeName.length() > 0) { - // find the class/type/beanName definition and obtain the list of properties - IBeanInfoProvider provider = new BeanInfoProvider(); - IResource resource = getResource(contentAssistRequest); - IJavaPropertyDescriptor[] descriptors = provider.getRuntimeProperties(resource, typeName); - CustomCompletionProposal proposal = null; - String displayString = ""; //$NON-NLS-1$ - for (int j = 0; j < descriptors.length; j++) { - IJavaPropertyDescriptor pd = descriptors[j]; - // check whether it's get or set kinda property - if (pd.getReadable() && isGetProperty || pd.getWriteable() && !isGetProperty) { - // filter attr value name - if (matchString.length() == 0 || pd.getName().toLowerCase().startsWith(matchString.toLowerCase())) { - displayString = pd.getDisplayName(); - if (pd.getDeclaredType() != null && pd.getDeclaredType().length() > 0) - displayString += " - " + pd.getDeclaredType(); //$NON-NLS-1$ - proposal = new CustomCompletionProposal("\"" + pd.getName() + "\"", //$NON-NLS-1$ //$NON-NLS-2$ - contentAssistRequest.getReplacementBeginPosition(), contentAssistRequest.getReplacementLength(), pd.getName().length() + 2, SharedXMLEditorPluginImageHelper.getImage(SharedXMLEditorPluginImageHelper.IMG_OBJ_ATTRIBUTE), - displayString, null, pd.getDeclaredType(), XMLRelevanceConstants.R_XML_ATTRIBUTE_VALUE); - contentAssistRequest.addProposal(proposal); - } - } - } - } - } - } - } - - private void addBeanNameProposals(ContentAssistRequest contentAssistRequest, IDOMNode node, String matchString) { - // will not catch useBeans specified using other than actual DOM Nodes - NodeList useBeans = node.getOwnerDocument().getElementsByTagName(JSP11Namespace.ElementName.USEBEAN); - if (useBeans != null) { - String id = ""; //$NON-NLS-1$ - String displayString = null; - String classOrType = null; - String imageName = JSPEditorPluginImages.IMG_OBJ_CLASS_OBJ; - for (int j = 0; j < useBeans.getLength(); j++) { - if (useBeans.item(j).getNodeType() != Node.ELEMENT_NODE) - continue; - Element useBean = (Element) useBeans.item(j); - if (useBean instanceof IndexedRegion && ((IndexedRegion) useBean).getStartOffset() < node.getStartOffset()) { - id = StringUtils.strip(useBean.getAttribute(JSP11Namespace.ATTR_NAME_ID)); - displayString = null; - classOrType = null; - imageName = JSPEditorPluginImages.IMG_OBJ_CLASS_OBJ; - // set the Image based on whether the class, type, or beanName attribute is present - classOrType = useBean.getAttribute(JSP11Namespace.ATTR_NAME_CLASS); - if (classOrType == null || classOrType.length() < 1) { - classOrType = useBean.getAttribute(JSP11Namespace.ATTR_NAME_TYPE); - imageName = JSPEditorPluginImages.IMG_OBJ_PUBLIC; - } - if (classOrType == null || classOrType.length() < 1) { - classOrType = useBean.getAttribute(JSP11Namespace.ATTR_NAME_BEAN_NAME); - imageName = JSPEditorPluginImages.IMG_OBJ_PUBLIC; - } - if (classOrType != null && classOrType.length() > 0) - displayString = id + " - " + classOrType; //$NON-NLS-1$ - else - displayString = id; - - // https://w3.opensource.ibm.com/bugzilla/show_bug.cgi?id=2341 - if(id != null) { - // filter - if (matchString.length() == 0 || id.startsWith(matchString)) { - CustomCompletionProposal proposal = new CustomCompletionProposal("\"" + id + "\"", //$NON-NLS-1$ //$NON-NLS-2$ - contentAssistRequest.getReplacementBeginPosition(), - contentAssistRequest.getReplacementLength(), - id.length() + 2, - JSPEditorPluginImageHelper.getInstance().getImage(imageName), - displayString, - null, - null, - XMLRelevanceConstants.R_XML_ATTRIBUTE_VALUE); - contentAssistRequest.addProposal(proposal); - } - } - } - } - } - } - - /** - * Returns project request is in - * - * @param request - * @return - */ - private IResource getResource(ContentAssistRequest request) { - IResource resource = null; - String baselocation = null; - - if (request != null) { - IStructuredDocumentRegion region = request.getDocumentRegion(); - if (region != null) { - IDocument document = region.getParentDocument(); - IStructuredModel model = null; - try { - model = StructuredModelManager.getModelManager().getExistingModelForRead(document); - if (model != null) { - baselocation = model.getBaseLocation(); - } - } finally { - if (model != null) - model.releaseFromRead(); - } - } - } - - if (baselocation != null) { - // copied from JSPTranslationAdapter#getJavaProject - IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); - IPath filePath = new Path(baselocation); - IFile file = null; - - if (filePath.segmentCount() > 1) { - file = root.getFile(filePath); - } - if (file != null) { - resource = file.getProject(); - } - } - return resource; - } -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPProposalCollector.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPProposalCollector.java deleted file mode 100644 index af7392dc21..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPProposalCollector.java +++ /dev/null @@ -1,194 +0,0 @@ -package org.eclipse.jst.jsp.ui.internal.contentassist; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; - -import org.eclipse.jdt.core.CompletionProposal; -import org.eclipse.jdt.core.ICompilationUnit; -import org.eclipse.jdt.core.Signature; -import org.eclipse.jdt.ui.text.java.CompletionProposalCollector; -import org.eclipse.jdt.ui.text.java.CompletionProposalComparator; -import org.eclipse.jdt.ui.text.java.IJavaCompletionProposal; -import org.eclipse.jface.text.contentassist.IContextInformation; -import org.eclipse.jst.jsp.core.internal.java.JSP2ServletNameUtil; -import org.eclipse.jst.jsp.core.internal.java.JSPTranslation; -import org.eclipse.swt.graphics.Image; - -/** - * Passed into ICodeComplete#codeComplete(int offset, CompletionRequestor requestor). - * Adapts IJavaCompletionProposals to JSPCompletion proposals. - * This includes: - * - translating offsets - * - "fixing" up display strings - * - filtering some unwanted proposals - * - * @plannedfor 1.0 - */ -public class JSPProposalCollector extends CompletionProposalCollector { - - private String fJspName; - private String fMangledName; - private JSPTranslation fTranslation; - private Comparator fComparator; - - public JSPProposalCollector(ICompilationUnit cu, JSPTranslation translation) { - super(cu); - if(cu != null) { - // set some names for fixing up mangled name in proposals - // set mangled (servlet) name - String cuName = cu.getPath().lastSegment(); - setMangledName(cuName.substring(0, cuName.lastIndexOf('.'))); - // set name of jsp file - String unmangled = JSP2ServletNameUtil.unmangle(cuName); - setJspName(unmangled.substring(unmangled.lastIndexOf('/') + 1)); - } - - if(translation == null) - throw new IllegalArgumentException("JSPTranslation cannot be null"); //$NON-NLS-1$ - - fTranslation = translation; - } - - /** - * Ensures that we only return JSPCompletionProposals. - * @return an array of JSPCompletionProposals - */ - public JSPCompletionProposal[] getJSPCompletionProposals() { - List results = new ArrayList(); - IJavaCompletionProposal[] javaProposals = getJavaCompletionProposals(); - // need to filter out non JSPCompletionProposals - // because their offsets haven't been translated - for (int i = 0; i < javaProposals.length; i++) { - if(javaProposals[i] instanceof JSPCompletionProposal) - results.add(javaProposals[i]); - } - Collections.sort(results, getComparator()); - return (JSPCompletionProposal[])results.toArray(new JSPCompletionProposal[results.size()]); - } - - private Comparator getComparator() { - if(fComparator == null) - fComparator = new CompletionProposalComparator(); - return fComparator; - } - - /** - * Overridden to: - * - translate Java -> JSP offsets - * - fix cursor-position-after - * - fix mangled servlet name in display string - * - remove unwanted proposals (servlet constructor) - */ - protected IJavaCompletionProposal createJavaCompletionProposal(CompletionProposal proposal) { - - JSPCompletionProposal jspProposal = null; - - // from proposal - String completion = String.valueOf(proposal.getCompletion()); - String mangledName = getMangledName(); - - // ignore constructor proposals - // (they will include mangled servlet name) - if(mangledName != null && completion.indexOf(mangledName) == -1) { - - // java offset - int offset = proposal.getReplaceStart(); - // replacement length - int length = proposal.getReplaceEnd() - offset; - // translate offset from Java > JSP - offset = fTranslation.getJspOffset(offset); - // cursor position after must be calculated - int positionAfter = calculatePositionAfter(proposal, completion, offset); - - // from java proposal - IJavaCompletionProposal javaProposal = super.createJavaCompletionProposal(proposal); - Image image = javaProposal.getImage(); - String displayString = javaProposal.getDisplayString(); - displayString = fixupDisplayString(displayString); - IContextInformation contextInformation = javaProposal.getContextInformation(); - String additionalInfo = javaProposal.getAdditionalProposalInfo(); - int relevance = javaProposal.getRelevance(); - - boolean updateLengthOnValidate = true; - - jspProposal = new JSPCompletionProposal(completion, offset, length, positionAfter, image, displayString, contextInformation, additionalInfo, relevance, updateLengthOnValidate); - } - return jspProposal; - } - - /** - * Cacluates the where the cursor should be after applying this proposal. - * eg. method(|) if the method proposal chosen had params. - * - * @param proposal - * @param completion - * @param currentCursorOffset - * @return - */ - private int calculatePositionAfter(CompletionProposal proposal, String completion, int currentCursorOffset) { - // calculate cursor position after - // https://bugs.eclipse.org/bugs/show_bug.cgi?id=118398 - //int positionAfter = currentCursorOffset+completion.length(); - int positionAfter = completion.length(); - - int kind = proposal.getKind(); - - // may need better logic here... - // put cursor inside parenthesis if there's params - // only checking for any kind of declaration - if(kind == CompletionProposal.ANONYMOUS_CLASS_DECLARATION || kind == CompletionProposal.METHOD_DECLARATION || kind == CompletionProposal.POTENTIAL_METHOD_DECLARATION || kind == CompletionProposal.METHOD_REF) { - String[] params = Signature.getParameterTypes(String.valueOf(proposal.getSignature())); - if(completion.length() > 0 && params.length > 0) - positionAfter--; - } - return positionAfter; - } - - /** - * Replaces mangled (servlet) name with jsp file name. - * - * @param displayString - * @return - */ - private String fixupDisplayString(String displayString) { - StringBuffer fixedName = new StringBuffer(displayString); - String mangledName = getMangledName(); - if(mangledName != null) { - int index = displayString.indexOf(mangledName); - if(index != -1) { - fixedName = new StringBuffer(); - fixedName.append(displayString.substring(0, index)); - fixedName.append(getJspName()); - fixedName.append(displayString.substring(index + mangledName.length())); - } - } - return fixedName.toString(); - } - - private String getMangledName() { - return fMangledName; - } - - private void setMangledName(String mangledName) { - fMangledName = mangledName; - } - - private String getJspName() { - return fJspName; - } - - private void setJspName(String jspName) { - fJspName = jspName; - } - - static char[] getTypeTriggers() { - return TYPE_TRIGGERS; - } - - public JSPTranslation getTranslation() { - return fTranslation; - } - -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPTemplateCompletionProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPTemplateCompletionProcessor.java deleted file mode 100644 index f3214dcc06..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPTemplateCompletionProcessor.java +++ /dev/null @@ -1,79 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.contentassist; - -import org.eclipse.jface.text.IRegion; -import org.eclipse.jface.text.ITextViewer; -import org.eclipse.jface.text.contentassist.ICompletionProposal; -import org.eclipse.jface.text.templates.ContextTypeRegistry; -import org.eclipse.jface.text.templates.Template; -import org.eclipse.jface.text.templates.TemplateCompletionProcessor; -import org.eclipse.jface.text.templates.TemplateContext; -import org.eclipse.jface.text.templates.TemplateContextType; -import org.eclipse.jface.text.templates.persistence.TemplateStore; -import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin; -import org.eclipse.jst.jsp.ui.internal.editor.JSPEditorPluginImageHelper; -import org.eclipse.jst.jsp.ui.internal.editor.JSPEditorPluginImages; -import org.eclipse.swt.graphics.Image; - -/** - * Completion processor for JSP Templates. Most of the work is already done by - * the JSP Content Assist processor, so by the time the - * JSPTemplateCompletionProcessor is asked for content assist proposals, the - * jsp content assist processor has already set the context type for - * templates. - * - * @plannedfor 1.0 - */ -class JSPTemplateCompletionProcessor extends TemplateCompletionProcessor { - private String fContextTypeId = null; - - protected ICompletionProposal createProposal(Template template, TemplateContext context, IRegion region, int relevance) { - return new CustomTemplateProposal(template, context, region, getImage(template), relevance); - } - - protected TemplateContextType getContextType(ITextViewer viewer, IRegion region) { - TemplateContextType type = null; - - ContextTypeRegistry registry = getTemplateContextRegistry(); - if (registry != null) - type = registry.getContextType(fContextTypeId); - - return type; - } - - protected Image getImage(Template template) { - // just return the same image for now - return JSPEditorPluginImageHelper.getInstance().getImage(JSPEditorPluginImages.IMG_OBJ_TAG_JSP); - } - - private ContextTypeRegistry getTemplateContextRegistry() { - return JSPUIPlugin.getDefault().getTemplateContextRegistry(); - } - - protected Template[] getTemplates(String contextTypeId) { - Template templates[] = null; - - TemplateStore store = getTemplateStore(); - if (store != null) - templates = store.getTemplates(contextTypeId); - - return templates; - } - - private TemplateStore getTemplateStore() { - return JSPUIPlugin.getDefault().getTemplateStore(); - } - - void setContextType(String contextTypeId) { - fContextTypeId = contextTypeId; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPUseBeanContentAssistProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPUseBeanContentAssistProcessor.java deleted file mode 100644 index ac2997a12e..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPUseBeanContentAssistProcessor.java +++ /dev/null @@ -1,173 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.contentassist; - - - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IWorkspaceRoot; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Path; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.contentassist.ICompletionProposal; -import org.eclipse.jst.jsp.core.internal.provisional.JSP11Namespace; -import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; -import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager; -import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion; -import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion; -import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionContainer; -import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList; -import org.eclipse.wst.sse.core.internal.util.StringUtils; -import org.eclipse.wst.sse.ui.internal.contentassist.CustomCompletionProposal; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode; -import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext; -import org.eclipse.wst.xml.ui.internal.contentassist.ContentAssistRequest; - -/** - * @plannedfor 1.0 - */ -public class JSPUseBeanContentAssistProcessor extends JSPDummyContentAssistProcessor { - - public JSPUseBeanContentAssistProcessor() { - super(); - } - - protected void addAttributeValueProposals(ContentAssistRequest contentAssistRequest) { - - IDOMNode node = (IDOMNode) contentAssistRequest.getNode(); - - // Find the attribute name for which this position should have a value - IStructuredDocumentRegion open = node.getFirstStructuredDocumentRegion(); - ITextRegionList openRegions = open.getRegions(); - int i = openRegions.indexOf(contentAssistRequest.getRegion()); - if (i < 0) - return; - ITextRegion nameRegion = null; - while (i >= 0) { - nameRegion = openRegions.get(i--); - if (nameRegion.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) - break; - } - - String attributeName = null; - if (nameRegion != null) - attributeName = open.getText(nameRegion); - - String currentValue = null; - if (contentAssistRequest.getRegion().getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) - currentValue = contentAssistRequest.getText(); - else - currentValue = ""; //$NON-NLS-1$ - String matchString = null; - // fixups - int start = contentAssistRequest.getReplacementBeginPosition(); - int length = contentAssistRequest.getReplacementLength(); - if (currentValue.length() > StringUtils.strip(currentValue).length() && (currentValue.startsWith("\"") || currentValue.startsWith("'")) //$NON-NLS-1$ //$NON-NLS-2$ - && contentAssistRequest.getMatchString().length() > 0) { - matchString = currentValue.substring(1, contentAssistRequest.getMatchString().length()); - start++; - length = matchString.length(); - } else - matchString = currentValue.substring(0, contentAssistRequest.getMatchString().length()); - boolean existingComplicatedValue = contentAssistRequest.getRegion() != null && contentAssistRequest.getRegion() instanceof ITextRegionContainer; - if (existingComplicatedValue) { - contentAssistRequest.getProposals().clear(); - contentAssistRequest.getMacros().clear(); - } else { - if (attributeName.equals(JSP11Namespace.ATTR_NAME_CLASS)) { - // class is the concrete implementation class - IResource resource = getResource(contentAssistRequest); - ICompletionProposal[] classProposals = JavaTypeFinder.getClassProposals(resource, start, length); - if (classProposals != null) { - for (int j = 0; j < classProposals.length; j++) { - JavaTypeCompletionProposal proposal = (JavaTypeCompletionProposal) classProposals[j]; - if (matchString.length() == 0 || proposal.getQualifiedName().toLowerCase().startsWith(matchString.toLowerCase()) || proposal.getShortName().toLowerCase().startsWith(matchString.toLowerCase())) - contentAssistRequest.addProposal(proposal); - } - } - } else if (attributeName.equals(JSP11Namespace.ATTR_NAME_TYPE)) { - // type is the more general type for the bean - // which means it may be an interface - IResource resource = getResource(contentAssistRequest); - ICompletionProposal[] typeProposals = JavaTypeFinder.getTypeProposals(resource, start, length); - if (typeProposals != null) { - for (int j = 0; j < typeProposals.length; j++) { - JavaTypeCompletionProposal proposal = (JavaTypeCompletionProposal) typeProposals[j]; - if (matchString.length() == 0 || proposal.getQualifiedName().toLowerCase().startsWith(matchString.toLowerCase()) || proposal.getShortName().toLowerCase().startsWith(matchString.toLowerCase())) - contentAssistRequest.addProposal(proposal); - } - } - } else if (attributeName.equals(JSP11Namespace.ATTR_NAME_BEAN_NAME)) { - IResource resource = getResource(contentAssistRequest); - ICompletionProposal[] beanNameProposals = JavaTypeFinder.getBeanProposals(resource, start, length); - if (beanNameProposals != null) { - for (int j = 0; j < beanNameProposals.length; j++) { - if (beanNameProposals[j] instanceof CustomCompletionProposal) { - JavaTypeCompletionProposal proposal = (JavaTypeCompletionProposal) beanNameProposals[j]; - if (matchString.length() == 0 || proposal.getDisplayString().toLowerCase().startsWith(matchString.toLowerCase())) - contentAssistRequest.addProposal(proposal); - } else if (beanNameProposals[j] instanceof JavaTypeCompletionProposal) { - JavaTypeCompletionProposal proposal = (JavaTypeCompletionProposal) beanNameProposals[j]; - if (matchString.length() == 0 || proposal.getQualifiedName().toLowerCase().startsWith(matchString.toLowerCase()) || proposal.getShortName().toLowerCase().startsWith(matchString.toLowerCase())) - contentAssistRequest.addProposal(proposal); - } - } - } - } - } - } - - /** - * Returns project request is in - * - * @param request - * @return - */ - private IResource getResource(ContentAssistRequest request) { - IResource resource = null; - String baselocation = null; - - if (request != null) { - IStructuredDocumentRegion region = request.getDocumentRegion(); - if (region != null) { - IDocument document = region.getParentDocument(); - IStructuredModel model = null; - try { - model = StructuredModelManager.getModelManager().getExistingModelForRead(document); - if (model != null) { - baselocation = model.getBaseLocation(); - } - } finally { - if (model != null) - model.releaseFromRead(); - } - } - } - - if (baselocation != null) { - // copied from JSPTranslationAdapter#getJavaProject - IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); - IPath filePath = new Path(baselocation); - IFile file = null; - - if (filePath.segmentCount() > 1) { - file = root.getFile(filePath); - } - if (file != null) { - resource = file.getProject(); - } - } - return resource; - } - -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JavaParameterListValidator.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JavaParameterListValidator.java deleted file mode 100644 index 3eb1f5681e..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JavaParameterListValidator.java +++ /dev/null @@ -1,216 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.contentassist; - -import org.eclipse.jface.text.Assert; -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.IRegion; -import org.eclipse.jface.text.ITextViewer; -import org.eclipse.jface.text.TextPresentation; -import org.eclipse.jface.text.contentassist.IContextInformation; -import org.eclipse.jface.text.contentassist.IContextInformationPresenter; -import org.eclipse.jface.text.contentassist.IContextInformationValidator; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.StyleRange; - - -/** - * @plannedfor 1.0 - */ -public class JavaParameterListValidator implements IContextInformationValidator, IContextInformationPresenter { - - private int fPosition; - private ITextViewer fViewer; - private IContextInformation fInformation; - - private int fCurrentParameter; - - /** - * @see IContextInformationValidator#install(IContextInformation, ITextViewer, int) - * @see IContextInformationPresenter#install(IContextInformation, ITextViewer, int) - */ - public void install(IContextInformation info, ITextViewer viewer, int documentPosition) { - fPosition= documentPosition; - fViewer= viewer; - fInformation= info; - - fCurrentParameter= -1; - } - - private int getCommentEnd(IDocument d, int pos, int end) throws BadLocationException { - while (pos < end) { - char curr= d.getChar(pos); - pos++; - if (curr == '*') { - if (pos < end && d.getChar(pos) == '/') { - return pos + 1; - } - } - } - return end; - } - - private int getStringEnd(IDocument d, int pos, int end, char ch) throws BadLocationException { - while (pos < end) { - char curr= d.getChar(pos); - pos++; - if (curr == '\\') { - // ignore escaped characters - pos++; - } else if (curr == ch) { - return pos; - } - } - return end; - } - - private int getCharCount(IDocument document, int start, int end, char increment, char decrement, boolean considerNesting) throws BadLocationException { - - Assert.isTrue((increment != 0 || decrement != 0) && increment != decrement); - - int nestingLevel= 0; - int charCount= 0; - while (start < end) { - char curr= document.getChar(start++); - switch (curr) { - case '/': - if (start < end) { - char next= document.getChar(start); - if (next == '*') { - // a comment starts, advance to the comment end - start= getCommentEnd(document, start + 1, end); - } else if (next == '/') { - // '//'-comment: nothing to do anymore on this line - start= end; - } - } - break; - case '*': - if (start < end) { - char next= document.getChar(start); - if (next == '/') { - // we have been in a comment: forget what we read before - charCount= 0; - ++ start; - } - } - break; - case '"': - case '\'': - start= getStringEnd(document, start, end, curr); - break; - default: - - if (considerNesting) { - - if ('(' == curr) - ++ nestingLevel; - else if (')' == curr) - -- nestingLevel; - - if (nestingLevel != 0) - break; - } - - if (increment != 0) { - if (curr == increment) - ++ charCount; - } - - if (decrement != 0) { - if (curr == decrement) - -- charCount; - } - } - } - - return charCount; - } - - /** - * @see IContextInformationValidator#isContextInformationValid(int) - */ - public boolean isContextInformationValid(int position) { - - try { - if (position < fPosition) - return false; - - IDocument document= fViewer.getDocument(); - IRegion line= document.getLineInformationOfOffset(fPosition); - - if (position < line.getOffset() || position >= document.getLength()) - return false; - - return (getCharCount(document, fPosition, position, '(', ')', false) >= 0); - - } catch (BadLocationException x) { - return false; - } - } - - /** - * @see IContextInformationPresenter#updatePresentation(int, TextPresentation) - */ - public boolean updatePresentation(int position, TextPresentation presentation) { - - int currentParameter= -1; - - try { - currentParameter= getCharCount(fViewer.getDocument(), fPosition, position, ',', (char) 0, true); - } catch (BadLocationException x) { - return false; - } - - if (fCurrentParameter != -1) { - if (currentParameter == fCurrentParameter) - return false; - } - - presentation.clear(); - fCurrentParameter= currentParameter; - - String s= fInformation.getInformationDisplayString(); - int start= 0; - int occurrences= 0; - while (occurrences < fCurrentParameter) { - int found= s.indexOf(',', start); - if (found == -1) - break; - start= found + 1; - ++ occurrences; - } - - if (occurrences < fCurrentParameter) { - presentation.addStyleRange(new StyleRange(0, s.length(), null, null, SWT.NORMAL)); - return true; - } - - if (start == -1) - start= 0; - - int end= s.indexOf(',', start); - if (end == -1) - end= s.length(); - - if (start > 0) - presentation.addStyleRange(new StyleRange(0, start, null, null, SWT.NORMAL)); - - if (end > start) - presentation.addStyleRange(new StyleRange(start, end - start, null, null, SWT.BOLD)); - - if (end < s.length()) - presentation.addStyleRange(new StyleRange(end, s.length() - end, null, null, SWT.NORMAL)); - - return true; - } -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JavaTypeCompletionProposal.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JavaTypeCompletionProposal.java deleted file mode 100644 index f6d877ac24..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JavaTypeCompletionProposal.java +++ /dev/null @@ -1,300 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.contentassist; - - - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.IRegion; -import org.eclipse.jface.text.ITextViewer; -import org.eclipse.jst.jsp.core.internal.provisional.JSP11Namespace; -import org.eclipse.jst.jsp.core.internal.provisional.JSP12Namespace; -import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts; -import org.eclipse.swt.graphics.Image; -import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument; -import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion; -import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion; -import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList; -import org.eclipse.wst.sse.core.internal.util.StringUtils; -import org.eclipse.wst.sse.ui.internal.contentassist.CustomCompletionProposal; -import org.eclipse.wst.sse.ui.internal.contentassist.IRelevanceCompletionProposal; -import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext; - -/** - * An implementation of ICompletionProposal whose values can be - * read after creation. - * - * @plannedfor 1.0 - */ -public class JavaTypeCompletionProposal extends CustomCompletionProposal implements IRelevanceCompletionProposal { - - private int fCursorPosition = 0; - private String fLocalDisplayString; - private String fShortName; - private String fQualifiedName; - private String fContainerName; - - public JavaTypeCompletionProposal(String replacementString, int replacementOffset, int replacementLength, String qualifiedName, Image image, String typeName, String containerName, int relevence, boolean updateReplacementLengthOnValidate) { - super(replacementString, replacementOffset, replacementLength, qualifiedName.length() + 2, image, - (containerName != null && containerName.length() > 0) ? typeName + " - " + containerName : typeName, null, null, relevence, true); //$NON-NLS-1$ - // CMVC 243817, superclass was comparing incorrect display string in validate method... - //super(replacementString, replacementOffset, replacementLength, image, (containerName != null && containerName.length() > 0)? typeName + " - " + containerName:typeName/*qualifiedName*/, relevence); - fShortName = typeName; - fQualifiedName = qualifiedName; - fContainerName = containerName; - fCursorPosition = fQualifiedName.length() + 2; - //fProposalInfo = proposalInfo; - if (containerName != null && containerName.length() > 0) - fLocalDisplayString = typeName + " - " + containerName; //$NON-NLS-1$ - else - fLocalDisplayString = typeName; - } - - public String getDisplayString() { - return fLocalDisplayString; - } - - public int getCursorPosition() { - return fCursorPosition; - } - - public void setCursorPosition(int cursorPosition) { - super.setCursorPosition(cursorPosition); - fCursorPosition = cursorPosition; - } - - public String getQualifiedName() { - return fQualifiedName; - } - - public String getAdditionalProposalInfo() { - // String info = super.getAdditionalProposalInfo(); - // if (info == null || info.length() == 0 && fProposalInfo != null) - // return fProposalInfo.getInfo(); - // return info; - return null; // unexplained NPE - } - - public String getShortName() { - return fShortName; - } - - protected String getImport(IStructuredDocumentRegion flatNode) { - ITextRegionList regions = flatNode.getRegions(); - String importSpec = null; - boolean isImport = false; - for (int i = 0; i < regions.size(); i++) { - ITextRegion region = regions.get(i); - if (region.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) { - if (flatNode.getText(region).equals(JSP11Namespace.ATTR_NAME_IMPORT)) { - isImport = true; - } - else { - isImport = false; - } - } - else if (isImport && region.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) { - importSpec = flatNode.getText(region); - } - } - return importSpec; - } - - /** - * Add an import page directive for the current type name - */ - protected int applyImport(IStructuredDocument model) { - // if the type is in the default package or java.lang, skip it - if (fContainerName == null || fContainerName.length() == 0 || fContainerName.equals("java.lang")) //$NON-NLS-1$ - return 0; - // collect page directives and store their import values - List imports = new ArrayList(); - IStructuredDocumentRegion node = model.getFirstStructuredDocumentRegion(); - - // use the last position of a page directive as a hint as to where to add - // a new one - int hint = 0; - // watch for jsp:root so that we use the right XML/JSP format for the directive - boolean useXML = false; - - while (node != null) { - // Can't just look for all StructuredDocumentRegions starting with JSP_DIRECTIVE_OPEN - // since the XML form is required, too - ITextRegionList regions = node.getRegions(); - if (regions.size() > 1) { - ITextRegion name = regions.get(1); - // verify that this is a JSP directive - if (name.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME) { - // verify that this is a *page* directive - if (node.getText(name).equals(JSP11Namespace.ATTR_NAME_PAGE) || node.getText(name).equals(JSP12Namespace.ElementName.DIRECTIVE_PAGE)) { - if (node.getEndOffset() < getReplacementOffset()) - hint = node.getEndOffset(); - String importSpec = getImport(node); - if (importSpec != null) { - imports.add(importSpec); - } - } - } - else { - // if this is a jsp:root tag, use the XML form - useXML = useXML || name.getType() == DOMJSPRegionContexts.JSP_ROOT_TAG_NAME; - } - } - node = node.getNext(); - } - - // evaluate requirements for a "new" import directive - boolean needsImport = !importHandles(fQualifiedName, imports); - int adjustmentLength = 0; - // insert "new" import directive - if (needsImport) { - String directive = null; - - // vary the XML behavior - if (useXML) { - directive = "<jsp:directive.page import=\"" + fQualifiedName + "\"/>"; //$NON-NLS-1$ //$NON-NLS-2$ - } - else { - directive = "<%@ page import=\"" + fQualifiedName + "\" %>"; //$NON-NLS-1$ //$NON-NLS-2$ - } - - try { - IRegion line = model.getLineInformationOfOffset(hint); - boolean prependNewLine = line.getOffset() + line.getLength() == hint; - boolean appendNewLine = hint == 0; - if (prependNewLine) - directive = model.getLineDelimiter() + directive; - if (appendNewLine) - directive = directive + model.getLineDelimiter(); - adjustmentLength = directive.length(); - } - catch (BadLocationException e) { - // ignore - } - - try { - model.replace(hint, 0, directive); - - } - catch (BadLocationException e) { - // Not that we should ever get a BLE, but if so, our - // replacement offset from the Content Assist call should - // work - try { - model.replace(getReplacementOffset(), 0, directive); - adjustmentLength = directive.length(); - } - catch (BadLocationException e2) { - // now what? - } - } - } - return adjustmentLength; - } - - /** - * See if the import specification is a wildcard import, and if so, that - * it applies to the given type. - */ - protected boolean isWildcardMatch(String importSpec, String type) { - int specLength = importSpec.length(); - if (importSpec.endsWith("*") && specLength > 2 && type.length() >= specLength) { //$NON-NLS-1$ - // pull out the package name including the final '.' - String container = importSpec.substring(0, specLength - 1); - // verify that the type is in the container's hierarchy and that - // there are no other package separators afterwards - if (type.startsWith(container) && type.indexOf('.', specLength - 1) < 0) { - // container matches - return true; - } - } - return false; - } - - protected boolean importHandles(String type, List listOfImports) { - Iterator imports = listOfImports.iterator(); - while (imports.hasNext()) { - String importSpec = StringUtils.strip(imports.next().toString()); - if (importSpec.equals(type) || isWildcardMatch(importSpec, type)) - return true; - } - return false; - } - - public void apply(IDocument document, char trigger, int offset) { - // If we have a parsed IStructuredDocument, insert the short name instead of the - // fully qualified name and a import page directive if - // needed. Do the import first so the cursor goes to the right location - // and we don't surprise the user. - - boolean addShortForm = false; //document instanceof IStructuredDocument && fContainerName != null && fContainerName.length() > 0; - if (addShortForm) { - setReplacementString('"' + fShortName + '"'); - int importLength = applyImport((IStructuredDocument) document); - setReplacementOffset(getReplacementOffset() + importLength); - } - - setCursorPosition(getReplacementString().length()); - super.apply(document, trigger, offset); - - } - - /* - * @see org.eclipse.jface.text.contentassist.ICompletionProposalExtension1#apply(org.eclipse.jface.text.ITextViewer, char, int, int) - */ - public void apply(ITextViewer viewer, char trigger, int stateMask, int offset) { - // CMVC 243815 - // (pa) this is overridden to get around replacement length modification - // which is done in the super (since eclipse 2.1) - apply(viewer.getDocument(), trigger, offset); - } - - // code is borrowed from JavaCompletionProposal - protected boolean startsWith(IDocument document, int offset, String word) { - int wordLength = word == null ? 0 : word.length(); - if (offset > getReplacementOffset() + wordLength) - return false; - - try { - int length = offset - getReplacementOffset(); - // CMVC 243817 - // slightly modified to be a little more flexible for attribute value string matching.. - String start = StringUtils.stripQuotes(document.get(getReplacementOffset(), length)); - return word.toLowerCase().startsWith(start.toLowerCase()) || fQualifiedName.toLowerCase().startsWith(start.toLowerCase()); - //return word.substring(0, length).equalsIgnoreCase(start); - } - catch (BadLocationException x) { - // ignore - } - - return false; - } - - /* (non-Javadoc) - * @see org.eclipse.jdt.internal.ui.text.java.JavaCompletionProposal#validate(org.eclipse.jface.text.IDocument, int, org.eclipse.jface.text.DocumentEvent) - // */ - // public boolean validate(IDocument document, int offset, org.eclipse.jface.text.DocumentEvent event) { - // return super.validate(document, offset, event); - // } - /* (non-Javadoc) - * @see org.eclipse.jdt.internal.ui.text.java.JavaCompletionProposal#selected(org.eclipse.jface.text.ITextViewer, boolean) - */ - public void selected(ITextViewer viewer, boolean smartToggle) { - // (pa) we currently don't use smart toggle... - super.selected(viewer, false); - } - -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JavaTypeFinder.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JavaTypeFinder.java deleted file mode 100644 index b3120d6422..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JavaTypeFinder.java +++ /dev/null @@ -1,134 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.contentassist; - - - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jdt.core.JavaCore; -import org.eclipse.jdt.core.search.IJavaSearchConstants; -import org.eclipse.jdt.core.search.IJavaSearchScope; -import org.eclipse.jdt.core.search.SearchEngine; -import org.eclipse.jdt.core.search.SearchPattern; -import org.eclipse.jface.text.contentassist.ICompletionProposal; -import org.eclipse.jst.jsp.ui.internal.Logger; -import org.eclipse.wst.common.uriresolver.internal.util.URIHelper; -import org.eclipse.wst.sse.ui.internal.contentassist.CustomCompletionProposal; -import org.eclipse.wst.sse.ui.internal.contentassist.IRelevanceConstants; - -/** - * @plannedfor 1.0 - */ -public class JavaTypeFinder { - - public static ICompletionProposal[] getBeanProposals(IResource resource, int replacementStart, int replacementLength) { - ICompletionProposal[] typeProposals = getTypeProposals(resource, replacementStart, replacementLength); - ICompletionProposal[] serialProposals = getSerializedProposals(resource, replacementStart, replacementLength); - ICompletionProposal[] beanProposals = new ICompletionProposal[typeProposals.length + serialProposals.length]; - - int i; - for (i = 0; i < serialProposals.length; i++) { - beanProposals[i] = serialProposals[i]; - } - for (i = serialProposals.length; i < serialProposals.length + typeProposals.length; i++) { - beanProposals[i] = typeProposals[i - serialProposals.length]; - } - return beanProposals; - } - - private static void getMembers(IContainer container, List membersList) { - try { - IResource[] members = container.members(true); - if (members != null) { - for (int i = 0; i < members.length; i++) { - if (members[i].getType() == IResource.FILE) - membersList.add(members[i]); - else if (members[i].getType() == IResource.FOLDER) - getMembers((IContainer) members[i], membersList); - } - } - } - catch (CoreException e) { - // do nothing - } - } - - private static ICompletionProposal[] getSerializedProposals(IResource resource, int replacementStart, int replacementLength) { - List names = new ArrayList(); - List resources = new ArrayList(); - getMembers(resource.getProject(), resources); - IResource memberResource = null; - for (int i = 0; i < resources.size(); i++) { - memberResource = (IResource) resources.get(i); - if (memberResource.getType() == IResource.FILE && memberResource.getName().endsWith(".ser")) { //$NON-NLS-1$ - String path = URIHelper.normalize(memberResource.getFullPath().toString(), resource.getFullPath().toString(), resource.getProject().getFullPath().toString()); - if (path != null) { - names.add(new CustomCompletionProposal("\"" + path + "\"", //$NON-NLS-1$ //$NON-NLS-2$ - replacementStart, replacementLength, path.length() + 2, null, path, null, null, IRelevanceConstants.R_NONE)); - } - } - } - return (ICompletionProposal[]) names.toArray(new ICompletionProposal[names.size()]); - } - - /** - * - * @param resource - * @param replacementStart - * @param replacementLength - * @param searchFor IJavaSearchConstants.TYPE, IJavaSearchConstants.CLASS - * @return - */ - private static ICompletionProposal[] findProposals(IResource resource, int replacementStart, int replacementLength, int searchFor, boolean ignoreAbstractClasses) { - - JavaTypeNameRequestor requestor = new JavaTypeNameRequestor(); - requestor.setJSPOffset(replacementStart); - requestor.setReplacementLength(replacementLength); - requestor.setIgnoreAbstractClasses(ignoreAbstractClasses); - - try { - IJavaElement[] elements = new IJavaElement[]{getJavaProject(resource)}; - IJavaSearchScope scope = SearchEngine.createJavaSearchScope(elements); - new SearchEngine().searchAllTypeNames(null, null, SearchPattern.R_PATTERN_MATCH | SearchPattern.R_PREFIX_MATCH, searchFor, scope, requestor, IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, null); - - } - catch (CoreException exc) { - Logger.logException(exc); - } - catch (Exception exc) { - // JavaModel - Logger.logException(exc); - } - return requestor.getProposals(); - } - - public static ICompletionProposal[] getTypeProposals(IResource resource, int replacementStart, int replacementLength) { - return findProposals(resource, replacementStart, replacementLength, IJavaSearchConstants.TYPE, false); - } - - public static ICompletionProposal[] getClassProposals(IResource resource, int replacementStart, int replacementLength) { - return findProposals(resource, replacementStart, replacementLength, IJavaSearchConstants.CLASS, true); - } - - private static IJavaProject getJavaProject(IResource resource) { - IProject proj = resource.getProject(); - IJavaProject javaProject = JavaCore.create(proj); - return javaProject; - } -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JavaTypeNameRequestor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JavaTypeNameRequestor.java deleted file mode 100644 index c254d14761..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JavaTypeNameRequestor.java +++ /dev/null @@ -1,121 +0,0 @@ -package org.eclipse.jst.jsp.ui.internal.contentassist; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.jdt.core.CompletionProposal; -import org.eclipse.jdt.core.Flags; -import org.eclipse.jdt.core.Signature; -import org.eclipse.jdt.core.search.TypeNameRequestor; -import org.eclipse.jdt.ui.text.java.CompletionProposalLabelProvider; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jst.jsp.ui.internal.editor.JSPEditorPluginImageHelper; -import org.eclipse.swt.graphics.Image; -import org.eclipse.wst.javascript.ui.internal.common.contentassist.IRelevanceConstants; - -/** - * Use w/ JDT search engine to find all type names. - * Creates proposals from matches reported. - * - * @plannedfor 1.0 - */ -public class JavaTypeNameRequestor extends TypeNameRequestor { - - private int fJSPOffset = -1; - private int fReplacementLength = -1; - private List fProposals = new ArrayList(); - private boolean fIgnoreAbstractClasses = false; - - private CompletionProposalLabelProvider fLabelProvider = new CompletionProposalLabelProvider(); - - public void acceptType(int modifiers, char[] packageName, char[] simpleTypeName, char[][] enclosingTypeNames, String path) { - - int offset = getJSPOffset(); - int length = getReplacementLength(); - - // somehow offset or length was set incorrectly - if(offset == -1 || length == -1) - return; - // ignore abstract classes? - if(ignoreAbstractClasses() && Flags.isAbstract(modifiers)) - return; - - Image image = calculateImage(modifiers); - - String containerNameString = new String(packageName); - String typeNameString = String.valueOf(simpleTypeName); - - // containername can be null - String fullName = concatenateName(containerNameString, typeNameString); - - String simpleName = Signature.getSimpleName(fullName); - StringBuffer buf = new StringBuffer(simpleName); - String typeQualifier = Signature.getQualifier(fullName); - if (typeQualifier.length() > 0) { - buf.append(" - "); //$NON-NLS-1$ - buf.append(typeQualifier); - } - - JavaTypeCompletionProposal proposal = new JavaTypeCompletionProposal(fullName, offset, length, fullName, image, typeNameString, typeQualifier, IRelevanceConstants.R_NONE, true); - proposal.setTriggerCharacters(JSPProposalCollector.getTypeTriggers()); - fProposals.add(proposal); - } - - - private Image calculateImage(int modifiers) { - CompletionProposal p = CompletionProposal.create(CompletionProposal.TYPE_REF, getJSPOffset()); - p.setFlags(modifiers); - - //https://bugs.eclipse.org/bugs/show_bug.cgi?id=102206 - char[] sig = new char[]{Signature.C_UNRESOLVED}; - p.setSignature(sig); - - ImageDescriptor descriptor = fLabelProvider.createImageDescriptor(p); - Image image = JSPEditorPluginImageHelper.getInstance().getImage(descriptor); - return image; - } - - /** - * Concatenates two names. Uses a dot for separation. Both strings can be - * empty or <code>null</code>. - */ - public String concatenateName(String name1, String name2) { - StringBuffer buf = new StringBuffer(); - if (name1 != null && name1.length() > 0) { - buf.append(name1); - } - if (name2 != null && name2.length() > 0) { - if (buf.length() > 0) { - buf.append('.'); - } - buf.append(name2); - } - return buf.toString(); - } - - int getJSPOffset() { - return fJSPOffset; - } - - void setJSPOffset(int offset) { - fJSPOffset = offset; - } - - int getReplacementLength() { - return fReplacementLength; - } - - void setReplacementLength(int replacementLength) { - fReplacementLength = replacementLength; - } - void setIgnoreAbstractClasses(boolean ignore) { - fIgnoreAbstractClasses = ignore; - } - boolean ignoreAbstractClasses() { - return fIgnoreAbstractClasses; - } - - JavaTypeCompletionProposal[] getProposals() { - return (JavaTypeCompletionProposal[])fProposals.toArray(new JavaTypeCompletionProposal[fProposals.size()]); - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/NoRegionContentAssistProcessorForJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/NoRegionContentAssistProcessorForJSP.java deleted file mode 100644 index 43ca5b6238..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/NoRegionContentAssistProcessorForJSP.java +++ /dev/null @@ -1,96 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.contentassist; - -import org.eclipse.jface.text.ITextViewer; -import org.eclipse.jface.text.contentassist.IContentAssistProcessor; -import org.eclipse.jst.jsp.core.internal.provisional.JSP11Namespace; -import org.eclipse.jst.jsp.core.internal.provisional.text.IJSPPartitionTypes; -import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts; -import org.eclipse.wst.html.core.internal.provisional.text.IHTMLPartitionTypes; -import org.eclipse.wst.html.ui.internal.contentassist.NoRegionContentAssistProcessorForHTML; -import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument; -import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion; -import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredPartitionTypes; -import org.eclipse.wst.xml.core.internal.provisional.text.IXMLPartitions; - -/** - * @plannedfor 1.0 - */ -public class NoRegionContentAssistProcessorForJSP extends NoRegionContentAssistProcessorForHTML { - - private String[] fJSPContexts = null; - - public NoRegionContentAssistProcessorForJSP() { - super(); - initJSPContexts(); - } - - /* - * @see org.eclipse.wst.html.ui.internal.contentassist.NoRegionContentAssistProcessorForHTML#initPartitionToProcessorMap() - */ - protected void initPartitionToProcessorMap() { - super.initPartitionToProcessorMap(); - IContentAssistProcessor jspContentAssistProcessor = new JSPContentAssistProcessor(); - - // JSP - addPartitionProcessor(IStructuredPartitionTypes.DEFAULT_PARTITION, jspContentAssistProcessor); - addPartitionProcessor(IXMLPartitions.XML_DEFAULT, jspContentAssistProcessor); - addPartitionProcessor(IHTMLPartitionTypes.HTML_DEFAULT, jspContentAssistProcessor); - addPartitionProcessor(IHTMLPartitionTypes.HTML_COMMENT, jspContentAssistProcessor); - addPartitionProcessor(IJSPPartitionTypes.JSP_DEFAULT, jspContentAssistProcessor); - addPartitionProcessor(IJSPPartitionTypes.JSP_DIRECTIVE, jspContentAssistProcessor); - addPartitionProcessor(IJSPPartitionTypes.JSP_CONTENT_DELIMITER, jspContentAssistProcessor); - addPartitionProcessor(IJSPPartitionTypes.JSP_CONTENT_JAVASCRIPT, jspContentAssistProcessor); - - IContentAssistProcessor jspJavaContentAssistProcessor = new JSPJavaContentAssistProcessor(); - addPartitionProcessor(IJSPPartitionTypes.JSP_CONTENT_JAVA, jspJavaContentAssistProcessor); - - } - - protected void initNameToProcessorMap() { - super.initNameToProcessorMap(); - JSPPropertyContentAssistProcessor jspPropertyCAP = new JSPPropertyContentAssistProcessor(); - addNameProcessor(JSP11Namespace.ElementName.SETPROPERTY, jspPropertyCAP); - addNameProcessor(JSP11Namespace.ElementName.GETPROPERTY, jspPropertyCAP); - addNameProcessor(JSP11Namespace.ElementName.USEBEAN, new JSPUseBeanContentAssistProcessor()); - } - - private void initJSPContexts() { - fJSPContexts = new String[]{DOMJSPRegionContexts.JSP_CLOSE, DOMJSPRegionContexts.JSP_CONTENT, DOMJSPRegionContexts.JSP_DECLARATION_OPEN, DOMJSPRegionContexts.JSP_EXPRESSION_OPEN, DOMJSPRegionContexts.JSP_SCRIPTLET_OPEN}; - } - - /** - * Quick check to see if context (String) should map to - * JSPContentAssistProcessor. - * - * @param context - * @return if it's a JSP Region (for which we need JSP Content assist) - */ - private boolean isJSPRegion(IStructuredDocumentRegion sdRegion) { - String context = sdRegion.getType(); - for (int i = 0; i < fJSPContexts.length; i++) { - if (context == fJSPContexts[i]) - return true; - } - return false; - } - - protected IContentAssistProcessor guessContentAssistProcessor(ITextViewer viewer, int documentOffset) { - IContentAssistProcessor p = super.guessContentAssistProcessor(viewer, documentOffset); - if (p == null) { - IStructuredDocumentRegion sdRegion = ((IStructuredDocument) viewer.getDocument()).getRegionAtCharacterOffset(documentOffset); - if (isJSPRegion(sdRegion)) - p = getPartitionProcessor(IJSPPartitionTypes.JSP_CONTENT_JAVA); - } - return p; - } -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/derived/SingleCharReader.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/derived/SingleCharReader.java deleted file mode 100644 index 0a7cdecdc5..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/derived/SingleCharReader.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM - Initial API and implementation - * Jens Lukowski/Innoopract - initial renaming/restructuring - * - */ -package org.eclipse.jst.jsp.ui.internal.derived; - -import java.io.IOException; -import java.io.Reader; - -/* - * Copied from org.eclipse.jdt.internal.corext.javadoc.SingleCharReader. - * Modification was made to fix statement unnecessarily nested within else - * clause warning in read(..). - */ -public abstract class SingleCharReader extends Reader { - - /** - * @see Reader#read() - */ - public abstract int read() throws IOException; - - /** - * @see Reader#read(char[],int,int) - */ - public int read(char cbuf[], int off, int len) throws IOException { - int end = off + len; - for (int i = off; i < end; i++) { - int ch = read(); - if (ch == -1) { - if (i == off) { - return -1; - } - return i - off; - } - cbuf[i] = (char) ch; - } - return len; - } - - /** - * @see Reader#ready() - */ - public boolean ready() throws IOException { - return true; - } - - /** - * Gets the content as a String - */ - public String getString() throws IOException { - StringBuffer buf = new StringBuffer(); - int ch; - while ((ch = read()) != -1) { - buf.append((char) ch); - } - return buf.toString(); - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/editor/ActionContributorJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/editor/ActionContributorJSP.java deleted file mode 100644 index fec333cbbd..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/editor/ActionContributorJSP.java +++ /dev/null @@ -1,90 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.editor; - -import java.util.ResourceBundle; - -import org.eclipse.jdt.ui.actions.RefactorActionGroup; -import org.eclipse.jface.action.IMenuManager; -import org.eclipse.jface.action.MenuManager; -import org.eclipse.jst.jsp.ui.internal.IActionConstantsJSP; -import org.eclipse.jst.jsp.ui.internal.IActionDefinitionIdsJSP; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; -import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.IWorkbenchActionConstants; -import org.eclipse.ui.texteditor.RetargetTextEditorAction; -import org.eclipse.wst.html.ui.internal.edit.ui.ActionContributorHTML; -import org.eclipse.wst.sse.ui.internal.actions.StructuredTextEditorActionConstants; - -/** - * ActionContributorJSP - * - * This class should not be used inside multi page editor's ActionBarContributor, - * since cascaded init() call from the ActionBarContributor - * will causes exception and it leads to lose whole toolbars. - * - * Instead, use SourcePageActionContributor for source page contributor - * of multi page editor. - * - * Note that this class is still valid for single page editor. - */ -public class ActionContributorJSP extends ActionContributorHTML { - - private RetargetTextEditorAction renameElementAction = null; - private RetargetTextEditorAction moveElementAction = null; - private IMenuManager refactorMenu = null; - - private static final String[] EDITOR_IDS = {"org.eclipse.jst.jsp.core.jspsource.source", "org.eclipse.wst.sse.ui.StructuredTextEditor"}; //$NON-NLS-1$ //$NON-NLS-2$ - - public ActionContributorJSP() { - super(); - - ResourceBundle bundle = JSPUIMessages.getResourceBundle(); - this.renameElementAction = new RetargetTextEditorAction(bundle, IActionConstantsJSP.ACTION_NAME_RENAME_ELEMENT + StructuredTextEditorActionConstants.DOT); - this.renameElementAction.setActionDefinitionId(IActionDefinitionIdsJSP.RENAME_ELEMENT); - - this.moveElementAction = new RetargetTextEditorAction(bundle, IActionConstantsJSP.ACTION_NAME_MOVE_ELEMENT + StructuredTextEditorActionConstants.DOT); - this.moveElementAction.setActionDefinitionId(IActionDefinitionIdsJSP.MOVE_ELEMENT); - - // the refactor menu, add the menu itself to add all refactor actions - this.refactorMenu = new MenuManager(JSPUIMessages.ActionContributorJSP_0, RefactorActionGroup.MENU_ID); //$NON-NLS-1$ - refactorMenu.add(this.renameElementAction); - refactorMenu.add(this.moveElementAction); - } - - - protected String[] getExtensionIDs() { - return EDITOR_IDS; - } - - - protected void addToMenu(IMenuManager menu) { - super.addToMenu(menu); - - menu.insertAfter(IWorkbenchActionConstants.M_EDIT, this.refactorMenu); - } - - - public void setActiveEditor(IEditorPart activeEditor) { - - super.setActiveEditor(activeEditor); - this.renameElementAction.setAction(getAction(getTextEditor(getActiveEditorPart()), IActionConstantsJSP.ACTION_NAME_RENAME_ELEMENT)); - this.moveElementAction.setAction(getAction(getTextEditor(getActiveEditorPart()), IActionConstantsJSP.ACTION_NAME_MOVE_ELEMENT)); - } - - - public void setViewerSpecificContributionsEnabled(boolean enabled) { - - super.setViewerSpecificContributionsEnabled(enabled); - this.renameElementAction.setEnabled(enabled); - this.moveElementAction.setEnabled(enabled); - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/editor/IHelpContextIds.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/editor/IHelpContextIds.java deleted file mode 100644 index a07242cfc5..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/editor/IHelpContextIds.java +++ /dev/null @@ -1,53 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.editor; - -import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin; - -/** - * Help context ids for the JSP Source Editor. - * <p> - * This interface contains constants only; it is not intended to be implemented. - * </p> - * - */ -public interface IHelpContextIds { - // org.eclipse.jst.jsp.ui. - public static final String PREFIX = JSPUIPlugin.ID + "."; //$NON-NLS-1$ - - - // // figured out on the fly - // // JSP Source page editor - // public static final String JSP_SOURCEVIEW_HELPID = - // ContentTypeIdForJSP.ContentTypeID_JSP +"_source_HelpId"; //$NON-NLS-1$ - - // JSP Files Preference page - public static final String JSP_PREFWEBX_FILES_HELPID = PREFIX + "webx0050"; //$NON-NLS-1$ - // JSP Styles Preference page - public static final String JSP_PREFWEBX_STYLES_HELPID = PREFIX + "webx0051"; //$NON-NLS-1$ - // JSP Templates Preference page - public static final String JSP_PREFWEBX_TEMPLATES_HELPID = PREFIX + "webx0052"; //$NON-NLS-1$ - - - // // JSP Fragment Property Page - // public static final String JSP_FRAGMENT_HELPID = PREFIX + "jspf1000"; - // //$NON-NLS-1$ - -// // JSP Source Editor Context Menu -// // Refactor Rename -// public static final String JSP_REFACTORRENAME_HELPID = PREFIX + "jspr0010"; //$NON-NLS-1$ -// -// // Refactor Move -// public static final String JSP_REFACTORMOVE_HELPID = PREFIX + "jspr0020"; //$NON-NLS-1$ - - // JSP New File Wizard - Template Page - public static final String JSP_NEWWIZARD_TEMPLATE_HELPID = PREFIX + "jspw0010"; //$NON-NLS-1$ -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/editor/JSPEditorPluginImageHelper.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/editor/JSPEditorPluginImageHelper.java deleted file mode 100644 index b659b9b301..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/editor/JSPEditorPluginImageHelper.java +++ /dev/null @@ -1,179 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.editor; - -import java.util.HashMap; - -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.resource.ImageRegistry; -import org.eclipse.jface.resource.JFaceResources; -import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin; -import org.eclipse.swt.graphics.Image; -import org.eclipse.ui.plugin.AbstractUIPlugin; - - -/** - * Helper class to handle images provided by this plug-in. - * - * NOTE: For internal use only. For images used externally, please use the - * Shared***ImageHelper class instead. - * - * @author amywu - */ -public class JSPEditorPluginImageHelper { - private final String PLUGINID = JSPUIPlugin.ID; - private static JSPEditorPluginImageHelper instance = null; - - // save a descriptor for each image - private HashMap fImageDescRegistry = null; - - /** - * Gets the instance. - * - * @return Returns a JSPEditorPluginImageHelper - */ - public synchronized static JSPEditorPluginImageHelper getInstance() { - if (instance == null) - instance = new JSPEditorPluginImageHelper(); - return instance; - } - - /** - * Retrieves the image associated with resource from the image registry. - * If the image cannot be retrieved, attempt to find and load the image at - * the location specified in resource. - * - * @param resource - * the image to retrieve - * @return Image the image associated with resource or null if one could - * not be found - */ - public Image getImage(String resource) { - Image image = getImageRegistry().get(resource); - if (image == null) { - // create an image - image = createImage(resource); - } - return image; - } - - /** - * Retrieves the Image associated with ImageDescriptor from the image - * descriptor registry. If the Image cannot be retrieved, it is created - * from the ImageDescriptor - * - * @param resource - * the image descriptor to retrieve - * @return Image the associated with the ImageDescriptor or - * the default "missing" image descriptor if one could not be - * found - */ - public Image getImage(ImageDescriptor descriptor) { - if (descriptor == null) - descriptor= ImageDescriptor.getMissingImageDescriptor(); - - Image result= (Image)getImageDescriptorRegistry().get(descriptor); - if (result != null) - return result; - - result= descriptor.createImage(); - if (result != null) - getImageDescriptorRegistry().put(descriptor, result); - return result; - } - - /** - * Retrieves the image descriptor associated with resource from the image - * descriptor registry. If the image descriptor cannot be retrieved, - * attempt to find and load the image descriptor at the location specified - * in resource. - * - * @param resource - * the image descriptor to retrieve - * @return ImageDescriptor the image descriptor assocated with resource or - * the default "missing" image descriptor if one could not be - * found - */ - public ImageDescriptor getImageDescriptor(String resource) { - ImageDescriptor imageDescriptor = null; - Object o = getImageDescriptorRegistry().get(resource); - if (o == null) { - //create a descriptor - imageDescriptor = createImageDescriptor(resource); - } - else { - imageDescriptor = (ImageDescriptor) o; - } - return imageDescriptor; - } - - /** - * Returns the image descriptor registry for this plugin. - * - * @return HashMap - image descriptor registry for this plugin - */ - private HashMap getImageDescriptorRegistry() { - if (fImageDescRegistry == null) - fImageDescRegistry = new HashMap(); - return fImageDescRegistry; - } - - /** - * Returns the image registry for this plugin. - * - * @return ImageRegistry - image registry for this plugin - */ - private ImageRegistry getImageRegistry() { - return JFaceResources.getImageRegistry(); - } - - /** - * Creates an image from the given resource and adds the image to the - * image registry. - * - * @param resource - * @return Image - */ - private Image createImage(String resource) { - ImageDescriptor desc = getImageDescriptor(resource); - Image image = null; - - if (desc != null) { - image = desc.createImage(); - // dont add the missing image descriptor image to the image registry - if (!desc.equals(ImageDescriptor.getMissingImageDescriptor())) - getImageRegistry().put(resource, image); - } - return image; - } - - /** - * Creates an image descriptor from the given imageFilePath and adds the - * image descriptor to the image descriptor registry. If an image - * descriptor could not be created, the default "missing" image descriptor - * is returned but not added to the image descriptor registry. - * - * @param imageFilePath - * @return ImageDescriptor image descriptor for imageFilePath or default - * "missing" image descriptor if resource could not be found - */ - private ImageDescriptor createImageDescriptor(String imageFilePath) { - ImageDescriptor imageDescriptor = AbstractUIPlugin.imageDescriptorFromPlugin(PLUGINID, imageFilePath); - if (imageDescriptor != null) { - getImageDescriptorRegistry().put(imageFilePath, imageDescriptor); - } - else { - imageDescriptor = ImageDescriptor.getMissingImageDescriptor(); - } - - return imageDescriptor; - } -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/editor/JSPEditorPluginImages.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/editor/JSPEditorPluginImages.java deleted file mode 100644 index d86c04bbcf..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/editor/JSPEditorPluginImages.java +++ /dev/null @@ -1,48 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.editor; - -/** - * Bundle of most images used by the JSP Editor plug-in. - */ -public class JSPEditorPluginImages { - public static final String IMG_OBJ_CLASS_OBJ = "icons/full/obj16/class_obj.gif"; //$NON-NLS-1$ - public static final String IMG_OBJ_TAG_GENERIC = "icons/full/obj16/tag-generic.gif"; //$NON-NLS-1$ - public static final String IMG_OBJ_TAG_JSP = "icons/full/obj16/tag-jsp.gif"; //$NON-NLS-1$ - public static final String IMG_OBJ_TAG_TEMPLATE = "icons/full/obj16/tag-template.gif"; //$NON-NLS-1$ - public static final String IMG_OBJ_PUBLIC = "icons/full/obj16/public.gif"; //$NON-NLS-1$ - - public static final String FIELD_PROTECTED_OBJ = "icons/full/obj16/field_protected_obj.gif"; //$NON-NLS-1$ - public static final String FIELD_PUBLIC_OBJ = "icons/full/obj16/field_public_obj.gif"; //$NON-NLS-1$ - public static final String FIELD_DEFAULT_OBJ= "icons/full/obj16/field_default_obj.gif"; //$NON-NLS-1$ - public static final String FIELD_PRIVATE_OBJ = "icons/full/obj16/field_private_obj.gif"; //$NON-NLS-1$ - - public static final String DEFAULT_CO = "icons/full/obj16/default_co.gif"; //$NON-NLS-1$ - public static final String PROTECTED_CO = "icons/full/obj16/protected_co.gif"; //$NON-NLS-1$ - public static final String PUBLIC_CO = "icons/full/obj16/public_co.gif"; //$NON-NLS-1$ - public static final String PRIVATE_CO = "icons/full/obj16/private_co.gif"; //$NON-NLS-1$ - - public static final String INNERCLASS_DEFAULT_OBJ= "icons/full/obj16/innerclass_default_obj.gif"; //$NON-NLS-1$ - public static final String INNERCLASS_PRIVATE_OBJ = "icons/full/obj16/innerclass_private_obj.gif"; //$NON-NLS-1$ - public static final String INNERCLASS_PROTECTED_OBJ = "icons/full/obj16/innerclass_protected_obj.gif"; //$NON-NLS-1$ - public static final String INNERCLASS_PUBLIC_OBJ = "icons/full/obj16/innerclass_public_obj.gif"; //$NON-NLS-1$ - - public static final String INNERINTERFACE_DEFAULT_OBJ = "icons/full/obj16/innerinterface_default_obj.gif"; //$NON-NLS-1$ - public static final String INNERINTERFACE_PRIVATE_OBJ = "icons/full/obj16/innerinterface_private_obj.gif"; //$NON-NLS-1$ - public static final String INNERINTERFACE_PROTECTED_OBJ = "icons/full/obj16/innerinterface_protected_obj.gif"; //$NON-NLS-1$ - public static final String INNERINTERFACE_PUBLIC_OBJ = "icons/full/obj16/innerinterface_public_obj.gif"; //$NON-NLS-1$ - - public static final String PACKAGE_OBJ = "icons/full/obj16/package_obj.gif"; //$NON-NLS-1$ - - public static final String LOCAL_VARIABLE_OBJ = "icons/full/obj16/localvariable_obj.gif"; //$NON-NLS-1$ - - public static final String IMG_OBJ_WIZBAN_NEWJSPFILE = "icons/full/wizban/newjspfile_wiz.gif"; //$NON-NLS-1$ -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/editor/JSPSourceEditingTextTools.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/editor/JSPSourceEditingTextTools.java deleted file mode 100644 index d31cb31aa9..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/editor/JSPSourceEditingTextTools.java +++ /dev/null @@ -1,62 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.editor; - - - -import org.eclipse.jst.jsp.core.internal.document.PageDirectiveAdapter; -import org.eclipse.jst.jsp.core.internal.provisional.JSP11Namespace; -import org.eclipse.jst.jsp.core.internal.provisional.JSP12Namespace; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument; -import org.eclipse.wst.xml.ui.internal.provisional.XMLSourceEditingTextTools; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -/** - * Implements ISourceEditingTextTools interface - */ -public class JSPSourceEditingTextTools extends XMLSourceEditingTextTools { - - public String getPageLanguage(Node node) { - String language = null; - Document doc = null; - if (node.getNodeType() == Node.DOCUMENT_NODE) { - doc = (Document) node; - } - else { - doc = node.getOwnerDocument(); - } - if (doc != null) { - if (doc instanceof IDOMDocument) { - PageDirectiveAdapter adapter = (PageDirectiveAdapter) ((IDOMDocument) doc).getAdapterFor(PageDirectiveAdapter.class); - if (adapter != null) - language = adapter.getLanguage(); - } - else { - // iterate through all of the page directives - NodeList pageDirectives = doc.getElementsByTagName(JSP12Namespace.ElementName.DIRECTIVE_PAGE); - for (int i = 0; i < pageDirectives.getLength(); i++) { - Element pageDirective = (Element) pageDirectives.item(i); - String langValue = pageDirective.getAttribute(JSP11Namespace.ATTR_NAME_LANGUAGE); - // last one to declare a language wins - if (langValue != null) - language = langValue; - } - } - } - // if no language was specified anywhere, assume Java - if (language == null) - language = JSP11Namespace.ATTR_VALUE_JAVA; - return language; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/format/FormattingStrategyJSPJava.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/format/FormattingStrategyJSPJava.java deleted file mode 100644 index 2c9b02dd3d..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/format/FormattingStrategyJSPJava.java +++ /dev/null @@ -1,110 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.format; - -import java.util.LinkedList; -import java.util.Map; - -import org.eclipse.jdt.core.ICompilationUnit; -import org.eclipse.jdt.core.JavaModelException; -import org.eclipse.jdt.core.ToolFactory; -import org.eclipse.jdt.core.formatter.CodeFormatter; -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.TextUtilities; -import org.eclipse.jface.text.TypedPosition; -import org.eclipse.jface.text.formatter.ContextBasedFormattingStrategy; -import org.eclipse.jface.text.formatter.FormattingContextProperties; -import org.eclipse.jface.text.formatter.IFormattingContext; -import org.eclipse.jst.jsp.core.internal.Logger; -import org.eclipse.jst.jsp.core.internal.java.JSPTranslation; -import org.eclipse.jst.jsp.core.internal.java.JSPTranslationUtil; -import org.eclipse.text.edits.MalformedTreeException; -import org.eclipse.text.edits.TextEdit; - - -public class FormattingStrategyJSPJava extends ContextBasedFormattingStrategy { - - /** Documents to be formatted by this strategy */ - private final LinkedList fDocuments = new LinkedList(); - /** Partitions to be formatted by this strategy */ - private final LinkedList fPartitions = new LinkedList(); - JSPTranslation translation = null; - - /** - * Creates a new java formatting strategy. - */ - public FormattingStrategyJSPJava() { - super(); - } - - /* - * @see org.eclipse.jface.text.formatter.ContextBasedFormattingStrategy#format() - */ - public void format() { - super.format(); - - final IDocument document = (IDocument) fDocuments.removeFirst(); - final TypedPosition partition = (TypedPosition) fPartitions.removeFirst(); - - if (document != null && partition != null) { - try { - - JSPTranslationUtil translationUtil = new JSPTranslationUtil(document); - ICompilationUnit cu = translationUtil.getCompilationUnit(); - if (cu != null) { - String cuSource = cu.getSource(); - TextEdit textEdit = formatString(CodeFormatter.K_COMPILATION_UNIT, cuSource, 0, TextUtilities.getDefaultLineDelimiter(document), getPreferences()); - - TextEdit jspEdit = translationUtil.getTranslation().getJspEdit(textEdit); - if (jspEdit != null && jspEdit.hasChildren()) - jspEdit.apply(document); - } - - } - catch (MalformedTreeException exception) { - Logger.logException(exception); - } - catch (BadLocationException exception) { - // Can only happen on concurrent document modification - log - // and bail out - Logger.logException(exception); - } - catch (JavaModelException exception) { - Logger.logException(exception); - } - } - } - - /* - * @see org.eclipse.jface.text.formatter.ContextBasedFormattingStrategy#formatterStarts(org.eclipse.jface.text.formatter.IFormattingContext) - */ - public void formatterStarts(final IFormattingContext context) { - super.formatterStarts(context); - - fPartitions.addLast(context.getProperty(FormattingContextProperties.CONTEXT_PARTITION)); - fDocuments.addLast(context.getProperty(FormattingContextProperties.CONTEXT_MEDIUM)); - } - - /* - * @see org.eclipse.jface.text.formatter.ContextBasedFormattingStrategy#formatterStops() - */ - public void formatterStops() { - super.formatterStops(); - - fPartitions.clear(); - fDocuments.clear(); - } - - public TextEdit formatString(int kind, String string, int indentationLevel, String lineSeparator, Map options) { - return ToolFactory.createCodeFormatter(options).format(kind, string, 0, string.length(), indentationLevel, lineSeparator); - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/ExternalFileEditorInput.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/ExternalFileEditorInput.java deleted file mode 100644 index 4b50266650..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/ExternalFileEditorInput.java +++ /dev/null @@ -1,160 +0,0 @@ -package org.eclipse.jst.jsp.ui.internal.hyperlink; - -import java.io.File; - -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Platform; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IPathEditorInput; -import org.eclipse.ui.IPersistableElement; -import org.eclipse.ui.editors.text.ILocationProvider; -import org.eclipse.ui.model.IWorkbenchAdapter; - -/** - * EditorInput for external files. Copied from - * org.eclipse.ui.internal.editors.text.JavaFileEditorInput - */ -class ExternalFileEditorInput implements IEditorInput, ILocationProvider { - // copies of this class exist in: - // org.eclipse.wst.xml.ui.internal.hyperlink - // org.eclipse.wst.html.ui.internal.hyperlink - // org.eclipse.jst.jsp.ui.internal.hyperlink - - /** - * The workbench adapter which simply provides the label. - * - * @see Eclipse 3.1 - */ - private class WorkbenchAdapter implements IWorkbenchAdapter { - /* - * @see org.eclipse.ui.model.IWorkbenchAdapter#getChildren(java.lang.Object) - */ - public Object[] getChildren(Object o) { - return null; - } - - /* - * @see org.eclipse.ui.model.IWorkbenchAdapter#getImageDescriptor(java.lang.Object) - */ - public ImageDescriptor getImageDescriptor(Object object) { - return null; - } - - /* - * @see org.eclipse.ui.model.IWorkbenchAdapter#getLabel(java.lang.Object) - */ - public String getLabel(Object o) { - return ((ExternalFileEditorInput) o).getName(); - } - - /* - * @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(java.lang.Object) - */ - public Object getParent(Object o) { - return null; - } - } - - private File fFile; - private WorkbenchAdapter fWorkbenchAdapter = new WorkbenchAdapter(); - - public ExternalFileEditorInput(File file) { - super(); - fFile = file; - fWorkbenchAdapter = new WorkbenchAdapter(); - } - - /* - * @see org.eclipse.ui.IEditorInput#exists() - */ - public boolean exists() { - return fFile.exists(); - } - - /* - * @see org.eclipse.ui.IEditorInput#getImageDescriptor() - */ - public ImageDescriptor getImageDescriptor() { - return null; - } - - /* - * @see org.eclipse.ui.IEditorInput#getName() - */ - public String getName() { - return fFile.getName(); - } - - /* - * @see org.eclipse.ui.IEditorInput#getPersistable() - */ - public IPersistableElement getPersistable() { - return null; - } - - /* - * @see org.eclipse.ui.IEditorInput#getToolTipText() - */ - public String getToolTipText() { - return fFile.getAbsolutePath(); - } - - /* - * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class) - */ - public Object getAdapter(Class adapter) { - if (ILocationProvider.class.equals(adapter)) - return this; - if (IWorkbenchAdapter.class.equals(adapter)) - return fWorkbenchAdapter; - return Platform.getAdapterManager().getAdapter(this, adapter); - } - - /* - * @see org.eclipse.ui.editors.text.ILocationProvider#getPath(java.lang.Object) - */ - public IPath getPath(Object element) { - if (element instanceof ExternalFileEditorInput) { - ExternalFileEditorInput input = (ExternalFileEditorInput) element; - return Path.fromOSString(input.fFile.getAbsolutePath()); - } - return null; - } - - /* - * @see org.eclipse.ui.IPathEditorInput#getPath() - * @since 3.1 - */ - public IPath getPath() { - return Path.fromOSString(fFile.getAbsolutePath()); - } - - /* - * @see java.lang.Object#equals(java.lang.Object) - */ - public boolean equals(Object o) { - if (o == this) - return true; - - if (o instanceof ExternalFileEditorInput) { - ExternalFileEditorInput input = (ExternalFileEditorInput) o; - return fFile.equals(input.fFile); - } - - if (o instanceof IPathEditorInput) { - IPathEditorInput input= (IPathEditorInput)o; - return getPath().equals(input.getPath()); - } - - return false; - } - - /* - * @see java.lang.Object#hashCode() - */ - public int hashCode() { - return fFile.hashCode(); - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/ExternalFileHyperlink.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/ExternalFileHyperlink.java deleted file mode 100644 index f25d93789f..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/ExternalFileHyperlink.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.eclipse.jst.jsp.ui.internal.hyperlink; - -import java.io.File; - -import org.eclipse.jface.text.IRegion; -import org.eclipse.jface.text.hyperlink.IHyperlink; -import org.eclipse.jst.jsp.ui.internal.Logger; -import org.eclipse.ui.IEditorDescriptor; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.ide.IDE; - -/** - * Hyperlink for external files. - */ -class ExternalFileHyperlink implements IHyperlink { - // copies of this class exist in: - // org.eclipse.wst.xml.ui.internal.hyperlink - // org.eclipse.wst.html.ui.internal.hyperlink - // org.eclipse.jst.jsp.ui.internal.hyperlink - - private IRegion fHyperlinkRegion; - private File fHyperlinkFile; - - public ExternalFileHyperlink(IRegion region, File file) { - fHyperlinkFile = file; - fHyperlinkRegion = region; - } - - public IRegion getHyperlinkRegion() { - return fHyperlinkRegion; - } - - public String getTypeLabel() { - return null; - } - - public String getHyperlinkText() { - return null; - } - - public void open() { - if (fHyperlinkFile != null) { - IEditorInput input = new ExternalFileEditorInput(fHyperlinkFile); - IEditorDescriptor descriptor; - try { - descriptor = IDE.getEditorDescriptor(input.getName(), true); - if (descriptor != null) { - IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); - IDE.openEditor(page, input, descriptor.getId(), true); - } - } - catch (PartInitException e) { - Logger.log(Logger.WARNING_DEBUG, e.getMessage(), e); - } - } - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/JSPJavaHyperlink.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/JSPJavaHyperlink.java deleted file mode 100644 index 539f95951c..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/JSPJavaHyperlink.java +++ /dev/null @@ -1,67 +0,0 @@ -package org.eclipse.jst.jsp.ui.internal.hyperlink; - -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.ui.JavaUI; -import org.eclipse.jface.text.IRegion; -import org.eclipse.jface.text.hyperlink.IHyperlink; -import org.eclipse.jst.jsp.ui.internal.Logger; -import org.eclipse.ui.IEditorPart; - -/** - * Hyperlink for JSP Java elements - */ -class JSPJavaHyperlink implements IHyperlink { - private IRegion fRegion; - private IJavaElement fElement; - - public JSPJavaHyperlink(IRegion region, IJavaElement element) { - fRegion = region; - fElement = element; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.text.hyperlink.IHyperlink#getHyperlinkRegion() - */ - public IRegion getHyperlinkRegion() { - return fRegion; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.text.hyperlink.IHyperlink#getTypeLabel() - */ - public String getTypeLabel() { - // TODO Auto-generated method stub - return null; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.text.hyperlink.IHyperlink#getHyperlinkText() - */ - public String getHyperlinkText() { - // TODO Auto-generated method stub - return null; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.text.hyperlink.IHyperlink#open() - */ - public void open() { - try { - IEditorPart editor = JavaUI.openInEditor(fElement); - if (editor != null) { - JavaUI.revealInEditor(editor, fElement); - } - } - catch (Exception e) { - Logger.log(Logger.WARNING_DEBUG, e.getMessage(), e); - } - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/JSPJavaHyperlinkDetector.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/JSPJavaHyperlinkDetector.java deleted file mode 100644 index be5c52d0e0..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/JSPJavaHyperlinkDetector.java +++ /dev/null @@ -1,237 +0,0 @@ -package org.eclipse.jst.jsp.ui.internal.hyperlink; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.Path; -import org.eclipse.jdt.core.IField; -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.ILocalVariable; -import org.eclipse.jdt.core.IMethod; -import org.eclipse.jdt.core.ISourceRange; -import org.eclipse.jdt.core.ISourceReference; -import org.eclipse.jdt.core.JavaModelException; -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.IRegion; -import org.eclipse.jface.text.ITextViewer; -import org.eclipse.jface.text.Region; -import org.eclipse.jface.text.hyperlink.IHyperlink; -import org.eclipse.jface.text.hyperlink.IHyperlinkDetector; -import org.eclipse.jst.jsp.core.internal.java.IJSPTranslation; -import org.eclipse.jst.jsp.core.internal.java.JSPTranslation; -import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapter; -import org.eclipse.jst.jsp.ui.internal.Logger; -import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; -import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; - -/** - * Detects hyperlinks in JSP Java content - */ -public class JSPJavaHyperlinkDetector implements IHyperlinkDetector { - - private IHyperlink createHyperlink(IJavaElement element, IRegion region, IDocument document) { - IHyperlink link = null; - if (region != null) { - // open local variable in the JSP file... - if (element instanceof ISourceReference) { - IFile file = null; - int jspOffset = 0; - IStructuredModel sModel = null; - - // try to locate the file in the workspace - try { - sModel = StructuredModelManager.getModelManager().getExistingModelForRead(document); - if (sModel != null) { - String uriString = sModel.getResolver().getFileBaseLocation(); - file = getFile(uriString); - } - } - finally { - if (sModel != null) - sModel.releaseFromRead(); - } - - // get Java range, translate coordinate to JSP - - try { - ISourceRange range = null; - IJSPTranslation jspTranslation = getJSPTranslation(document); - if (jspTranslation != null) { - // link to local variable definitions - if (element instanceof ILocalVariable) { - range = ((ILocalVariable) element).getNameRange(); - } - // linking to fields of the same compilation unit - else if (element.getElementType() == IJavaElement.FIELD) { - Object cu = ((IField) element).getCompilationUnit(); - if (cu != null && cu.equals(jspTranslation.getCompilationUnit())) - range = ((ISourceReference) element).getSourceRange(); - } - // linking to methods of the same compilation unit - else if (element.getElementType() == IJavaElement.METHOD) { - Object cu = ((IMethod) element).getCompilationUnit(); - if (cu != null && cu.equals(jspTranslation.getCompilationUnit())) - range = ((ISourceReference) element).getSourceRange(); - } - } - - if (range != null && file != null && file.exists()) { - jspOffset = jspTranslation.getJspOffset(range.getOffset()); - if (jspOffset >= 0) { - link = new WorkspaceFileHyperlink(region, file, new Region(jspOffset, range.getLength())); - } - } - } - catch (JavaModelException jme) { - Logger.log(Logger.WARNING_DEBUG, jme.getMessage(), jme); - } - } - if (link == null) { - link = new JSPJavaHyperlink(region, element); - } - } - return link; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.text.hyperlink.IHyperlinkDetector#detectHyperlinks(org.eclipse.jface.text.ITextViewer, - * org.eclipse.jface.text.IRegion, boolean) - */ - public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region, boolean canShowMultipleHyperlinks) { - List hyperlinks = new ArrayList(0); - - if (region != null && textViewer != null) { - IDocument document = textViewer.getDocument(); - - // check and make sure this is a valid Java type - JSPTranslation jspTranslation = getJSPTranslation(document); - if (jspTranslation != null) { - // check if we are in JSP Java content - int javaOffset = jspTranslation.getJavaOffset(region.getOffset()); - if (javaOffset > -1) { - // check that we are not in indirect Java content (like - // included files) - if (!jspTranslation.isIndirect(javaOffset)) { - // get Java elements - IJavaElement[] elements = jspTranslation.getElementsFromJspRange(region.getOffset(), region.getOffset() + region.getLength()); - if (elements != null && elements.length > 0) { - // create a JSPJavaHyperlink for each Java element - for (int i = 0; i < elements.length; ++i) { - IJavaElement element = elements[i]; - - // find hyperlink range for Java element - IRegion hyperlinkRegion = selectWord(document, region.getOffset()); - IHyperlink link = createHyperlink(element, hyperlinkRegion, document); - if (link != null) { - hyperlinks.add(link); - } - } - } - } - } - } - } - - if (hyperlinks.size() == 0) - return null; - return (IHyperlink[]) hyperlinks.toArray(new IHyperlink[0]); - } - - /** - * Returns an IFile from the given uri if possible, null if cannot find - * file from uri. - * - * @param fileString - * file system path - * @return returns IFile if fileString exists in the workspace - */ - 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]; - } - - return file; - } - /** - * Get JSP translation object - * - * @return JSPTranslation if one exists, null otherwise - */ - private JSPTranslation getJSPTranslation(IDocument document) { - JSPTranslation translation = null; - - IDOMModel xmlModel = null; - try { - xmlModel = (IDOMModel) StructuredModelManager.getModelManager().getExistingModelForRead(document); - if (xmlModel != null) { - IDOMDocument xmlDoc = xmlModel.getDocument(); - JSPTranslationAdapter adapter = (JSPTranslationAdapter) xmlDoc.getAdapterFor(IJSPTranslation.class); - if (adapter != null) { - translation = adapter.getJSPTranslation(); - } - } - } - finally { - if (xmlModel != null) - xmlModel.releaseFromRead(); - } - return translation; - } - - /** - * Java always selects word when defining region - * - * @param document - * @param anchor - * @return IRegion - */ - private IRegion selectWord(IDocument document, int anchor) { - - try { - int offset = anchor; - char c; - - while (offset >= 0) { - c = document.getChar(offset); - if (!Character.isJavaIdentifierPart(c)) - break; - --offset; - } - - int start = offset; - - offset = anchor; - int length = document.getLength(); - - while (offset < length) { - c = document.getChar(offset); - if (!Character.isJavaIdentifierPart(c)) - break; - ++offset; - } - - int end = offset; - - if (start == end) - return new Region(start, 0); - - return new Region(start + 1, end - start - 1); - - } - catch (BadLocationException x) { - return null; - } - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/TaglibHyperlinkDetector.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/TaglibHyperlinkDetector.java deleted file mode 100644 index 3422b2ddef..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/TaglibHyperlinkDetector.java +++ /dev/null @@ -1,230 +0,0 @@ -package org.eclipse.jst.jsp.ui.internal.hyperlink; - -import java.io.File; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.Path; -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.IRegion; -import org.eclipse.jface.text.ITextViewer; -import org.eclipse.jface.text.ITypedRegion; -import org.eclipse.jface.text.Region; -import org.eclipse.jface.text.TextUtilities; -import org.eclipse.jface.text.hyperlink.IHyperlink; -import org.eclipse.jface.text.hyperlink.IHyperlinkDetector; -import org.eclipse.jface.text.hyperlink.URLHyperlink; -import org.eclipse.jst.jsp.core.internal.provisional.JSP11Namespace; -import org.eclipse.jst.jsp.core.internal.provisional.text.IJSPPartitionTypes; -import org.eclipse.jst.jsp.core.taglib.ITLDRecord; -import org.eclipse.jst.jsp.core.taglib.ITaglibRecord; -import org.eclipse.jst.jsp.core.taglib.TaglibIndex; -import org.eclipse.jst.jsp.ui.internal.Logger; -import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; -import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion; -import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager; -import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredPartitioning; -import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion; -import org.eclipse.wst.sse.core.internal.util.StringUtils; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMAttr; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode; -import org.w3c.dom.Attr; -import org.w3c.dom.Element; -import org.w3c.dom.Node; - -/** - * Detects hyperlinks for taglibs. - */ -public class TaglibHyperlinkDetector implements IHyperlinkDetector { - private final String HTTP_PROTOCOL = "http://";//$NON-NLS-1$ - - public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region, boolean canShowMultipleHyperlinks) { - IHyperlink hyperlink = null; - - if (textViewer != null && region != null) { - IDocument doc = textViewer.getDocument(); - if (doc != null) { - try { - // check if jsp tag/directive first - ITypedRegion partition = TextUtilities.getPartition(doc, IStructuredPartitioning.DEFAULT_STRUCTURED_PARTITIONING, region.getOffset(), false); - if (partition != null && partition.getType() == IJSPPartitionTypes.JSP_DIRECTIVE) { - // check if jsp taglib directive - Node currentNode = getCurrentNode(doc, region.getOffset()); - if (currentNode != null && currentNode.getNodeType() == Node.ELEMENT_NODE && JSP11Namespace.ElementName.DIRECTIVE_TAGLIB.equalsIgnoreCase(currentNode.getNodeName())) { - // get the uri attribute - Attr taglibNode = ((Element) currentNode).getAttributeNode(JSP11Namespace.ATTR_NAME_URI); - ITaglibRecord reference = TaglibIndex.resolve(getBaseLocationForTaglib(doc), taglibNode.getValue(), false); - if (reference != null) { - // handle taglibs - switch (reference.getRecordType()) { - case (ITaglibRecord.TLD) : { - ITLDRecord record = (ITLDRecord) reference; - String uriString = record.getPath().toString(); - IRegion hyperlinkRegion = getHyperlinkRegion(taglibNode); - hyperlink = createHyperlink(uriString, hyperlinkRegion, doc, taglibNode); - } - break; - case (ITaglibRecord.JAR) : - case (ITaglibRecord.URL) : { - IRegion hyperlinkRegion = getHyperlinkRegion(taglibNode); - hyperlink = new TaglibJarUriHyperlink(hyperlinkRegion, reference); - } - } - } - } - } - } - catch (BadLocationException e) { - Logger.log(Logger.WARNING_DEBUG, e.getMessage(), e); - } - } - } - if (hyperlink != null) - return new IHyperlink[]{hyperlink}; - return null; - } - - /** - * Get the base location from the current model (if within workspace, - * location is relative to workspace, otherwise, file system path) - */ - private String getBaseLocationForTaglib(IDocument document) { - String baseLoc = null; - - // get the base location from the current model - IStructuredModel sModel = null; - try { - sModel = StructuredModelManager.getModelManager().getExistingModelForRead(document); - if (sModel != null) { - baseLoc = sModel.getBaseLocation(); - } - } - finally { - if (sModel != null) { - sModel.releaseFromRead(); - } - } - return baseLoc; - } - - // the below methods were copied from URIHyperlinkDetector - - private IRegion getHyperlinkRegion(Node node) { - IRegion hyperRegion = null; - - if (node != null) { - short nodeType = node.getNodeType(); - if (nodeType == Node.DOCUMENT_TYPE_NODE) { - // handle doc type node - IDOMNode docNode = (IDOMNode) node; - hyperRegion = new Region(docNode.getStartOffset(), docNode.getEndOffset() - docNode.getStartOffset()); - } - else if (nodeType == Node.ATTRIBUTE_NODE) { - // handle attribute nodes - IDOMAttr att = (IDOMAttr) node; - // do not include quotes in attribute value region - int regOffset = att.getValueRegionStartOffset(); - ITextRegion valueRegion = att.getValueRegion(); - if (valueRegion != null) { - int regLength = valueRegion.getTextLength(); - String attValue = att.getValueRegionText(); - if (StringUtils.isQuoted(attValue)) { - regOffset = ++regOffset; - regLength = regLength - 2; - } - hyperRegion = new Region(regOffset, regLength); - } - } - } - return hyperRegion; - } - - /** - * Returns an IFile from the given uri if possible, null if cannot find - * file from uri. - * - * @param fileString - * file system or workspace-relative path - * @return returns IFile if fileString exists in the workspace - */ - 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]; - } - if (file == null) { - file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(fileString)); - } - - return file; - } - - /** - * Create the appropriate hyperlink - * - * @param uriString - * @param hyperlinkRegion - * @return IHyperlink - */ - private IHyperlink createHyperlink(String uriString, IRegion hyperlinkRegion, IDocument document, Node node) { - IHyperlink link = null; - - if (uriString != null) { - String temp = uriString.toLowerCase(); - if (temp.startsWith(HTTP_PROTOCOL)) { - // this is a URLHyperlink since this is a web address - link = new URLHyperlink(hyperlinkRegion, uriString); - } - - // try to locate the file in the workspace - IFile file = getFile(uriString); - if (file != null && file.exists()) { - // this is a WorkspaceFileHyperlink since file exists in - // workspace - link = new WorkspaceFileHyperlink(hyperlinkRegion, file); - } - else { - // this is an ExternalFileHyperlink since file does not exist - // in workspace - File externalFile = new File(uriString); - link = new ExternalFileHyperlink(hyperlinkRegion, externalFile); - } - } - - return link; - } - - /** - * Returns the node the cursor is currently on in the document. null if no - * node is selected - * - * @param offset - * @return Node either element, doctype, text, or null - */ - private Node getCurrentNode(IDocument document, int offset) { - // get the current node at the offset (returns either: element, - // doctype, text) - IndexedRegion inode = null; - IStructuredModel sModel = null; - try { - sModel = StructuredModelManager.getModelManager().getExistingModelForRead(document); - inode = sModel.getIndexedRegion(offset); - if (inode == null) - inode = sModel.getIndexedRegion(offset - 1); - } - finally { - if (sModel != null) - sModel.releaseFromRead(); - } - - if (inode instanceof Node) { - return (Node) inode; - } - return null; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/TaglibJarHyperlink.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/TaglibJarHyperlink.java deleted file mode 100644 index 676292616e..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/TaglibJarHyperlink.java +++ /dev/null @@ -1,114 +0,0 @@ -package org.eclipse.jst.jsp.ui.internal.hyperlink; - -import java.io.File; -import java.io.InputStream; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; - -import org.eclipse.core.resources.IStorage; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.text.IRegion; -import org.eclipse.jface.text.hyperlink.IHyperlink; -import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin; -import org.eclipse.jst.jsp.ui.internal.Logger; -import org.eclipse.ui.IEditorDescriptor; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.ide.IDE; - -/** - * Hyperlink for taglib files in jars. - */ -class TaglibJarHyperlink implements IHyperlink { - static class ZipStorage implements IStorage { - File fFile = null; - String fEntryName = null; - - ZipStorage(File file, String entryName) { - fFile = file; - fEntryName = entryName; - } - - public InputStream getContents() throws CoreException { - InputStream stream = null; - try { - ZipFile file = new ZipFile(fFile); - ZipEntry entry = file.getEntry(fEntryName); - stream = file.getInputStream(entry); - } - catch (Exception e) { - throw new CoreException(new Status(IStatus.ERROR, JSPUIPlugin.getDefault().getBundle().getSymbolicName(), IStatus.ERROR, getFullPath().toString(), e)); - } - return stream; - } - - public IPath getFullPath() { - return new Path(fFile.getAbsolutePath() + IPath.SEPARATOR + fEntryName); - } - - public String getName() { - return fEntryName; - } - - public boolean isReadOnly() { - return true; - } - - public Object getAdapter(Class adapter) { - return null; - } - } - - private IRegion fRegion; - private IPath fZipFilePath; - - public TaglibJarHyperlink(IRegion region, IPath zipFilePath) { - fRegion = region; - fZipFilePath = zipFilePath; - } - - public IRegion getHyperlinkRegion() { - return fRegion; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.text.hyperlink.IHyperlink#getTypeLabel() - */ - public String getTypeLabel() { - // TODO Auto-generated method stub - return null; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.text.hyperlink.IHyperlink#getHyperlinkText() - */ - public String getHyperlinkText() { - // TODO Auto-generated method stub - return null; - } - - public void open() { - IEditorInput input = new URLFileHyperlink.StorageEditorInput(new ZipStorage(fZipFilePath.toFile(), "META-INF/taglib.tld")); //$NON-NLS-1$ - IEditorDescriptor descriptor; - try { - descriptor = IDE.getEditorDescriptor(input.getName()); - if (descriptor != null) { - IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); - IDE.openEditor(page, input, descriptor.getId(), true); - } - } - catch (PartInitException e) { - Logger.log(Logger.WARNING_DEBUG, e.getMessage(), e); - } - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/TaglibJarUriHyperlink.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/TaglibJarUriHyperlink.java deleted file mode 100644 index 1cf7086ce4..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/TaglibJarUriHyperlink.java +++ /dev/null @@ -1,75 +0,0 @@ -package org.eclipse.jst.jsp.ui.internal.hyperlink; - -import org.eclipse.jface.text.IRegion; -import org.eclipse.jface.text.hyperlink.IHyperlink; -import org.eclipse.jst.jsp.core.taglib.IJarRecord; -import org.eclipse.jst.jsp.core.taglib.ITaglibRecord; -import org.eclipse.jst.jsp.core.taglib.IURLRecord; - -/** - * Hyperlink for taglib files in jars or specified by urls. - */ -class TaglibJarUriHyperlink implements IHyperlink { - private IRegion fRegion; - private ITaglibRecord fTaglibRecord; - private IHyperlink fHyperlink; - - public TaglibJarUriHyperlink(IRegion region, ITaglibRecord record) { - fRegion = region; - fTaglibRecord = record; - } - - private IHyperlink getHyperlink() { - if (fHyperlink == null && fTaglibRecord != null) { - switch (fTaglibRecord.getRecordType()) { - case (ITaglibRecord.JAR) : { - IJarRecord record = (IJarRecord) fTaglibRecord; - fHyperlink = new TaglibJarHyperlink(fRegion, record.getLocation()); - } - break; - case (ITaglibRecord.URL) : { - IURLRecord record = (IURLRecord) fTaglibRecord; - fHyperlink = new URLFileHyperlink(fRegion, record.getURL()); - } - } - } - return fHyperlink; - } - - public IRegion getHyperlinkRegion() { - IRegion region = null; - - IHyperlink link = getHyperlink(); - if (link != null) { - region = link.getHyperlinkRegion(); - } - return region; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.text.hyperlink.IHyperlink#getTypeLabel() - */ - public String getTypeLabel() { - // TODO Auto-generated method stub - return null; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.text.hyperlink.IHyperlink#getHyperlinkText() - */ - public String getHyperlinkText() { - // TODO Auto-generated method stub - return null; - } - - public void open() { - IHyperlink link = getHyperlink(); - if (link != null) { - link.open(); - } - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/URLFileHyperlink.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/URLFileHyperlink.java deleted file mode 100644 index 4ce016f622..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/URLFileHyperlink.java +++ /dev/null @@ -1,161 +0,0 @@ -package org.eclipse.jst.jsp.ui.internal.hyperlink; - -import java.io.InputStream; -import java.net.URL; - -import org.eclipse.core.resources.IStorage; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.text.IRegion; -import org.eclipse.jface.text.hyperlink.IHyperlink; -import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin; -import org.eclipse.jst.jsp.ui.internal.Logger; -import org.eclipse.ui.IEditorDescriptor; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IPersistableElement; -import org.eclipse.ui.IStorageEditorInput; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.ide.IDE; - -/** - * Hyperlink for URLs (opens in read-only mode) - */ -class URLFileHyperlink implements IHyperlink { - // copies of this class exist in: - // org.eclipse.wst.xml.ui.internal.hyperlink - // org.eclipse.wst.html.ui.internal.hyperlink - // org.eclipse.jst.jsp.ui.internal.hyperlink - - static class StorageEditorInput implements IStorageEditorInput { - IStorage fStorage = null; - - StorageEditorInput(IStorage storage) { - fStorage = storage; - } - - public IStorage getStorage() throws CoreException { - return fStorage; - } - - public boolean exists() { - return fStorage != null; - } - - public ImageDescriptor getImageDescriptor() { - return null; - } - - public String getName() { - return fStorage.getName(); - } - - public IPersistableElement getPersistable() { - return null; - } - - public String getToolTipText() { - return fStorage.getFullPath() != null ? fStorage.getFullPath().toString() : fStorage.getName(); - } - - public Object getAdapter(Class adapter) { - return null; - } - } - - static class URLStorage implements IStorage { - URL fURL = null; - - URLStorage(URL url) { - fURL = url; - } - - public InputStream getContents() throws CoreException { - InputStream stream = null; - try { - stream = fURL.openStream(); - } - catch (Exception e) { - throw new CoreException(new Status(IStatus.ERROR, JSPUIPlugin.getDefault().getBundle().getSymbolicName(), IStatus.ERROR, fURL.toString(), e)); - } - return stream; - } - - public IPath getFullPath() { - return new Path(fURL.toString()); - } - - public String getName() { - return new Path(fURL.getFile()).lastSegment(); - } - - public boolean isReadOnly() { - return true; - } - - public Object getAdapter(Class adapter) { - return null; - } - - } - - private IRegion fRegion; - private URL fURL; - - public URLFileHyperlink(IRegion region, URL url) { - fRegion = region; - fURL = url; - } - - public IRegion getHyperlinkRegion() { - return fRegion; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.text.hyperlink.IHyperlink#getTypeLabel() - */ - public String getTypeLabel() { - // TODO Auto-generated method stub - return null; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.text.hyperlink.IHyperlink#getHyperlinkText() - */ - public String getHyperlinkText() { - // TODO Auto-generated method stub - return null; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.text.hyperlink.IHyperlink#open() - */ - public void open() { - if (fURL != null) { - IEditorInput input = new StorageEditorInput(new URLStorage(fURL)); - IEditorDescriptor descriptor; - try { - descriptor = IDE.getEditorDescriptor(input.getName()); - if (descriptor != null) { - IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); - IDE.openEditor(page, input, descriptor.getId(), true); - } - } - catch (PartInitException e) { - Logger.log(Logger.WARNING_DEBUG, e.getMessage(), e); - } - } - } - -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/WorkspaceFileHyperlink.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/WorkspaceFileHyperlink.java deleted file mode 100644 index 17aaa0a431..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/WorkspaceFileHyperlink.java +++ /dev/null @@ -1,79 +0,0 @@ -package org.eclipse.jst.jsp.ui.internal.hyperlink; - -import org.eclipse.core.resources.IFile; -import org.eclipse.jface.text.IRegion; -import org.eclipse.jface.text.hyperlink.IHyperlink; -import org.eclipse.jst.jsp.ui.internal.Logger; -import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.ide.IDE; -import org.eclipse.ui.texteditor.ITextEditor; - -/** - * Hyperlink for files within the workspace. (As long as there is an IFile, - * this can be used) Opens the default editor for the file. - */ -class WorkspaceFileHyperlink implements IHyperlink { - // copies of this class exist in: - // org.eclipse.wst.xml.ui.internal.hyperlink - // org.eclipse.wst.html.ui.internal.hyperlink - // org.eclipse.jst.jsp.ui.internal.hyperlink - - private IRegion fRegion; - private IFile fFile; - private IRegion fHighlightRange; - - public WorkspaceFileHyperlink(IRegion region, IFile file) { - fRegion = region; - fFile = file; - } - - public WorkspaceFileHyperlink(IRegion region, IFile file, IRegion range) { - fRegion = region; - fFile = file; - fHighlightRange = range; - } - - public IRegion getHyperlinkRegion() { - return fRegion; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.text.hyperlink.IHyperlink#getTypeLabel() - */ - public String getTypeLabel() { - // TODO Auto-generated method stub - return null; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.text.hyperlink.IHyperlink#getHyperlinkText() - */ - public String getHyperlinkText() { - // TODO Auto-generated method stub - return null; - } - - public void open() { - if (fFile != null && fFile.exists()) { - try { - IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); - IEditorPart editor = IDE.openEditor(page, fFile, true); - // highlight range in editor if possible - if (fHighlightRange != null && editor instanceof ITextEditor) { - ((ITextEditor) editor).setHighlightRange(fHighlightRange.getOffset(), fHighlightRange.getLength(), true); - } - } - catch (PartInitException pie) { - Logger.log(Logger.WARNING_DEBUG, pie.getMessage(), pie); - } - } - } - -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/XMLHyperlinkDetector.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/XMLHyperlinkDetector.java deleted file mode 100644 index 3c60920611..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/XMLHyperlinkDetector.java +++ /dev/null @@ -1,503 +0,0 @@ -package org.eclipse.jst.jsp.ui.internal.hyperlink; - -import java.io.File; -import java.net.URI; -import java.util.ArrayList; -import java.util.List; -import java.util.StringTokenizer; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Path; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.IRegion; -import org.eclipse.jface.text.ITextViewer; -import org.eclipse.jface.text.Region; -import org.eclipse.jface.text.hyperlink.IHyperlink; -import org.eclipse.jface.text.hyperlink.IHyperlinkDetector; -import org.eclipse.jface.text.hyperlink.URLHyperlink; -import org.eclipse.wst.common.uriresolver.internal.provisional.URIResolverPlugin; -import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; -import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion; -import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager; -import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion; -import org.eclipse.wst.sse.core.internal.util.StringUtils; -import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration; -import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType; -import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration; -import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQuery; -import org.eclipse.wst.xml.core.internal.contentmodel.util.DOMNamespaceHelper; -import org.eclipse.wst.xml.core.internal.modelquery.ModelQueryUtil; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMAttr; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode; -import org.w3c.dom.Attr; -import org.w3c.dom.DocumentType; -import org.w3c.dom.Element; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; - -/** - * Detects hyperlinks in XML tags. Includes detection in DOCTYPE and attribute - * values. Resolves references to schemas, dtds, etc using the Common URI - * Resolver. - * - */ -public class XMLHyperlinkDetector implements IHyperlinkDetector { - // copies of this class exist in: - // org.eclipse.wst.xml.ui.internal.hyperlink - // org.eclipse.wst.html.ui.internal.hyperlink - // org.eclipse.jst.jsp.ui.internal.hyperlink - - private final String HTTP_PROTOCOL = "http://";//$NON-NLS-1$ - private final String NO_NAMESPACE_SCHEMA_LOCATION = "noNamespaceSchemaLocation"; //$NON-NLS-1$ - private final String SCHEMA_LOCATION = "schemaLocation"; //$NON-NLS-1$ - private final String XMLNS = "xmlns"; //$NON-NLS-1$ - private final String XSI_NAMESPACE_URI = "http://www.w3.org/2001/XMLSchema-instance"; //$NON-NLS-1$ - - /** - * Create the appropriate hyperlink - * - * @param uriString - * @param hyperlinkRegion - * @return IHyperlink - */ - private IHyperlink createHyperlink(String uriString, IRegion hyperlinkRegion, IDocument document, Node node) { - IHyperlink link = null; - - if (isHttp(uriString)) { - link = new URLHyperlink(hyperlinkRegion, uriString); - } - else { - // try to locate the file in the workspace - File systemFile = getFileFromUriString(uriString); - if (systemFile != null) { - String systemPath = systemFile.getPath(); - IFile file = getFile(systemPath); - if (file != null && file.exists()) { - // this is a WorkspaceFileHyperlink since file exists in - // workspace - link = new WorkspaceFileHyperlink(hyperlinkRegion, file); - } - else { - // this is an ExternalFileHyperlink since file does not - // exist in workspace - link = new ExternalFileHyperlink(hyperlinkRegion, systemFile); - } - } - } - return link; - } - - public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region, boolean canShowMultipleHyperlinks) { - // for now, only capable of creating 1 hyperlink - List hyperlinks = new ArrayList(0); - - if (region != null && textViewer != null) { - IDocument document = textViewer.getDocument(); - Node currentNode = getCurrentNode(document, region.getOffset()); - if (currentNode != null) { - String uriString = null; - if (currentNode.getNodeType() == Node.DOCUMENT_TYPE_NODE) { - // doctype nodes - uriString = getURIString(currentNode, document); - } - else if (currentNode.getNodeType() == Node.ELEMENT_NODE) { - // element nodes - Attr currentAttr = getCurrentAttrNode(currentNode, region.getOffset()); - if (currentAttr != null) { - // try to find link for current attribute - // resolve attribute value - uriString = getURIString(currentAttr, document); - // verify validity of uri string - if (uriString == null || !isValidURI(uriString)) - // reset current attribute - currentAttr = null; - } - if (currentAttr == null) { - // try to find a linkable attribute within element - currentAttr = getLinkableAttr((Element) currentNode); - if (currentAttr != null) { - uriString = getURIString(currentAttr, document); - } - } - currentNode = currentAttr; - } - // try to create hyperlink from information gathered - if (uriString != null && currentNode != null && isValidURI(uriString)) { - IRegion hyperlinkRegion = getHyperlinkRegion(currentNode); - IHyperlink hyperlink = createHyperlink(uriString, hyperlinkRegion, document, currentNode); - if (hyperlink != null) { - hyperlinks.add(hyperlink); - } - } - } - } - if (hyperlinks.size() == 0) - return null; - return (IHyperlink[]) hyperlinks.toArray(new IHyperlink[0]); - } - - /** - * Get the base location from the current model (local file system) - */ - private String getBaseLocation(IDocument document) { - String baseLoc = null; - - // get the base location from the current model - IStructuredModel sModel = null; - try { - sModel = StructuredModelManager.getModelManager().getExistingModelForRead(document); - if (sModel != null) { - IPath location = new Path(sModel.getBaseLocation()); - if (location.toFile().exists()) { - baseLoc = location.toString(); - } - else { - if (location.segmentCount() > 1) - baseLoc = ResourcesPlugin.getWorkspace().getRoot().getFile(location).getLocation().toString(); - else - baseLoc = ResourcesPlugin.getWorkspace().getRoot().getLocation().append(location).toString(); - } - } - } - finally { - if (sModel != null) { - sModel.releaseFromRead(); - } - } - return baseLoc; - } - - /** - * Get the CMElementDeclaration for an element - * - * @param element - * @return CMElementDeclaration - */ - private CMElementDeclaration getCMElementDeclaration(Element element) { - CMElementDeclaration ed = null; - - ModelQuery mq = ModelQueryUtil.getModelQuery(element.getOwnerDocument()); - if (mq != null) { - ed = mq.getCMElementDeclaration(element); - } - return ed; - } - - /** - * Returns the attribute node within node at offset - * - * @param node - * @param offset - * @return Attr - */ - private Attr getCurrentAttrNode(Node node, int offset) { - if ((node instanceof IndexedRegion) && ((IndexedRegion) node).contains(offset) && (node.hasAttributes())) { - NamedNodeMap attrs = node.getAttributes(); - // go through each attribute in node and if attribute contains - // offset, return that attribute - for (int i = 0; i < attrs.getLength(); ++i) { - // assumption that if parent node is of type IndexedRegion, - // then its attributes will also be of type IndexedRegion - IndexedRegion attRegion = (IndexedRegion) attrs.item(i); - if (attRegion.contains(offset)) { - return (Attr) attrs.item(i); - } - } - } - return null; - } - - /** - * Returns the node the cursor is currently on in the document. null if no - * node is selected - * - * @param offset - * @return Node either element, doctype, text, or null - */ - private Node getCurrentNode(IDocument document, int offset) { - // get the current node at the offset (returns either: element, - // doctype, text) - IndexedRegion inode = null; - IStructuredModel sModel = null; - try { - sModel = StructuredModelManager.getModelManager().getExistingModelForRead(document); - inode = sModel.getIndexedRegion(offset); - if (inode == null) - inode = sModel.getIndexedRegion(offset - 1); - } - finally { - if (sModel != null) - sModel.releaseFromRead(); - } - - if (inode instanceof Node) { - return (Node) inode; - } - return null; - } - - /** - * Returns an IFile from the given uri if possible, null if cannot find - * file from uri. - * - * @param fileString - * file system path - * @return returns IFile if fileString exists in the workspace - */ - 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]; - } - - return file; - } - - /** - * Create a file from the given uri string - * - * @param uriString - - * assumes uriString is not http:// - * @return File created from uriString if possible, null otherwise - */ - private File getFileFromUriString(String uriString) { - File file = null; - try { - // first just try to create a file directly from uriString as - // default in case create file from uri does not work - file = new File(uriString); - - // try to create file from uri - URI uri = new URI(uriString); - file = new File(uri); - } - catch (Exception e) { - // if exception is thrown while trying to create File just ignore - // and file will be null - } - return file; - } - - private IRegion getHyperlinkRegion(Node node) { - IRegion hyperRegion = null; - - if (node != null) { - short nodeType = node.getNodeType(); - if (nodeType == Node.DOCUMENT_TYPE_NODE) { - // handle doc type node - IDOMNode docNode = (IDOMNode) node; - hyperRegion = new Region(docNode.getStartOffset(), docNode.getEndOffset() - docNode.getStartOffset()); - } - else if (nodeType == Node.ATTRIBUTE_NODE) { - // handle attribute nodes - IDOMAttr att = (IDOMAttr) node; - // do not include quotes in attribute value region - int regOffset = att.getValueRegionStartOffset(); - ITextRegion valueRegion = att.getValueRegion(); - if (valueRegion != null) { - int regLength = valueRegion.getTextLength(); - String attValue = att.getValueRegionText(); - if (StringUtils.isQuoted(attValue)) { - regOffset = ++regOffset; - regLength = regLength - 2; - } - hyperRegion = new Region(regOffset, regLength); - } - } - } - return hyperRegion; - } - - /** - * Attempts to find an attribute within element that is openable. - * - * @param element - - * cannot be null - * @return Attr attribute that can be used for open on, null if no - * attribute could be found - */ - private Attr getLinkableAttr(Element element) { - CMElementDeclaration ed = getCMElementDeclaration(element); - // get the list of attributes for this node - NamedNodeMap attrs = element.getAttributes(); - for (int i = 0; i < attrs.getLength(); ++i) { - // check if this attribute is "openOn-able" - Attr att = (Attr) attrs.item(i); - if (isLinkableAttr(att, ed)) { - return att; - } - } - return null; - } - - /** - * Find the location hint for the given namespaceURI if it exists - * - * @param elementNode - - * cannot be null - * @param namespaceURI - - * cannot be null - * @return location hint (systemId) if it was found, null otherwise - */ - private String getLocationHint(Element elementNode, String namespaceURI) { - Attr schemaLocNode = elementNode.getAttributeNodeNS(XSI_NAMESPACE_URI, SCHEMA_LOCATION); - if (schemaLocNode != null) { - StringTokenizer st = new StringTokenizer(schemaLocNode.getValue()); - while (st.hasMoreTokens()) { - String publicId = st.hasMoreTokens() ? st.nextToken() : null; - String systemId = st.hasMoreTokens() ? st.nextToken() : null; - // found location hint - if (namespaceURI.equalsIgnoreCase(publicId)) - return systemId; - } - } - return null; - } - - /** - * Returns the URI string - * - * @param node - - * assumes not null - */ - private String getURIString(Node node, IDocument document) { - String resolvedURI = null; - // need the base location, publicId, and systemId for URIResolver - String baseLoc = null; - String publicId = null; - String systemId = null; - - short nodeType = node.getNodeType(); - // handle doc type node - if (nodeType == Node.DOCUMENT_TYPE_NODE) { - baseLoc = getBaseLocation(document); - publicId = ((DocumentType) node).getPublicId(); - systemId = ((DocumentType) node).getSystemId(); - } - else if (nodeType == Node.ATTRIBUTE_NODE) { - // handle attribute node - Attr attrNode = (Attr) node; - String attrName = attrNode.getName(); - String attrValue = attrNode.getValue(); - attrValue = StringUtils.strip(attrValue); - if (attrValue != null && attrValue.length() > 0) { - baseLoc = getBaseLocation(document); - - // handle schemaLocation attribute - String prefix = DOMNamespaceHelper.getPrefix(attrName); - String unprefixedName = DOMNamespaceHelper.getUnprefixedName(attrName); - if ((XMLNS.equals(prefix)) || (XMLNS.equals(unprefixedName))) { - publicId = attrValue; - systemId = getLocationHint(attrNode.getOwnerElement(), publicId); - if (systemId == null) { - systemId = attrValue; - } - } - else if ((XSI_NAMESPACE_URI.equals(DOMNamespaceHelper.getNamespaceURI(attrNode))) && (SCHEMA_LOCATION.equals(unprefixedName))) { - // for now just use the first pair - // need to look into being more precise - StringTokenizer st = new StringTokenizer(attrValue); - publicId = st.hasMoreTokens() ? st.nextToken() : null; - systemId = st.hasMoreTokens() ? st.nextToken() : null; - // else check if xmlns publicId = value - } - else { - systemId = attrValue; - } - } - } - - resolvedURI = resolveURI(baseLoc, publicId, systemId); - return resolvedURI; - } - - /** - * Returns true if this uriString is an http string - * - * @param uriString - * @return true if uriString is http string, false otherwise - */ - private boolean isHttp(String uriString) { - boolean isHttp = false; - if (uriString != null) { - String tempString = uriString.toLowerCase(); - if (tempString.startsWith(HTTP_PROTOCOL)) - isHttp = true; - } - return isHttp; - } - - /** - * Checks to see if the given attribute is openable. Attribute is openable - * if it is a namespace declaration attribute or if the attribute value is - * of type URI. - * - * @param attr - * cannot be null - * @param cmElement - * CMElementDeclaration associated with the attribute (can be - * null) - * @return true if this attribute is "openOn-able" false otherwise - */ - private boolean isLinkableAttr(Attr attr, CMElementDeclaration cmElement) { - String attrName = attr.getName(); - String prefix = DOMNamespaceHelper.getPrefix(attrName); - String unprefixedName = DOMNamespaceHelper.getUnprefixedName(attrName); - // determine if attribute is namespace declaration - if ((XMLNS.equals(prefix)) || (XMLNS.equals(unprefixedName))) - return true; - - // determine if attribute contains schema location - if ((XSI_NAMESPACE_URI.equals(DOMNamespaceHelper.getNamespaceURI(attr))) && ((SCHEMA_LOCATION.equals(unprefixedName)) || (NO_NAMESPACE_SCHEMA_LOCATION.equals(unprefixedName)))) - return true; - - // determine if attribute value is of type URI - if (cmElement != null) { - CMAttributeDeclaration attrDecl = (CMAttributeDeclaration) cmElement.getAttributes().getNamedItem(attrName); - if ((attrDecl != null) && (attrDecl.getAttrType() != null) && (CMDataType.URI.equals(attrDecl.getAttrType().getDataTypeName()))) { - return true; - } - } - return false; - } - - /** - * Checks whether the given uriString is really pointing to a file - * - * @param uriString - * @return boolean - */ - private boolean isValidURI(String uriString) { - boolean isValid = false; - - if (isHttp(uriString)) - isValid = true; - else { - File file = getFileFromUriString(uriString); - if (file != null) - isValid = file.exists(); - } - return isValid; - } - - /** - * Resolves the given URI information - * - * @param baseLocation - * @param publicId - * @param systemId - * @return String resolved uri. - */ - private String resolveURI(String baseLocation, String publicId, String systemId) { - // dont resolve if there's nothing to resolve - if ((baseLocation == null) && (publicId == null) && (systemId == null)) - return null; - return URIResolverPlugin.createResolver().resolve(baseLocation, publicId, systemId); - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/BasicRefactorSearchRequestor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/BasicRefactorSearchRequestor.java deleted file mode 100644 index e505f4dd30..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/BasicRefactorSearchRequestor.java +++ /dev/null @@ -1,372 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.java.refactoring; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.Reader; -import java.lang.reflect.InvocationTargetException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.IType; -import org.eclipse.jdt.core.search.SearchDocument; -import org.eclipse.jdt.core.search.SearchMatch; -import org.eclipse.jdt.core.search.SearchRequestor; -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.Document; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jst.jsp.core.internal.java.search.JSPSearchSupport; -import org.eclipse.jst.jsp.core.internal.java.search.JavaSearchDocumentDelegate; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; -import org.eclipse.jst.jsp.ui.internal.Logger; -import org.eclipse.ltk.core.refactoring.Change; -import org.eclipse.ltk.core.refactoring.DocumentChange; -import org.eclipse.ltk.core.refactoring.RefactoringStatus; -import org.eclipse.osgi.util.NLS; -import org.eclipse.text.edits.MalformedTreeException; -import org.eclipse.text.edits.MultiTextEdit; -import org.eclipse.text.edits.ReplaceEdit; -import org.eclipse.text.edits.TextEdit; -import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.IEditorReference; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.actions.WorkspaceModifyOperation; -import org.eclipse.ui.texteditor.ITextEditor; -import org.eclipse.wst.sse.core.internal.document.DocumentReader; -import org.eclipse.wst.sse.core.internal.encoding.CodedStreamCreator; - -/** - * Creates document change(s) for an IJavaElement rename. - * Changes are created for every type "match" in the workspace - * @author pavery - */ -public class BasicRefactorSearchRequestor extends SearchRequestor { - - /** - * Workspace operation to perform save on model for updated documents. - * Should only be done on models not open in an editor. - */ - private class SaveJspFileOp extends WorkspaceModifyOperation { - - private IDocument fJSPDoc = null; - private IFile fJSPFile = null; - - public SaveJspFileOp(IFile jspFile, IDocument jspDoc) { - this.fJSPDoc = jspDoc; - this.fJSPFile = jspFile; - } - - protected void execute(IProgressMonitor monitor) throws CoreException, InvocationTargetException, InterruptedException { - - // https://w3.opensource.ibm.com/bugzilla/show_bug.cgi?id=3765 - // save file w/ no intermediate model creation - - CodedStreamCreator codedStreamCreator = new CodedStreamCreator(); - Reader reader = new DocumentReader(this.fJSPDoc); - codedStreamCreator.set(this.fJSPFile, reader); - - ByteArrayOutputStream codedByteStream = null; - InputStream codedStream = null; - try { - codedByteStream = codedStreamCreator.getCodedByteArrayOutputStream(); - codedStream = new ByteArrayInputStream(codedByteStream.toByteArray()); - if (this.fJSPFile.exists()) - this.fJSPFile.setContents(codedStream, true, true, null); - else - this.fJSPFile.create(codedStream, false, null); - - } catch (CoreException e) { - Logger.logException(e); - } catch (IOException e) { - Logger.logException(e); - } - finally { - try { - if(codedByteStream != null) - codedByteStream.close(); - if(codedStream != null) - codedStream.close(); - } - catch (IOException e){ - // unlikely - } - } - } - } - // end inner class SaveJspFileOp - - /** - * Change class that wraps a text edit on the jsp document - */ - private class RenameChange extends DocumentChange { - - private TextEdit fEdit = null; - private IFile fJSPFile = null; - private IDocument fJSPDoc = null; - private String fDescription = JSPUIMessages.BasicRefactorSearchRequestor_0; - - public RenameChange(IFile jspFile, IDocument jspDoc, TextEdit edit, String description) { - super(JSPUIMessages.BasicRefactorSearchRequestor_6, jspDoc); - this.fEdit = edit; - this.fJSPFile = jspFile; - this.fJSPDoc = jspDoc; - this.fDescription = description; - } - - public RefactoringStatus isValid(IProgressMonitor pm)throws CoreException { - return new RefactoringStatus(); - } - - public IDocument getPreviewDocument(IProgressMonitor pm) throws CoreException { - IDocument copyDoc = new Document(fJSPDoc.get()); - try { - fEdit.apply(copyDoc); - } - catch (MalformedTreeException e) { - // ignore - } - catch (BadLocationException e) { - // ignore - } - return copyDoc; - } - - public Change perform(IProgressMonitor pm) throws CoreException { - RenameChange undoChange = null; - try { - - if(!isOpenInEditor(this.fJSPDoc)) { - // apply edit to JSP doc AND save model - undoChange = new RenameChange(this.fJSPFile, this.fJSPDoc, this.fEdit.apply(fJSPDoc), this.fDescription); - saveFile(this.fJSPFile, this.fJSPDoc); - } - else { - // just apply edit to JSP document - undoChange = new RenameChange(this.fJSPFile, this.fJSPDoc, this.fEdit.apply(fJSPDoc), this.fDescription); - } - - } catch (MalformedTreeException e) { - Logger.logException(e); - } catch (BadLocationException e) { - Logger.logException(e); - } - return undoChange; - } - - /** - * Performed in an operation since it modifies resources in the workspace - * @param jspDoc - * @throws CoreException - */ - private void saveFile(IFile jspFile, IDocument jspDoc) { - - SaveJspFileOp op = new SaveJspFileOp(jspFile, jspDoc); - - try { - op.run(JSPSearchSupport.getInstance().getProgressMonitor()); - } catch (InvocationTargetException e) { - Logger.logException(e); - } catch (InterruptedException e) { - Logger.logException(e); - } - } - - /** - * Checks if a document is open in an editor - * @param jspDoc - * @return - */ - private boolean isOpenInEditor(IDocument jspDoc) { - IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows(); - IWorkbenchWindow w = null; - for (int i = 0; i < windows.length; i++) { - - w = windows[i]; - IWorkbenchPage page = w.getActivePage(); - if (page != null) { - - IEditorReference[] references = page.getEditorReferences(); - IEditorPart editor = null; - Object o = null; - IDocument doc = null; - for (int j = 0; j < references.length; j++) { - - editor = references[j].getEditor(true); - // https://w3.opensource.ibm.com/bugzilla/show_bug.cgi?id=3764 - // use adapter to get ITextEditor (for things like - // page designer) - o = editor.getAdapter(ITextEditor.class); - if (o != null && o instanceof ITextEditor) { - - doc = ((ITextEditor) o).getDocumentProvider().getDocument(editor.getEditorInput()); - if (doc != null && doc.equals(jspDoc)) { - return true; - } - } - } - } - } - return false; - } - - public String getName() { - return this.fDescription; - } - - public Object getModifiedElement() { - return getElement(); - } - } - // end inner class RenameChange - - - /** The type being renamed (the old type)*/ - IJavaElement fElement = null; - /** The new name of the type being renamed*/ - private String fNewName = ""; //$NON-NLS-1$ - /** maps a JSPSearchDocument path -> MultiTextEdit for the java file*/ - private HashMap fSearchDocPath2JavaEditMap = null; - - public BasicRefactorSearchRequestor(IJavaElement element, String newName) { - this.fNewName = newName; - this.fElement = element; - this.fSearchDocPath2JavaEditMap = new HashMap(); - } - - public IJavaElement getElement() { - return this.fElement; - } - - /** - * @return the new name for the Type - */ - public String getNewName() { - return this.fNewName; - } - - /** - * @see org.eclipse.jdt.core.search.SearchRequestor#acceptSearchMatch(org.eclipse.jdt.core.search.SearchMatch) - */ - public void acceptSearchMatch(SearchMatch javaMatch) throws CoreException { - - String matchDocumentPath = javaMatch.getResource().getFullPath().toString(); - SearchDocument searchDoc = JSPSearchSupport.getInstance().getSearchDocument(matchDocumentPath); - - if (searchDoc != null && searchDoc instanceof JavaSearchDocumentDelegate) { - - String renameText = getRenameText((JavaSearchDocumentDelegate)searchDoc, javaMatch); - - // add it for the correct document - addJavaEdit(searchDoc.getPath(), new ReplaceEdit(javaMatch.getOffset(), javaMatch.getLength(), renameText)); - } - } - - /** - * @param searchDoc - * @return - */ - protected String getRenameText(JavaSearchDocumentDelegate searchDoc, SearchMatch javaMatch) { - return getNewName(); - } - - /** - * Adds to the multi edit for a give java document. - * @param javaDocument - * @param javaEdit - */ - private void addJavaEdit(String searchDocPath, ReplaceEdit javaEdit) { - - Object o = this.fSearchDocPath2JavaEditMap.get(searchDocPath); - if(o != null) { - - MultiTextEdit multi = (MultiTextEdit)o; - multi.addChild(javaEdit); - } - else { - // use a multi edit so doc position offsets get updated automatically - // when adding multiple child edits - MultiTextEdit multi = new MultiTextEdit(); - multi.addChild(javaEdit); - this.fSearchDocPath2JavaEditMap.put(searchDocPath, multi); - } - } - - /** - * - * @return all JSP changes for the search matches for the given Type - */ - public Change[] getChanges() { - - JSPSearchSupport support = JSPSearchSupport.getInstance(); - List changes = new ArrayList(); - Iterator keys = fSearchDocPath2JavaEditMap.keySet().iterator(); - String searchDocPath = null; - SearchDocument delegate = null; - - while(keys.hasNext()) { - // create on the fly - searchDocPath = (String)keys.next(); - MultiTextEdit javaEdit = (MultiTextEdit)fSearchDocPath2JavaEditMap.get(searchDocPath); - delegate = support.getSearchDocument(searchDocPath); - - if(delegate != null && delegate instanceof JavaSearchDocumentDelegate) { - JavaSearchDocumentDelegate javaDelegate = (JavaSearchDocumentDelegate)delegate; - changes.add(createChange(javaDelegate, javaDelegate.getJspTranslation().getJspEdit(javaEdit))); - } - } - return (Change[])changes.toArray(new Change[changes.size()]); - } - - private Change createChange(JavaSearchDocumentDelegate searchDoc, TextEdit edit) { - - IDocument doc = searchDoc.getJspTranslation().getJspDocument(); - String file = searchDoc.getFile().getName(); - String description = getDescription(); - try { - // document lines are 0 based - String lineNumber = Integer.toString(doc.getLineOfOffset(edit.getOffset()) + 1); - description += " " + NLS.bind(JSPUIMessages.BasicRefactorSearchRequestor_1, new String[]{file, lineNumber}); //$NON-NLS-1$ - } - catch (BadLocationException e) { - Logger.logException(e); - } - return new RenameChange(searchDoc.getFile(), doc, edit, description); - } - - // https://w3.opensource.ibm.com/bugzilla/show_bug.cgi?id=3205 - // only relevant for IType refactorings - protected boolean isFullyQualified(String matchText) { - if(getElement() instanceof IType) { - String pkg = ((IType)getElement()).getPackageFragment().getElementName(); - return matchText.startsWith(pkg); - } - return false; - } - - /** - * Subclasses should override to better describe the change. - * @return - */ - protected String getDescription() { - return ""; //$NON-NLS-1$ - } -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPJavaSelectionProvider.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPJavaSelectionProvider.java deleted file mode 100644 index 1ac5f8a3b3..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPJavaSelectionProvider.java +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2001, 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - * - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.java.refactoring; - -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.ITextSelection; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jst.jsp.core.internal.java.IJSPTranslation; -import org.eclipse.jst.jsp.core.internal.java.JSPTranslation; -import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapter; -import org.eclipse.ui.texteditor.ITextEditor; -import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; - -class JSPJavaSelectionProvider { - static IJavaElement[] getSelection(ITextEditor textEditor) { - IJavaElement[] elements = null; - - IDocument document = textEditor.getDocumentProvider().getDocument(textEditor.getEditorInput()); - ISelection selection = textEditor.getSelectionProvider().getSelection(); - if (selection instanceof ITextSelection) { - ITextSelection textSelection = (ITextSelection) selection; - // get the JSP translation object for this editor's document - IDOMModel xmlModel = (IDOMModel) StructuredModelManager.getModelManager().getExistingModelForRead(document); - try { - if (xmlModel != null) { - IDOMDocument xmlDoc = xmlModel.getDocument(); - - JSPTranslationAdapter adapter = (JSPTranslationAdapter) xmlDoc.getAdapterFor(IJSPTranslation.class); - if (adapter != null) { - JSPTranslation translation = adapter.getJSPTranslation(); - elements = translation.getElementsFromJspRange(textSelection.getOffset(), textSelection.getOffset() + textSelection.getLength()); - } - } - } - finally { - if (xmlModel != null) - xmlModel.releaseFromRead(); - } - } - if (elements == null) { - elements = new IJavaElement[0]; - } - return elements; - } - -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPMethodRenameChange.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPMethodRenameChange.java deleted file mode 100644 index 485ff11a89..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPMethodRenameChange.java +++ /dev/null @@ -1,67 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.java.refactoring; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.jdt.core.IMethod; -import org.eclipse.jst.jsp.core.internal.java.search.JSPSearchScope; -import org.eclipse.jst.jsp.core.internal.java.search.JSPSearchSupport; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; -import org.eclipse.ltk.core.refactoring.Change; -import org.eclipse.ltk.core.refactoring.RefactoringStatus; - -/** - * @author pavery - */ -public class JSPMethodRenameChange extends Change { - - public static Change[] createChangesFor(IMethod method, String newName) { - JSPSearchSupport support = JSPSearchSupport.getInstance(); - - // should be handled by JSPIndexManager - // https://w3.opensource.ibm.com/bugzilla/show_bug.cgi?id=3036 - // support.indexWorkspaceAndWait(); - - BasicRefactorSearchRequestor requestor = new JSPMethodRenameRequestor(method, newName); - support.searchRunnable(method, new JSPSearchScope(), requestor); - - return requestor.getChanges(); - } - - public String getName() { - return JSPUIMessages.JSP_changes; //$NON-NLS-1$ - } - - public void initializeValidationData(IProgressMonitor pm) { - // pa_TODO implement - // must be implemented to decide correct value of isValid - } - - public RefactoringStatus isValid(IProgressMonitor pm) throws CoreException { - // pa_TODO implement - // This method must ensure that the change object is still valid. - // This is in particular interesting when performing an undo change - // since the workspace could have changed since the undo change has - // been created. - return new RefactoringStatus(); - } - - public Change perform(IProgressMonitor pm) throws CoreException { - // pa_TODO return the "undo" change here - return null; - } - - public Object getModifiedElement() { - // pa_TODO Auto-generated method stub - return null; - } -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPMethodRenameParticipant.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPMethodRenameParticipant.java deleted file mode 100644 index edac9c846d..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPMethodRenameParticipant.java +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -/* - * Created on May 6, 2004 - * - * TODO To change the template for this generated file go to - * Window - Preferences - Java - Code Style - Code Templates - */ -package org.eclipse.jst.jsp.ui.internal.java.refactoring; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.jdt.core.IMethod; -import org.eclipse.jdt.core.JavaModelException; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; -import org.eclipse.jst.jsp.ui.internal.Logger; -import org.eclipse.ltk.core.refactoring.Change; -import org.eclipse.ltk.core.refactoring.CompositeChange; -import org.eclipse.ltk.core.refactoring.RefactoringStatus; -import org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext; -import org.eclipse.ltk.core.refactoring.participants.RenameParticipant; - -/** - * @author pavery - */ -public class JSPMethodRenameParticipant extends RenameParticipant { - - private IMethod fMethod = null; - - /** - * @see org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant#initialize(java.lang.Object) - */ - protected boolean initialize(Object element) { - if(element instanceof IMethod) { - this.fMethod = (IMethod) element; - return true; - } - return false; - } - - /** - * @see org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant#getName() - */ - public String getName() { - String name = ""; //$NON-NLS-1$ - if(this.fMethod != null) { - try { - name = this.fMethod.getSource(); - } catch (JavaModelException e) { - Logger.logException(e); - } - } - return name; - } - /* (non-Javadoc) - * @see org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant#checkConditions(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext) - */ - public RefactoringStatus checkConditions(IProgressMonitor pm, CheckConditionsContext context) { - // TODO Auto-generated method stub - return null; - } - /* (non-Javadoc) - * @see org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant#createChange(org.eclipse.core.runtime.IProgressMonitor) - */ - public Change createChange(IProgressMonitor pm) throws CoreException { - Change[] changes = JSPMethodRenameChange.createChangesFor(this.fMethod, getArguments().getNewName()); - CompositeChange multiChange = null; - if(changes.length > 0) - multiChange = new CompositeChange(JSPUIMessages.JSP_changes, changes); //$NON-NLS-1$ - return multiChange; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPMethodRenameRequestor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPMethodRenameRequestor.java deleted file mode 100644 index 6147208de9..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPMethodRenameRequestor.java +++ /dev/null @@ -1,47 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.java.refactoring; - -import java.text.MessageFormat; - -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.search.SearchMatch; -import org.eclipse.jst.jsp.core.internal.java.search.JavaSearchDocumentDelegate; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; - -/** - * @author pavery - */ -public class JSPMethodRenameRequestor extends BasicRefactorSearchRequestor { - - public JSPMethodRenameRequestor(IJavaElement element, String newName) { - super(element, newName); - } - - protected String getRenameText(JavaSearchDocumentDelegate searchDoc, SearchMatch javaMatch) { - - String javaText = searchDoc.getJspTranslation().getJavaText(); - String methodText = javaText.substring(javaMatch.getOffset(), javaMatch.getOffset() + javaMatch.getLength()); - String methodSuffix = methodText.substring(methodText.indexOf("(")); //$NON-NLS-1$ - return getNewName() + methodSuffix; - } - - /* (non-Javadoc) - * @see org.eclipse.jst.jsp.ui.internal.java.refactoring.BasicRefactorSearchRequestor#getDescription() - */ - protected String getDescription() { - - String methodName = getElement().getElementName(); - String newName = getNewName(); - String description = MessageFormat.format(JSPUIMessages.BasicRefactorSearchRequestor_3, new String[]{methodName, newName}); //$NON-NLS-1$ - return description; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPMoveElementActionDelegate.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPMoveElementActionDelegate.java deleted file mode 100644 index 53a3d012d3..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPMoveElementActionDelegate.java +++ /dev/null @@ -1,153 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - * - *******************************************************************************/ - -package org.eclipse.jst.jsp.ui.internal.java.refactoring; - -import org.eclipse.core.resources.IResource; -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.JavaModelException; -import org.eclipse.jdt.internal.corext.refactoring.reorg.JavaMoveProcessor; -import org.eclipse.jdt.internal.ui.refactoring.actions.RefactoringStarter; -import org.eclipse.jdt.internal.ui.refactoring.reorg.CreateTargetQueries; -import org.eclipse.jdt.internal.ui.refactoring.reorg.ReorgMoveWizard; -import org.eclipse.jdt.internal.ui.refactoring.reorg.ReorgQueries; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; -import org.eclipse.jst.jsp.ui.internal.Logger; -import org.eclipse.ltk.core.refactoring.participants.MoveRefactoring; -import org.eclipse.ltk.ui.refactoring.RefactoringWizard; -import org.eclipse.swt.widgets.Event; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.IActionDelegate2; -import org.eclipse.ui.IEditorActionDelegate; -import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.IViewActionDelegate; -import org.eclipse.ui.IViewPart; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.texteditor.ITextEditor; -import org.eclipse.wst.sse.ui.internal.util.PlatformStatusLineUtil; - -/** - * An action delegate that launches JDT move element wizard - * - * Still relies heavily on internal API - * will change post 3.0 with public move support - * https://bugs.eclipse.org/bugs/show_bug.cgi?id=61817 - */ -public class JSPMoveElementActionDelegate implements IEditorActionDelegate, IActionDelegate2, IViewActionDelegate { - private IEditorPart fEditor; - - public void setActiveEditor(IAction action, IEditorPart targetEditor) { - fEditor = targetEditor; - } - - public void dispose() { - // nulling out just in case - fEditor = null; - } - - public void init(IAction action) { - if (action != null) { - action.setText(JSPUIMessages.MoveElement_label); - action.setToolTipText(JSPUIMessages.MoveElement_label); - } - } - - public void runWithEvent(IAction action, Event event) { - run(action); - } - - public void run(IAction action) { - IJavaElement[] elements = getSelectedElements(); - if (elements.length > 0) { - - // need to check if it's movable - try { - JavaMoveProcessor processor = JavaMoveProcessor.create(getResources(elements), elements/* - * , - * getCodeGenerationSettings() - */); - Shell parent = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); - - MoveRefactoring refactoring = new MoveRefactoring(processor); - - RefactoringWizard wizard = createWizard(refactoring); - - /* - * We want to get the shell from the refactoring dialog but - * it's not known at this point, so we pass the wizard and - * then, once the dialog is open, we will have access to its - * shell. - */ - - processor.setCreateTargetQueries(new CreateTargetQueries(wizard)); - processor.setReorgQueries(new ReorgQueries(wizard)); - // String openRefactoringWizMsg = - // RefactoringMessages.getString("OpenRefactoringWizardAction.refactoring"); - // //$NON-NLS-1$ - String openRefactoringWizMsg = JSPUIMessages.MoveElementWizard; // "Move - // the - // selected - // elements"; - // //$NON-NLS-1$ - new RefactoringStarter().activate(refactoring, wizard, parent, openRefactoringWizMsg, true); - - PlatformStatusLineUtil.clearStatusLine(); - - } - catch (JavaModelException e) { - Logger.logException(e); - } - } - else { - PlatformStatusLineUtil.displayErrorMessage(JSPUIMessages.JSPMoveElementAction_0); //$NON-NLS-1$ - } - } - - public void selectionChanged(IAction action, ISelection selection) { - PlatformStatusLineUtil.clearStatusLine(); - } - - public void init(IViewPart view) { - // do nothing - } - - private IJavaElement[] getSelectedElements() { - - IJavaElement[] elements = new IJavaElement[0]; - if (fEditor instanceof ITextEditor) - elements = JSPJavaSelectionProvider.getSelection((ITextEditor) fEditor); - return elements; - } - - private IResource[] getResources(IJavaElement[] elements) { - IResource[] resources = new IResource[elements.length]; - for (int i = 0; i < elements.length; i++) { - try { - resources[i] = elements[i].getPrimaryElement().getCorrespondingResource();// elements[i].getResource(); - } - catch (JavaModelException e) { - Logger.logException(e); - } - } - return resources; - } - - /** - * will change post 3.0 with public move support - * https://bugs.eclipse.org/bugs/show_bug.cgi?id=61817 - */ - private RefactoringWizard createWizard(MoveRefactoring refactoring) { - return new ReorgMoveWizard(refactoring); - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPPackageRenameChange.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPPackageRenameChange.java deleted file mode 100644 index d15e089ab0..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPPackageRenameChange.java +++ /dev/null @@ -1,68 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.java.refactoring; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.jdt.core.IPackageFragment; -import org.eclipse.jst.jsp.core.internal.java.search.JSPSearchScope; -import org.eclipse.jst.jsp.core.internal.java.search.JSPSearchSupport; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; -import org.eclipse.ltk.core.refactoring.Change; -import org.eclipse.ltk.core.refactoring.RefactoringStatus; - -/** - * @author pavery - */ -public class JSPPackageRenameChange extends Change { - - public static Change[] createChangesFor(IPackageFragment pkg, String newName) { - JSPSearchSupport support = JSPSearchSupport.getInstance(); - - // should be handled by JSPIndexManager - // https://w3.opensource.ibm.com/bugzilla/show_bug.cgi?id=3036 - //support.indexWorkspaceAndWait(); - - BasicRefactorSearchRequestor requestor = new JSPPackageRenameRequestor(pkg, newName); - support.searchRunnable(pkg, new JSPSearchScope(), requestor); - - return requestor.getChanges(); - } - - public String getName() { - return JSPUIMessages.JSP_changes; //$NON-NLS-1$ - } - - public void initializeValidationData(IProgressMonitor pm) { - // pa_TODO implement - // must be implemented to decide correct value of isValid - } - - public RefactoringStatus isValid(IProgressMonitor pm) throws CoreException { - // pa_TODO implement - // This method must ensure that the change object is still valid. - // This is in particular interesting when performing an undo change - // since the workspace could have changed since the undo change has - // been created. - return new RefactoringStatus(); - } - - public Change perform(IProgressMonitor pm) throws CoreException { - // TODO return the "undo" change here - return null; - } - - public Object getModifiedElement() { - - //return this.pkg; - return null; - } -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPPackageRenameParticipant.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPPackageRenameParticipant.java deleted file mode 100644 index 3903d39882..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPPackageRenameParticipant.java +++ /dev/null @@ -1,74 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.java.refactoring; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.jdt.core.IPackageFragment; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; -import org.eclipse.ltk.core.refactoring.Change; -import org.eclipse.ltk.core.refactoring.CompositeChange; -import org.eclipse.ltk.core.refactoring.RefactoringStatus; -import org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext; -import org.eclipse.ltk.core.refactoring.participants.RenameParticipant; - -/** - * Remember to change the plugin.xml file if the name of this class changes. - * - * @author pavery - */ -public class JSPPackageRenameParticipant extends RenameParticipant { - - private IPackageFragment fPkg = null; - - /** - * @see org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant#initialize(java.lang.Object) - */ - protected boolean initialize(Object element) { - if(element instanceof IPackageFragment) { - this.fPkg = (IPackageFragment) element; - return true; - } - return false; - } - - /** - * @see org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant#getName() - */ - public String getName() { - String name = ""; //$NON-NLS-1$ - if(this.fPkg != null) { - name = this.fPkg.getElementName(); - } - return name; - } - - /** - * @see org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant#checkConditions(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext) - */ - public RefactoringStatus checkConditions(IProgressMonitor pm, CheckConditionsContext context) { - // TODO Auto-generated method stub - return null; - } - - /** - * @see org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant#createChange(org.eclipse.core.runtime.IProgressMonitor) - */ - public Change createChange(IProgressMonitor pm) throws CoreException { - Change[] changes = JSPPackageRenameChange.createChangesFor(this.fPkg, getArguments().getNewName()); - CompositeChange multiChange = null; - if(changes.length > 0) - multiChange = new CompositeChange(JSPUIMessages.JSP_changes, changes); //$NON-NLS-1$ - return multiChange; - } - - -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPPackageRenameRequestor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPPackageRenameRequestor.java deleted file mode 100644 index 3cffa0cd11..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPPackageRenameRequestor.java +++ /dev/null @@ -1,41 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.java.refactoring; - -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; -import org.eclipse.osgi.util.NLS; - -/** - * Overrides get description - * @author pavery - */ -public class JSPPackageRenameRequestor extends BasicRefactorSearchRequestor { - - /** - * Element is the old package. newName is the new package name. - * @param element - * @param newName - */ - public JSPPackageRenameRequestor(IJavaElement element, String newName) { - super(element, newName); - } - - /* - * @see org.eclipse.jst.jsp.ui.internal.java.refactoring.BasicRefactorSearchRequestor#getDescription() - */ - protected String getDescription() { - String packageName = getElement().getElementName(); - String newName = getNewName(); - String description = NLS.bind(JSPUIMessages.BasicRefactorSearchRequestor_5, (new String[]{packageName, newName})); //$NON-NLS-1$ - return description; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPRenameElementActionDelegate.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPRenameElementActionDelegate.java deleted file mode 100644 index f487fc54a4..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPRenameElementActionDelegate.java +++ /dev/null @@ -1,109 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - * - *******************************************************************************/ - -package org.eclipse.jst.jsp.ui.internal.java.refactoring; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.IMethod; -import org.eclipse.jdt.core.IPackageFragment; -import org.eclipse.jdt.core.IType; -import org.eclipse.jdt.ui.refactoring.RenameSupport; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; -import org.eclipse.jst.jsp.ui.internal.Logger; -import org.eclipse.swt.widgets.Event; -import org.eclipse.ui.IActionDelegate2; -import org.eclipse.ui.IEditorActionDelegate; -import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.IViewActionDelegate; -import org.eclipse.ui.IViewPart; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.texteditor.ITextEditor; -import org.eclipse.wst.sse.ui.internal.util.PlatformStatusLineUtil; - -/** - * An action delegate that launches JDT rename element wizard - */ -public class JSPRenameElementActionDelegate implements IEditorActionDelegate, IActionDelegate2, IViewActionDelegate { - private IEditorPart fEditor; - - public void setActiveEditor(IAction action, IEditorPart targetEditor) { - fEditor = targetEditor; - } - - public void dispose() { - // nulling out just in case - fEditor = null; - } - - public void init(IAction action) { - if (action != null) { - action.setText(JSPUIMessages.RenameElement_label); - action.setToolTipText(JSPUIMessages.RenameElement_label); - } - } - - public void runWithEvent(IAction action, Event event) { - run(action); - } - - public void run(IAction action) { - IJavaElement element = getSelectedElement(); - if(element != null) { - RenameSupport renameSupport = null; - try { - switch(element.getElementType()) { - case IJavaElement.TYPE: - renameSupport= RenameSupport.create((IType)element, element.getElementName(), RenameSupport.UPDATE_REFERENCES); - break; - case IJavaElement.METHOD: - renameSupport= RenameSupport.create((IMethod)element, element.getElementName(), RenameSupport.UPDATE_REFERENCES); - break; - case IJavaElement.PACKAGE_FRAGMENT: - renameSupport= RenameSupport.create((IPackageFragment)element, element.getElementName(), RenameSupport.UPDATE_REFERENCES); - break; - } - if(renameSupport != null) { - renameSupport.openDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()); - PlatformStatusLineUtil.clearStatusLine(); - } - } - catch (CoreException e) { - Logger.logException(e); - } - } - else { - PlatformStatusLineUtil.displayErrorMessage(JSPUIMessages.JSPRenameElementAction_0); //$NON-NLS-1$ - PlatformStatusLineUtil.addOneTimeClearListener(); - } - } - - public void selectionChanged(IAction action, ISelection selection) { - PlatformStatusLineUtil.clearStatusLine(); - } - - public void init(IViewPart view) { - // do nothing - } - - private IJavaElement getSelectedElement() { - IJavaElement element = null; - if (fEditor instanceof ITextEditor) { - IJavaElement[] elements = JSPJavaSelectionProvider.getSelection((ITextEditor)fEditor); - if (elements.length == 1) - element = elements[0]; - } - return element; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPTypeMoveChange.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPTypeMoveChange.java deleted file mode 100644 index facd6802fb..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPTypeMoveChange.java +++ /dev/null @@ -1,66 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.java.refactoring; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.jdt.core.IType; -import org.eclipse.jst.jsp.core.internal.java.search.JSPSearchScope; -import org.eclipse.jst.jsp.core.internal.java.search.JSPSearchSupport; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; -import org.eclipse.ltk.core.refactoring.Change; -import org.eclipse.ltk.core.refactoring.RefactoringStatus; - -/** - * @author pavery - */ -public class JSPTypeMoveChange extends Change { - - public static Change[] createChangesFor(IType type, String newName) { - - JSPSearchSupport support = JSPSearchSupport.getInstance(); - // should be handled by JSPIndexManager - // https://w3.opensource.ibm.com/bugzilla/show_bug.cgi?id=3036 - // support.indexWorkspaceAndWait(); - - JSPTypeMoveRequestor requestor = new JSPTypeMoveRequestor(type, newName); - support.searchRunnable(type, new JSPSearchScope(), requestor); - - return requestor.getChanges(); - } - - public String getName() { - return JSPUIMessages.JSP_changes; //$NON-NLS-1$ - } - - public void initializeValidationData(IProgressMonitor pm) { - // pa_TODO implement - // must be implemented to decide correct value of isValid - } - - public RefactoringStatus isValid(IProgressMonitor pm) throws CoreException { - // pa_TODO implement - // This method must ensure that the change object is still valid. - // This is in particular interesting when performing an undo change - // since the workspace could have changed since the undo change has - // been created. - return new RefactoringStatus(); - } - - public Change perform(IProgressMonitor pm) throws CoreException { - // TODO return the "undo" change here - return null; - } - - public Object getModifiedElement() { - return null; - } -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPTypeMoveParticipant.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPTypeMoveParticipant.java deleted file mode 100644 index 40c80b17f4..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPTypeMoveParticipant.java +++ /dev/null @@ -1,82 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.java.refactoring; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.jdt.core.IPackageFragment; -import org.eclipse.jdt.core.IType; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; -import org.eclipse.ltk.core.refactoring.Change; -import org.eclipse.ltk.core.refactoring.CompositeChange; -import org.eclipse.ltk.core.refactoring.RefactoringStatus; -import org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext; -import org.eclipse.ltk.core.refactoring.participants.MoveParticipant; - -/** - * @author pavery - */ -public class JSPTypeMoveParticipant extends MoveParticipant { - - IType fType = null; - - /* (non-Javadoc) - * @see org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant#initialize(java.lang.Object) - */ - protected boolean initialize(Object element) { - - if(element instanceof IType) { - this.fType = (IType)element; - return true; - } - return false; - } - - /* (non-Javadoc) - * @see org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant#getName() - */ - public String getName() { - - String name = ""; //$NON-NLS-1$ - if(this.fType != null) - name = this.fType.getElementName(); - return name; - } - - /* (non-Javadoc) - * @see org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant#checkConditions(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext) - */ - public RefactoringStatus checkConditions(IProgressMonitor pm, CheckConditionsContext context) { - // TODO Auto-generated method stub - return null; - } - - /* (non-Javadoc) - * @see org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant#createChange(org.eclipse.core.runtime.IProgressMonitor) - */ - public Change createChange(IProgressMonitor pm) throws CoreException { - - if(pm != null && pm.isCanceled()) - return null; - - CompositeChange multiChange = null; - Object dest = getArguments().getDestination(); - - if(dest instanceof IPackageFragment) { - Change[] changes = JSPTypeMoveChange.createChangesFor(fType, ((IPackageFragment)dest).getElementName()); - if(changes.length > 0) - multiChange = new CompositeChange(JSPUIMessages.JSP_changes, changes); //$NON-NLS-1$ - } - return multiChange; - } - - -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPTypeMoveRequestor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPTypeMoveRequestor.java deleted file mode 100644 index edd02f29de..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPTypeMoveRequestor.java +++ /dev/null @@ -1,60 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.java.refactoring; - -import java.text.MessageFormat; - -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.search.SearchMatch; -import org.eclipse.jst.jsp.core.internal.java.JSPTranslation; -import org.eclipse.jst.jsp.core.internal.java.search.JavaSearchDocumentDelegate; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; - -/** - * @author pavery - */ -public class JSPTypeMoveRequestor extends BasicRefactorSearchRequestor { - - /** - * @param element - * @param newName - */ - public JSPTypeMoveRequestor(IJavaElement element, String newPackage) { - super(element, newPackage); - } - - protected String getRenameText(JavaSearchDocumentDelegate searchDoc, SearchMatch javaMatch) { - - String renameText = getElement().getElementName(); - - JSPTranslation trans = searchDoc.getJspTranslation(); - String matchText = trans.getJavaText().substring(javaMatch.getOffset(), javaMatch.getOffset() + javaMatch.getLength()); - - // if it's an import or jsp:useBean, we need to add the package name as well - if(trans.isImport(javaMatch.getOffset()) || trans.isUseBean(javaMatch.getOffset()) || isFullyQualified(matchText)) { - if(!getNewName().equals("")) //$NON-NLS-1$ - // getNewName() is the pkg name - renameText = getNewName() + "." + renameText; //$NON-NLS-1$ - } - return renameText; - } - - /* (non-Javadoc) - * @see org.eclipse.jst.jsp.ui.internal.java.refactoring.BasicRefactorSearchRequestor#getDescription() - */ - protected String getDescription() { - - String typeName = getElement().getElementName(); - String newName = getNewName(); - String description = MessageFormat.format(JSPUIMessages.BasicRefactorSearchRequestor_2, new String[]{typeName, newName}); //$NON-NLS-1$ - return description; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPTypeRenameChange.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPTypeRenameChange.java deleted file mode 100644 index 99f1666adf..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPTypeRenameChange.java +++ /dev/null @@ -1,69 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.java.refactoring; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.jdt.core.IType; -import org.eclipse.jst.jsp.core.internal.java.search.JSPSearchScope; -import org.eclipse.jst.jsp.core.internal.java.search.JSPSearchSupport; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; -import org.eclipse.ltk.core.refactoring.Change; -import org.eclipse.ltk.core.refactoring.RefactoringStatus; - - -/** - * @author pavery - */ -public class JSPTypeRenameChange extends Change { - - public static Change[] createChangesFor(IType type, String newName) { - JSPSearchSupport support = JSPSearchSupport.getInstance(); - - // should be handled by JSPIndexManager - // https://w3.opensource.ibm.com/bugzilla/show_bug.cgi?id=3036 - // support.indexWorkspaceAndWait(); - - - JSPTypeRenameRequestor requestor = new JSPTypeRenameRequestor(type, newName); - support.searchRunnable(type, new JSPSearchScope(), requestor); - - return requestor.getChanges(); - } - - public String getName() { - return JSPUIMessages.JSP_changes; //$NON-NLS-1$ - } - - public void initializeValidationData(IProgressMonitor pm) { - // pa_TODO implement - // must be implemented to decide correct value of isValid - } - - public RefactoringStatus isValid(IProgressMonitor pm) throws CoreException { - // pa_TODO implement - // This method must ensure that the change object is still valid. - // This is in particular interesting when performing an undo change - // since the workspace could have changed since the undo change has - // been created. - return new RefactoringStatus(); - } - - public Change perform(IProgressMonitor pm) throws CoreException { - // TODO return the "undo" change here - return null; - } - - public Object getModifiedElement() { - // TODO Auto-generated method stub - return null; - } -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPTypeRenameParticipant.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPTypeRenameParticipant.java deleted file mode 100644 index e6a16de886..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPTypeRenameParticipant.java +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.java.refactoring; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.jdt.core.IType; -import org.eclipse.jdt.core.JavaModelException; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; -import org.eclipse.jst.jsp.ui.internal.Logger; -import org.eclipse.ltk.core.refactoring.Change; -import org.eclipse.ltk.core.refactoring.CompositeChange; -import org.eclipse.ltk.core.refactoring.RefactoringStatus; -import org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext; -import org.eclipse.ltk.core.refactoring.participants.RenameParticipant; - -/** - * Remember to change the plugin.xml file if the name of this class changes. - * - * @author pavery - */ -public class JSPTypeRenameParticipant extends RenameParticipant { - - private IType fType = null; - - /** - * @see org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant#initialize(java.lang.Object) - */ - protected boolean initialize(Object element) { - if(element instanceof IType) { - this.fType = (IType) element; - return true; - } - return false; - } - - /** - * @see org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant#getName() - */ - public String getName() { - String name = ""; //$NON-NLS-1$ - if(this.fType != null) { - try { - name = this.fType.getSource(); - } catch (JavaModelException e) { - Logger.logException(e); - } - } - return name; - } - - /** - * @see org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant#checkConditions(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext) - */ - public RefactoringStatus checkConditions(IProgressMonitor pm, CheckConditionsContext context) { - // TODO Auto-generated method stub - return null; - } - - /** - * @see org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant#createChange(org.eclipse.core.runtime.IProgressMonitor) - */ - public Change createChange(IProgressMonitor pm) throws CoreException { - Change[] changes = JSPTypeRenameChange.createChangesFor(fType, getArguments().getNewName()); - CompositeChange multiChange = null; - if(changes.length > 0) - multiChange = new CompositeChange(JSPUIMessages.JSP_changes, changes); //$NON-NLS-1$ - return multiChange; - } - - -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPTypeRenameRequestor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPTypeRenameRequestor.java deleted file mode 100644 index d93ccf7e19..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPTypeRenameRequestor.java +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.java.refactoring; - -import java.text.MessageFormat; - -import org.eclipse.jdt.core.IType; -import org.eclipse.jdt.core.search.SearchMatch; -import org.eclipse.jst.jsp.core.internal.java.JSPTranslation; -import org.eclipse.jst.jsp.core.internal.java.search.JavaSearchDocumentDelegate; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; - -/** - * Creates document change(s) for a type rename. - * Changes are created for every type "match" in the workspace - * @author pavery - */ -public class JSPTypeRenameRequestor extends BasicRefactorSearchRequestor { - - public JSPTypeRenameRequestor(IType type, String newName) { - super(type, newName); - } - - private IType getType() { - return (IType)getElement(); - } - - protected String getRenameText(JavaSearchDocumentDelegate searchDoc, SearchMatch javaMatch) { - - String renameText = getNewName(); - - String pkg = getType().getPackageFragment().getElementName(); - JSPTranslation trans = searchDoc.getJspTranslation(); - String matchText = trans.getJavaText().substring(javaMatch.getOffset(), javaMatch.getOffset() + javaMatch.getLength()); - - // if it's an import or jsp:useBean or fully qualified type, we need to add the package name as well - if(trans.isImport(javaMatch.getOffset()) || /*trans.isUseBean(javaMatch.getOffset()) ||*/ isFullyQualified(matchText)) { - if(!pkg.equals("")) //$NON-NLS-1$ - renameText = pkg + "." + renameText; //$NON-NLS-1$ - } - return renameText; - } - - - /* (non-Javadoc) - * @see org.eclipse.jst.jsp.ui.internal.java.refactoring.BasicRefactorSearchRequestor#getDescription() - */ - protected String getDescription() { - - String typeName = getElement().getElementName(); - String newName = getNewName(); - String description = MessageFormat.format(JSPUIMessages.BasicRefactorSearchRequestor_4, new String[]{typeName, newName}); //$NON-NLS-1$ - return description; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/BasicJSPSearchRequestor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/BasicJSPSearchRequestor.java deleted file mode 100644 index ae3dbc49c6..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/BasicJSPSearchRequestor.java +++ /dev/null @@ -1,141 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.java.search; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.Platform; -import org.eclipse.jdt.core.search.SearchDocument; -import org.eclipse.jdt.core.search.SearchMatch; -import org.eclipse.jdt.core.search.SearchParticipant; -import org.eclipse.jdt.core.search.SearchRequestor; -import org.eclipse.jface.text.Document; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jst.jsp.core.internal.java.JSPTranslation; -import org.eclipse.jst.jsp.core.internal.java.search.JSPSearchSupport; -import org.eclipse.jst.jsp.core.internal.java.search.JavaSearchDocumentDelegate; - -/** - * Accepts matches from JSPSearchSupport.search(...) request. - * Adapts the results from java to JSP and displays in the SearchResultView. - * - * @author pavery - */ -public class BasicJSPSearchRequestor extends SearchRequestor { - - // for debugging - private static final boolean DEBUG; - static { - String value= Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jspsearch"); //$NON-NLS-1$ - DEBUG= value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$ - } - - /** - * Maps java search coordinates to corresponding JSP coordinates. - * Adds the matches to the Search Results view. - * @see org.eclipse.jdt.core.search.SearchRequestor#acceptSearchMatch(org.eclipse.jdt.core.search.SearchMatch) - */ - public void acceptSearchMatch(SearchMatch match) throws CoreException { - - if(JSPSearchSupport.getInstance().isCanceled()) - return; - - String matchDocumentPath = match.getResource().getFullPath().toString(); - SearchDocument searchDoc = JSPSearchSupport.getInstance().getSearchDocument(matchDocumentPath); - - if (searchDoc != null && searchDoc instanceof JavaSearchDocumentDelegate) { - JavaSearchDocumentDelegate javaSearchDoc = (JavaSearchDocumentDelegate)searchDoc; - int jspStart = javaSearchDoc.getJspOffset(match.getOffset()); - int jspEnd = javaSearchDoc.getJspOffset(match.getOffset() + match.getLength()); - - JSPTranslation trans = javaSearchDoc.getJspTranslation(); - String jspText = trans.getJspText(); - String javaText = javaSearchDoc.getJavaText(); - - if (DEBUG) - displayDebugInfo(match, jspStart, jspEnd, jspText, javaText); - - if (jspStart > -1 && jspEnd > -1) - addSearchMatch(new Document(trans.getJspText()), javaSearchDoc.getFile(), jspStart, jspEnd, jspText); - } - } - - /** - * @param searchDoc - * @param jspStart - * @param jspEnd - * @param jspTranslation - * @param jspText - * @throws CoreException - */ - protected void addSearchMatch(IDocument jspDocument, IFile jspFile, int jspStart, int jspEnd, String jspText) { - // implement in subclass - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jdt.core.search.SearchRequestor#beginReporting() - */ - public void beginReporting() { - - if (DEBUG) - System.out.println("JSP Search requestor: beginReporting()"); //$NON-NLS-1$ - } - - /** - * @see org.eclipse.jdt.core.search.SearchRequestor#endReporting() - */ - public void endReporting() { - - if (DEBUG) - System.out.println("JSP Search requestor: endReporting()"); //$NON-NLS-1$ - } - - /** - * @see org.eclipse.jdt.core.search.SearchRequestor#enterParticipant(org.eclipse.jdt.core.search.SearchParticipant) - */ - public void enterParticipant(SearchParticipant participant) { - - if (DEBUG) - System.out.println("JSP Search requestor: enterParticipant()"); //$NON-NLS-1$ - } - - /** - * @see org.eclipse.jdt.core.search.SearchRequestor#exitParticipant(org.eclipse.jdt.core.search.SearchParticipant) - */ - public void exitParticipant(SearchParticipant participant) { - - if (DEBUG) - System.out.println("JSP Search requestor: exitParticipant()"); //$NON-NLS-1$ - } - - /** - * For debug. - * @param origMatch - * @param jspStart - * @param jspEnd - * @param jspText - * @param javaText - */ - private void displayDebugInfo(SearchMatch origMatch, int jspStart, int jspEnd, String jspText, String javaText) { - - if (origMatch == null || jspStart == -1 || jspEnd == -1 || jspEnd < jspStart || jspText == null || javaText == null) - return; - - System.out.println("+-----------------------------------------+"); //$NON-NLS-1$ - System.out.println("accept possible match [jspDoc: " + origMatch.getResource().getFullPath().toOSString() + " " + origMatch.getOffset() + ":" + origMatch.getOffset() + origMatch.getLength() + "]?"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ - System.out.println("match info:"); //$NON-NLS-1$ - System.out.println("the java text is:" + javaText.substring(origMatch.getOffset(), origMatch.getOffset() + origMatch.getLength())); //$NON-NLS-1$ - System.out.println("java search match translates to jsp coords [start: " + jspStart + " end:" + jspEnd + "]"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - System.out.println(" the jsp text is:" + jspText.substring(jspStart, jspEnd)); //$NON-NLS-1$ - } -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPFindOccurrencesActionDelegate.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPFindOccurrencesActionDelegate.java deleted file mode 100644 index 2eaeec0af6..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPFindOccurrencesActionDelegate.java +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - * - *******************************************************************************/ - -package org.eclipse.jst.jsp.ui.internal.java.search; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.wst.html.ui.internal.search.HTMLFindOccurrencesProcessor; -import org.eclipse.wst.sse.ui.internal.search.FindOccurrencesActionDelegate; - -/** - * Sets up FindOccurrencesActionDelegate for jsp find occurrences processors - */ -public class JSPFindOccurrencesActionDelegate extends FindOccurrencesActionDelegate { - private List fProcessors; - - protected List getProcessors() { - if (fProcessors == null) { - fProcessors = new ArrayList(); - HTMLFindOccurrencesProcessor htmlProcessor = new HTMLFindOccurrencesProcessor(); - fProcessors.add(htmlProcessor); -// temporary, workaround to disable function, since using the function -// can easily cause deadlock to occur. -// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=103662 -// JSPFindOccurrencesProcessor jspProcessor = new JSPFindOccurrencesProcessor(); -// fProcessors.add(jspProcessor); - } - return fProcessors; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPFindOccurrencesProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPFindOccurrencesProcessor.java deleted file mode 100644 index a8742cb1fa..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPFindOccurrencesProcessor.java +++ /dev/null @@ -1,82 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - * - *******************************************************************************/ - -package org.eclipse.jst.jsp.ui.internal.java.search; - -import org.eclipse.core.resources.IFile; -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.ITextSelection; -import org.eclipse.jst.jsp.core.internal.java.IJSPTranslation; -import org.eclipse.jst.jsp.core.internal.java.JSPTranslation; -import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapter; -import org.eclipse.jst.jsp.core.internal.provisional.text.IJSPPartitionTypes; -import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts; -import org.eclipse.search.ui.ISearchQuery; -import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; -import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager; -import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument; -import org.eclipse.wst.sse.ui.internal.search.FindOccurrencesProcessor; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; -import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext; - -/** - * Configures a FindOccurrencesProcessor with JSP partitions and regions - */ -public class JSPFindOccurrencesProcessor extends FindOccurrencesProcessor { - - protected String[] getPartitionTypes() { - return new String[]{IJSPPartitionTypes.JSP_DEFAULT, IJSPPartitionTypes.JSP_CONTENT_JAVA}; - } - - protected String[] getRegionTypes() { - return new String[]{DOMRegionContext.BLOCK_TEXT, DOMJSPRegionContexts.JSP_CONTENT}; - } - - protected ISearchQuery getSearchQuery(IFile file, IStructuredDocument document, String regionText, String regionType, ITextSelection textSelection) { - return new JSPSearchQuery(file, getJavaElement(document, textSelection)); - } - - private IJavaElement getJavaElement(IDocument document, ITextSelection textSelection) { - IJavaElement[] elements = getJavaElementsForCurrentSelection(document, textSelection); - return elements.length > 0 ? elements[0] : null; - } - - /** - * uses JSPTranslation to get currently selected Java elements. - * - * @return currently selected IJavaElements - */ - private IJavaElement[] getJavaElementsForCurrentSelection(IDocument document, ITextSelection selection) { - IJavaElement[] elements = new IJavaElement[0]; - // get JSP translation object for this viewer's document - IStructuredModel model = StructuredModelManager.getModelManager().getExistingModelForRead(document); - try { - if (model != null && model instanceof IDOMModel) { - IDOMDocument xmlDoc = ((IDOMModel) model).getDocument(); - JSPTranslationAdapter adapter = (JSPTranslationAdapter) xmlDoc.getAdapterFor(IJSPTranslation.class); - if (adapter != null) { - JSPTranslation translation = adapter.getJSPTranslation(); - - // https://bugs.eclipse.org/bugs/show_bug.cgi?id=102211 - elements = translation.getElementsFromJspRange(selection.getOffset(), selection.getOffset() + selection.getLength()); - } - } - } - finally { - if (model != null) - model.releaseFromRead(); - } - return elements; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPOccurrencesSearchResult.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPOccurrencesSearchResult.java deleted file mode 100644 index f1d4f8e4db..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPOccurrencesSearchResult.java +++ /dev/null @@ -1,29 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.java.search; - -import org.eclipse.search.ui.ISearchQuery; -import org.eclipse.search.ui.text.Match; -import org.eclipse.wst.sse.ui.internal.search.OccurrencesSearchResult; - -/** - * @author pavery - */ -public class JSPOccurrencesSearchResult extends OccurrencesSearchResult { - - public JSPOccurrencesSearchResult(ISearchQuery query) { - super(query); - } - - public Match[] getMatches() { - return ((JSPSearchQuery)getQuery()).getMatches(); - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPSearchQuery.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPSearchQuery.java deleted file mode 100644 index 5f96141abd..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPSearchQuery.java +++ /dev/null @@ -1,117 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.java.search; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.search.SearchDocument; -import org.eclipse.jst.jsp.core.internal.java.search.JSPSearchScope; -import org.eclipse.jst.jsp.core.internal.java.search.JSPSearchSupport; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.search.ui.ISearchResult; -import org.eclipse.wst.sse.ui.internal.search.BasicSearchQuery; - -/** - * Implementation of <code>ISearchQuery</code> for <code>IJavaElement</code>s in JSP files. - * - * @author pavery - */ -public class JSPSearchQuery extends BasicSearchQuery { - - /** the IJavaElement we are searching for in the file **/ - private IJavaElement fElement = null; - - public JSPSearchQuery(IFile file, IJavaElement element) { - super(file); - this.fElement = element; - } - - public IJavaElement getJavaElement() { - return this.fElement; - } - - // for access by inner class - public JSPSearchQuery getInstance() { - return this; - } - - protected IStatus doQuery() { - - clearMatches(); - - IStatus status = Status.OK_STATUS; - try { - JSPSearchSupport support = JSPSearchSupport.getInstance(); - // index the file - SearchDocument delegate = support.addJspFile(getFile()); - - String scopePath = delegate.getPath(); - JSPSearchScope singleFileScope = new JSPSearchScope(new String[]{getFile().getFullPath().toString(), scopePath}); - - // perform a searchs - // by passing in this jsp search query, requstor can add matches - support.searchRunnable(getJavaElement(), singleFileScope, new JSPSingleFileSearchRequestor(getInstance())); - } - catch (Exception e){ - status = new Status(IStatus.ERROR, "org.eclipse.wst.sse.ui", IStatus.OK, "", null); //$NON-NLS-1$ //$NON-NLS-2$ - } - return status; - } - - /** - * @see org.eclipse.search.ui.ISearchQuery#getLabel() - */ - public String getLabel() { - String[] args = {getSearchText(), getOccurrencesCountText(), getFilename()}; - return NLS.bind(JSPUIMessages.OccurrencesSearchQuery_0, args); - } - - private String getFilename() { - String filename = JSPUIMessages.OccurrencesSearchQuery_2; - if(getFile() != null) - filename = getFile().getName(); - return filename; - } - - private String getOccurrencesCountText() { - String count = ""; //$NON-NLS-1$ - // pa_TODO make dynamic - return count; - } - - protected String getSearchText() { - return fElement.getElementName(); - } - - public boolean canRerun() { - - return false; - } - - /** - * @see org.eclipse.search.ui.ISearchQuery#canRunInBackground() - */ - public boolean canRunInBackground() { - return true; - } - - /** - * @see org.eclipse.search.ui.ISearchQuery#getSearchResult() - */ - public ISearchResult getSearchResult() { - - return new JSPOccurrencesSearchResult(this); - } - -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPSearchRequestor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPSearchRequestor.java deleted file mode 100644 index 9dc8275308..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPSearchRequestor.java +++ /dev/null @@ -1,81 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.java.search; - -import java.util.HashMap; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IMarker; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.jdt.ui.search.ISearchRequestor; -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jst.jsp.ui.internal.Logger; -import org.eclipse.search.ui.NewSearchUI; -import org.eclipse.search.ui.text.Match; - - -/** - * @author pavery - */ -public class JSPSearchRequestor extends BasicJSPSearchRequestor { - - private ISearchRequestor fJavaRequestor = null; - - public JSPSearchRequestor() { - super(); - } - - public JSPSearchRequestor(ISearchRequestor javaRequestor) { - // need to report matches to javaRequestor - this.fJavaRequestor = javaRequestor; - } - - - protected void addSearchMatch(IDocument jspDocument, IFile jspFile, int jspStart, int jspEnd, String jspText) { - - if(!jspFile.exists()) - return; - - int lineNumber = -1; - try { - lineNumber = jspDocument.getLineOfOffset(jspStart); - } catch (BadLocationException e) { - Logger.logException(e); - } - createSearchMarker(jspFile, jspStart, jspEnd, lineNumber); - - if(this.fJavaRequestor != null) { - Match match = new Match(jspFile, jspStart, jspEnd - jspStart); - this.fJavaRequestor.reportMatch(match); - } - } - - /** - * @param jspFile - * @param jspStart - * @param jspEnd - */ - private void createSearchMarker(IFile jspFile, int jspStart, int jspEnd, int lineNumber) { - - try { - IMarker marker = jspFile.createMarker(NewSearchUI.SEARCH_MARKER); - HashMap attributes = new HashMap(4); - attributes.put(IMarker.CHAR_START, new Integer(jspStart)); - attributes.put(IMarker.CHAR_END, new Integer(jspEnd)); - attributes.put(IMarker.LINE_NUMBER, new Integer(lineNumber)); - marker.setAttributes(attributes); - - } catch (CoreException e) { - Logger.logException(e); - } - } -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPSingleFileSearchRequestor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPSingleFileSearchRequestor.java deleted file mode 100644 index 4e35d83bed..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPSingleFileSearchRequestor.java +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.java.search; - -import org.eclipse.core.resources.IFile; -import org.eclipse.jface.text.IDocument; - - -/** - * <p> - * Special requestor that adds search results for single file search - * (Used for JSPFindOccurrences action). - * It groups each match as it's own result. - * </p> - * - * @author pavery - */ -public class JSPSingleFileSearchRequestor extends BasicJSPSearchRequestor { - - private JSPSearchQuery fQuery = null; - - public JSPSingleFileSearchRequestor(JSPSearchQuery query) { - this.fQuery = query; - } - - protected void addSearchMatch(IDocument jspDocument, IFile jspFile, int jspStart, int jspEnd, String jspText) { - // add match to JSP query... - this.fQuery.addMatch(jspDocument, jspStart, jspEnd); - } -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/ui/JSPMatchPresentation.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/ui/JSPMatchPresentation.java deleted file mode 100644 index 74b1a26c91..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/ui/JSPMatchPresentation.java +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.java.search.ui; - -import org.eclipse.jdt.ui.search.IMatchPresentation; -import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.search.ui.text.Match; -import org.eclipse.ui.PartInitException; -import org.eclipse.wst.sse.ui.internal.search.BasicSearchLabelProvider; - -/** - * @author pavery - */ -public class JSPMatchPresentation implements IMatchPresentation { - - /** - * @see org.eclipse.jdt.ui.search.IMatchPresentation#createLabelProvider() - */ - public ILabelProvider createLabelProvider() { - return new BasicSearchLabelProvider(); - } - - /* (non-Javadoc) - * @see org.eclipse.jdt.ui.search.IMatchPresentation#showMatch(org.eclipse.search.ui.text.Match, int, int, boolean) - */ - public void showMatch(Match match, int currentOffset, int currentLength, boolean activate) throws PartInitException { - // pa_TODO implement -// Object obj = match.getElement(); - // show match in JSP editor - if(activate) { - // use show in target? - } - else { - // just select - } - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/ui/JSPQueryParticipant.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/ui/JSPQueryParticipant.java deleted file mode 100644 index badbf187b6..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/ui/JSPQueryParticipant.java +++ /dev/null @@ -1,98 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.java.search.ui; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.Platform; -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.search.SearchPattern; -import org.eclipse.jdt.core.search.SearchRequestor; -import org.eclipse.jdt.ui.search.ElementQuerySpecification; -import org.eclipse.jdt.ui.search.IMatchPresentation; -import org.eclipse.jdt.ui.search.IQueryParticipant; -import org.eclipse.jdt.ui.search.ISearchRequestor; -import org.eclipse.jdt.ui.search.PatternQuerySpecification; -import org.eclipse.jdt.ui.search.QuerySpecification; -import org.eclipse.jst.jsp.core.internal.java.search.JSPSearchScope; -import org.eclipse.jst.jsp.core.internal.java.search.JSPSearchSupport; -import org.eclipse.jst.jsp.ui.internal.java.search.JSPSearchRequestor; - -/** - * @author pavery - */ -public class JSPQueryParticipant implements IQueryParticipant { - - // for debugging - private static final boolean DEBUG; - static { - String value= Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jspsearch"); //$NON-NLS-1$ - DEBUG= value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$ - } - /** - * @see org.eclipse.jdt.ui.search.IQueryParticipant#search(org.eclipse.jdt.ui.search.ISearchRequestor, org.eclipse.jdt.ui.search.QuerySpecification, org.eclipse.core.runtime.IProgressMonitor) - */ - public void search(ISearchRequestor requestor, QuerySpecification querySpecification, IProgressMonitor monitor) throws CoreException { - - //indexIfNeeded(); - - // do search based on the particular Java query - if(querySpecification instanceof ElementQuerySpecification) { - // element search (eg. from global find references in Java file) - ElementQuerySpecification elementQuery = (ElementQuerySpecification)querySpecification; - IJavaElement element = elementQuery.getElement(); - - if(DEBUG) - System.out.println("JSP Query Participant searching on ELEMENT: " + element); //$NON-NLS-1$ - - SearchRequestor jspRequestor = new JSPSearchRequestor(requestor); - - // pa_TODO need to adapt JavaSearchScope to a JSPSearchScope - JSPSearchSupport.getInstance().search(element, new JSPSearchScope(), jspRequestor); - - } - else if(querySpecification instanceof PatternQuerySpecification) { - - // pattern search (eg. from Java search page) - PatternQuerySpecification patternQuery = (PatternQuerySpecification)querySpecification; - String pattern = patternQuery.getPattern(); - - if(DEBUG) - System.out.println("JSP Query Participant searching on PATTERN: " + pattern); //$NON-NLS-1$ - - SearchRequestor jspRequestor = new JSPSearchRequestor(requestor); - - JSPSearchSupport.getInstance().search(pattern, - new JSPSearchScope(), - patternQuery.getSearchFor(), - patternQuery.getLimitTo(), - SearchPattern.R_PATTERN_MATCH, - false, - jspRequestor); - } - } - - /** - * @see org.eclipse.jdt.ui.search.IQueryParticipant#estimateTicks(org.eclipse.jdt.ui.search.QuerySpecification) - */ - public int estimateTicks(QuerySpecification data) { - // pa_TODO use project file counter from JSPSearchSupport... - return 0; - } - - /** - * @see org.eclipse.jdt.ui.search.IQueryParticipant#getUIParticipant() - */ - public IMatchPresentation getUIParticipant() { - return new JSPMatchPresentation(); - } - -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/JSPUIPreferenceInitializer.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/JSPUIPreferenceInitializer.java deleted file mode 100644 index 7b2649ae49..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/JSPUIPreferenceInitializer.java +++ /dev/null @@ -1,70 +0,0 @@ -package org.eclipse.jst.jsp.ui.internal.preferences; - -import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.text.templates.Template; -import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin; -import org.eclipse.jst.jsp.ui.internal.style.IStyleConstantsJSP; -import org.eclipse.wst.html.ui.internal.style.IStyleConstantsHTML; -import org.eclipse.wst.sse.ui.internal.preferences.ui.ColorHelper; -import org.eclipse.wst.xml.ui.internal.style.IStyleConstantsXML; - -/** - * Sets default values for JSP UI preferences - */ -public class JSPUIPreferenceInitializer extends AbstractPreferenceInitializer { - - /* - * (non-Javadoc) - * - * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences() - */ - public void initializeDefaultPreferences() { - IPreferenceStore store = JSPUIPlugin.getDefault().getPreferenceStore(); - - // setting the same as HTML - store.setDefault(JSPUIPreferenceNames.AUTO_PROPOSE, true); - store.setDefault(JSPUIPreferenceNames.AUTO_PROPOSE_CODE, "<");//$NON-NLS-1$ - - // JSP Style Preferences - String NOBACKGROUNDBOLD = " | null | false"; //$NON-NLS-1$ - String styleValue = ColorHelper.getColorString(127, 0, 127) + NOBACKGROUNDBOLD; - store.setDefault(IStyleConstantsXML.TAG_ATTRIBUTE_NAME, styleValue); - - styleValue = ColorHelper.getColorString(42, 0, 255) + NOBACKGROUNDBOLD; - store.setDefault(IStyleConstantsXML.TAG_ATTRIBUTE_VALUE, styleValue); - - styleValue = "null" + NOBACKGROUNDBOLD; //$NON-NLS-1$ - - // specified value is black; leaving as widget default - store.setDefault(IStyleConstantsXML.TAG_ATTRIBUTE_EQUALS, styleValue); - - styleValue = ColorHelper.getColorString(63, 95, 191) + NOBACKGROUNDBOLD; - store.setDefault(IStyleConstantsXML.COMMENT_BORDER, styleValue); - store.setDefault(IStyleConstantsXML.COMMENT_TEXT, styleValue); - - styleValue = ColorHelper.getColorString(0, 128, 128) + NOBACKGROUNDBOLD; - store.setDefault(IStyleConstantsXML.TAG_BORDER, styleValue); - - styleValue = ColorHelper.getColorString(63, 127, 127) + NOBACKGROUNDBOLD; - store.setDefault(IStyleConstantsXML.TAG_NAME, styleValue); - - styleValue = ColorHelper.getColorString(191, 95, 63) + NOBACKGROUNDBOLD; - store.setDefault(IStyleConstantsHTML.SCRIPT_AREA_BORDER, styleValue); - - styleValue = "null" + NOBACKGROUNDBOLD; //$NON-NLS-1$ - store.setDefault(IStyleConstantsJSP.JSP_CONTENT, styleValue); - - // set default new jsp file template to use in new file wizard - /* - * Need to find template name that goes with default template id (name - * may change for differnt language) - */ - String templateName = ""; //$NON-NLS-1$ - Template template = JSPUIPlugin.getDefault().getTemplateStore().findTemplateById("org.eclipse.jst.jsp.ui.templates.jsphtml"); //$NON-NLS-1$ - if (template != null) - templateName = template.getName(); - store.setDefault(JSPUIPreferenceNames.NEW_FILE_TEMPLATE_NAME, templateName); - } - -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/JSPUIPreferenceNames.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/JSPUIPreferenceNames.java deleted file mode 100644 index c185063249..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/JSPUIPreferenceNames.java +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - * - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.preferences; - -/** - * Preference keys for JSP UI - */ -public class JSPUIPreferenceNames { - /** - * A named preference that controls if code assist gets auto activated. - * <p> - * Value is of type <code>Boolean</code>. - * </p> - */ - public static final String AUTO_PROPOSE = getAutoProposeKey(); - - private static String getAutoProposeKey() { - return "autoPropose";//$NON-NLS-1$ - } - - /** - * A named preference that holds the characters that auto activate code - * assist. - * <p> - * Value is of type <code>String</code>. All characters that trigger - * auto code assist. - * </p> - */ - public static final String AUTO_PROPOSE_CODE = getAutoProposeCodeKey(); - - private static String getAutoProposeCodeKey() { - return "autoProposeCode";//$NON-NLS-1$ - } - - /** - * The key to store customized templates. - * <p> - * Value is of type <code>String</code>. - * </p> - */ - public static final String TEMPLATES_KEY = getTemplatesKey(); - - private static String getTemplatesKey() { - return "org.eclipse.wst.sse.ui.custom_templates"; //$NON-NLS-1$ - } - - /** - * The key to store the last template name used in new JSP file wizard. - * Template name is stored instead of template id because user-created - * templates do not have template ids. - * <p> - * Value is of type <code>String</code>. - * </p> - */ - public static final String NEW_FILE_TEMPLATE_NAME = "newFileTemplateName"; //$NON-NLS-1$ -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPColorPage.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPColorPage.java deleted file mode 100644 index 1a9c56e334..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPColorPage.java +++ /dev/null @@ -1,167 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.preferences.ui; - -import java.util.ArrayList; -import java.util.Dictionary; -import java.util.Hashtable; -import java.util.Iterator; - -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jst.jsp.core.internal.provisional.contenttype.ContentTypeIdForJSP; -import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; -import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin; -import org.eclipse.jst.jsp.ui.internal.editor.IHelpContextIds; -import org.eclipse.jst.jsp.ui.internal.style.IStyleConstantsJSP; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.ui.PlatformUI; -import org.eclipse.wst.html.ui.internal.style.IStyleConstantsHTML; -import org.eclipse.wst.sse.core.internal.provisional.IModelManager; -import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager; -import org.eclipse.wst.sse.ui.internal.preferences.OverlayPreferenceStore; -import org.eclipse.wst.sse.ui.internal.preferences.OverlayPreferenceStore.OverlayKey; -import org.eclipse.wst.sse.ui.internal.preferences.ui.StyledTextColorPicker; -import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext; -import org.eclipse.wst.xml.ui.internal.preferences.XMLColorPage; -import org.eclipse.wst.xml.ui.internal.style.IStyleConstantsXML; - -public class JSPColorPage extends XMLColorPage { - - /** - * Overridden to set up StyledTextColorPicker differently - */ - protected void createContentsForPicker(Composite parent) { - // create the color picker - fPicker = new JSPStyledTextColorPicker(parent, SWT.NULL); - GridData data = new GridData(GridData.FILL_BOTH); - fPicker.setLayoutData(data); - - fPicker.setPreferenceStore(fOverlayStore); - setupPicker(fPicker); - - fPicker.setText(getSampleText()); - } - - /** - * Set up all the style preference keys in the overlay store - */ - protected OverlayKey[] createOverlayStoreKeys() { - ArrayList overlayKeys = new ArrayList(); - - ArrayList styleList = new ArrayList(); - initStyleList(styleList); - Iterator i = styleList.iterator(); - while (i.hasNext()) { - overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, (String)i.next())); - } - - OverlayPreferenceStore.OverlayKey[] keys = new OverlayPreferenceStore.OverlayKey[overlayKeys.size()]; - overlayKeys.toArray(keys); - return keys; - } - - public String getSampleText() { - return JSPUIMessages.Sample_JSP_doc; //$NON-NLS-1$ = "<%@ page \n\tlanguage=\"java\" \n\tcontentType=\"text/html; charset=ISO-8859-1\"\n%>\n<jsp:include flush=\"true\" page=\"titleBar.jsp\"/>\n\n<%-- Use below tags ONLY for JSP 1.1 --%>\n<%\n\tSystem.out.println(\"Welcome!\");\n%>\n<%-- Use below tags ONLY for JSP 1.2 --%>\n<jsp:scriptlet>\n\tSystem.out.println(\"Welcome!\");\n</jsp:scriptlet>" - } - - protected void initContextStyleMap(Dictionary contextStyleMap) { - - initCommonContextStyleMap(contextStyleMap); - contextStyleMap.remove(DOMRegionContext.XML_CONTENT); // leave content between tags alone - contextStyleMap.remove(DOMRegionContext.XML_DECLARATION_OPEN); // xml/html specific - contextStyleMap.remove(DOMRegionContext.XML_DECLARATION_CLOSE); // xml/html specific - contextStyleMap.remove(DOMRegionContext.XML_ELEMENT_DECLARATION); // xml/html specific - contextStyleMap.remove(DOMRegionContext.XML_ELEMENT_DECL_CLOSE); // xml/html specific - - // contextStyleMap.put(XMLJSPRegionContexts.JSP_CONTENT, HTMLColorManager.SCRIPT_AREA); - // contextStyleMap.put(XMLJSPRegionContexts.BLOCK_TEXT, HTMLColorManager.SCRIPT_AREA); - contextStyleMap.put(DOMJSPRegionContexts.JSP_DECLARATION_OPEN, IStyleConstantsHTML.SCRIPT_AREA_BORDER); - contextStyleMap.put(DOMJSPRegionContexts.JSP_SCRIPTLET_OPEN, IStyleConstantsHTML.SCRIPT_AREA_BORDER); - contextStyleMap.put(DOMJSPRegionContexts.JSP_EXPRESSION_OPEN, IStyleConstantsHTML.SCRIPT_AREA_BORDER); - contextStyleMap.put(DOMJSPRegionContexts.JSP_DIRECTIVE_OPEN, IStyleConstantsHTML.SCRIPT_AREA_BORDER); - contextStyleMap.put(DOMJSPRegionContexts.JSP_DIRECTIVE_CLOSE, IStyleConstantsHTML.SCRIPT_AREA_BORDER); - contextStyleMap.put(DOMJSPRegionContexts.JSP_CLOSE, IStyleConstantsHTML.SCRIPT_AREA_BORDER); - - contextStyleMap.put(DOMJSPRegionContexts.JSP_CONTENT, IStyleConstantsJSP.JSP_CONTENT); - - contextStyleMap.put(DOMJSPRegionContexts.JSP_DIRECTIVE_NAME, IStyleConstantsXML.TAG_NAME); - contextStyleMap.put(DOMJSPRegionContexts.JSP_ROOT_TAG_NAME, IStyleConstantsXML.TAG_NAME); - contextStyleMap.put(DOMJSPRegionContexts.JSP_COMMENT_OPEN, IStyleConstantsXML.COMMENT_BORDER); - contextStyleMap.put(DOMJSPRegionContexts.JSP_COMMENT_TEXT, IStyleConstantsXML.COMMENT_TEXT); - contextStyleMap.put(DOMJSPRegionContexts.JSP_COMMENT_CLOSE, IStyleConstantsXML.COMMENT_BORDER); - - contextStyleMap.put(DOMJSPRegionContexts.XML_TAG_ATTRIBUTE_VALUE_DQUOTE, IStyleConstantsXML.TAG_ATTRIBUTE_VALUE); - contextStyleMap.put(DOMJSPRegionContexts.XML_TAG_ATTRIBUTE_VALUE_SQUOTE, IStyleConstantsXML.TAG_ATTRIBUTE_VALUE); - } - - protected void initDescriptions(Dictionary descriptions) { - initCommonDescriptions(descriptions); - descriptions.remove(IStyleConstantsXML.XML_CONTENT); // leave content between tags alone - descriptions.remove(IStyleConstantsXML.DECL_BORDER); // xml/html specific - descriptions.put(IStyleConstantsHTML.SCRIPT_AREA_BORDER, JSPUIMessages.JSP_Delimiters_UI_); //$NON-NLS-1$ = "JSP Delimiters" - descriptions.put(IStyleConstantsJSP.JSP_CONTENT, JSPUIMessages.JSPColorPage_jsp_content); - } - - protected void initStyleList(ArrayList list) { - initCommonStyleList(list); - list.remove(IStyleConstantsXML.XML_CONTENT); // leave content between tags alone - list.remove(IStyleConstantsXML.DECL_BORDER); // xml/html specific - list.add(IStyleConstantsHTML.SCRIPT_AREA_BORDER); - list.add(IStyleConstantsJSP.JSP_CONTENT); - } - - protected void setupPicker(StyledTextColorPicker picker) { - IModelManager mmanager = StructuredModelManager.getModelManager(); - picker.setParser(mmanager.createStructuredDocumentFor(ContentTypeIdForJSP.ContentTypeID_JSP).getParser()); - - // create descriptions for highlighting types - Dictionary descriptions = new Hashtable(); - initDescriptions(descriptions); - - // map region types to highlighting types - Dictionary contextStyleMap = new Hashtable(); - initContextStyleMap(contextStyleMap); - - ArrayList styleList = new ArrayList(); - initStyleList(styleList); - - picker.setContextStyleMap(contextStyleMap); - picker.setDescriptions(descriptions); - picker.setStyleList(styleList); - - } - /* (non-Javadoc) - * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite) - */ - protected Control createContents(Composite parent) { - - Control c = super.createContents(parent); - PlatformUI.getWorkbench().getHelpSystem().setHelp(c, IHelpContextIds.JSP_PREFWEBX_STYLES_HELPID); - return c; - } - - /* (non-Javadoc) - * @see org.eclipse.jface.preference.PreferencePage#doGetPreferenceStore() - */ - protected IPreferenceStore doGetPreferenceStore() { - return JSPUIPlugin.getDefault().getPreferenceStore(); - } - /* (non-Javadoc) - * @see org.eclipse.wst.sse.ui.preferences.ui.AbstractColorPage#savePreferences() - */ - protected void savePreferences() { - JSPUIPlugin.getDefault().savePluginPreferences(); - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPFilesPreferencePage.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPFilesPreferencePage.java deleted file mode 100644 index 991a9429d7..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPFilesPreferencePage.java +++ /dev/null @@ -1,113 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.preferences.ui; - -import org.eclipse.core.runtime.Preferences; -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jst.jsp.core.internal.JSPCorePlugin; -import org.eclipse.jst.jsp.core.internal.preferences.JSPCorePreferenceNames; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; -import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin; -import org.eclipse.jst.jsp.ui.internal.editor.IHelpContextIds; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Group; -import org.eclipse.ui.PlatformUI; -import org.eclipse.wst.html.ui.internal.preferences.ui.HTMLFilesPreferencePage; - -public class JSPFilesPreferencePage extends HTMLFilesPreferencePage { - private Button fValidateFragments; - - protected Preferences getModelPreferences() { - return JSPCorePlugin.getDefault().getPluginPreferences(); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.preference.PreferencePage#doGetPreferenceStore() - */ - protected IPreferenceStore doGetPreferenceStore() { - return JSPUIPlugin.getDefault().getPreferenceStore(); - } - - protected void doSavePreferenceStore() { - JSPCorePlugin.getDefault().savePluginPreferences(); // model - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite) - */ - protected Control createContents(Composite parent) { - Control c = super.createContents(parent); - - Group g = createGroup((Composite)c, 1); - g.setText(JSPUIMessages.JSPFilesPreferencePage_0); - fValidateFragments = createCheckBox(g, JSPUIMessages.JSPFilesPreferencePage_1); - boolean validateFragments = getModelPreferences().getBoolean(JSPCorePreferenceNames.VALIDATE_FRAGMENTS); - fValidateFragments.setSelection(validateFragments); - - PlatformUI.getWorkbench().getHelpSystem().setHelp(c, IHelpContextIds.JSP_PREFWEBX_FILES_HELPID); - return c; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.wst.html.ui.preferences.ui.HTMLFilesPreferencePage#createContentsForLoadingGroup(org.eclipse.swt.widgets.Composite) - */ - protected void createContentsForLoadingGroup(Composite parent) { - // no loading preferences - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.wst.html.ui.preferences.ui.HTMLFilesPreferencePage#initializeValuesForLoadingGroup() - */ - protected void initializeValuesForLoadingGroup() { - // no loading preferences - } - - protected void performDefaults() { - super.performDefaults(); - - boolean validateFragments = getModelPreferences().getDefaultBoolean(JSPCorePreferenceNames.VALIDATE_FRAGMENTS); - fValidateFragments.setSelection(validateFragments); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.wst.html.ui.preferences.ui.HTMLFilesPreferencePage#performDefaultsForLoadingGroup() - */ - protected void performDefaultsForLoadingGroup() { - // no loading preferences - } - - protected void storeValues() { - boolean validateFragments = fValidateFragments.getSelection(); - getModelPreferences().setValue(JSPCorePreferenceNames.VALIDATE_FRAGMENTS, validateFragments); - super.storeValues(); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.wst.html.ui.preferences.ui.HTMLFilesPreferencePage#storeValuesForLoadingGroup() - */ - protected void storeValuesForLoadingGroup() { - // no loading preferences - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPSourcePreferencePage.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPSourcePreferencePage.java deleted file mode 100644 index 5381ecbcc9..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPSourcePreferencePage.java +++ /dev/null @@ -1,100 +0,0 @@ -package org.eclipse.jst.jsp.ui.internal.preferences.ui; - -import org.eclipse.jface.preference.PreferencePage; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.ScrolledComposite; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Text; -import org.eclipse.ui.IWorkbench; -import org.eclipse.ui.IWorkbenchPreferencePage; -import org.eclipse.ui.dialogs.PreferenceLinkArea; -import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer; - -public class JSPSourcePreferencePage extends PreferencePage implements IWorkbenchPreferencePage { - - public void init(IWorkbench workbench) { - // do nothing - } - - protected Control createContents(Composite parent) { - Composite composite = createScrolledComposite(parent); - - Text label = new Text(composite, SWT.READ_ONLY); - label.setText(JSPUIMessages.JSPSourcePreferencePage_0); - GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); - data.horizontalIndent = 0; - label.setLayoutData(data); - - PreferenceLinkArea fileEditorsArea = new PreferenceLinkArea(composite, SWT.NONE, "org.eclipse.wst.html.ui.preferences.source", JSPUIMessages.JSPSourcePreferencePage_1,//$NON-NLS-1$ - (IWorkbenchPreferenceContainer) getContainer(), null); - - data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); - data.horizontalIndent = 5; - fileEditorsArea.getControl().setLayoutData(data); - - PreferenceLinkArea contentTypeArea = new PreferenceLinkArea(composite, SWT.NONE, "org.eclipse.wst.sse.ui.preferences.xml.source", JSPUIMessages.JSPSourcePreferencePage_2,//$NON-NLS-1$ - (IWorkbenchPreferenceContainer) getContainer(), null); - - data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); - data.horizontalIndent = 5; - contentTypeArea.getControl().setLayoutData(data); - - return composite; - } - - private Composite createScrolledComposite(Composite parent) { - // create scrollbars for this parent when needed - final ScrolledComposite sc1 = new ScrolledComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL); - sc1.setLayoutData(new GridData(GridData.FILL_BOTH)); - Composite composite = createComposite(sc1); - sc1.setContent(composite); - - // not calling setSize for composite will result in a blank composite, - // so calling it here initially - // setSize actually needs to be called after all controls are created, - // so scrolledComposite - // has correct minSize - setSize(composite); - return composite; - } - - private void setSize(Composite composite) { - if (composite != null) { - Point minSize = composite.computeSize(SWT.DEFAULT, SWT.DEFAULT); - composite.setSize(minSize); - // set scrollbar composite's min size so page is expandable but - // has scrollbars when needed - if (composite.getParent() instanceof ScrolledComposite) { - ScrolledComposite sc1 = (ScrolledComposite) composite.getParent(); - sc1.setMinSize(minSize); - sc1.setExpandHorizontal(true); - sc1.setExpandVertical(true); - } - } - } - - private Composite createComposite(Composite parent) { - Composite composite = new Composite(parent, SWT.NULL); - - // GridLayout - GridLayout layout = new GridLayout(); - layout.marginWidth = 0; - layout.marginHeight = 0; - composite.setLayout(layout); - - // GridData - GridData data = new GridData(GridData.FILL); - data.horizontalIndent = 0; - data.verticalAlignment = GridData.FILL; - data.horizontalAlignment = GridData.FILL; - composite.setLayoutData(data); - - composite.setFont(parent.getFont()); - return composite; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPStyledTextColorPicker.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPStyledTextColorPicker.java deleted file mode 100644 index 19bd809d7c..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPStyledTextColorPicker.java +++ /dev/null @@ -1,42 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.preferences.ui; - -import org.eclipse.jst.jsp.ui.internal.style.IStyleConstantsJSP; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.wst.sse.ui.internal.preferences.ui.StyledTextColorPicker; - -/** -* Overrides StyledTextColorPicker for special enablement behavior -* for JSPContent (only background settable) -**/ -public class JSPStyledTextColorPicker extends StyledTextColorPicker { - - public JSPStyledTextColorPicker(Composite parent, int style) { - super(parent, style); - } - - /** - * Activate controls based on the given local color type. - * Overridden to disable foreground color, bold. - */ - protected void activate(String namedStyle) { - super.activate(namedStyle); - - if(namedStyle == IStyleConstantsJSP.JSP_CONTENT) { - fForeground.setEnabled(false); - fBold.setEnabled(false); - if (showItalic) - fItalic.setEnabled(false); - fForegroundLabel.setEnabled(false); - } - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPTemplatePreferencePage.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPTemplatePreferencePage.java deleted file mode 100644 index e4151c3611..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPTemplatePreferencePage.java +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.preferences.ui; - -import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin; -import org.eclipse.jst.jsp.ui.internal.editor.IHelpContextIds; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.texteditor.templates.TemplatePreferencePage; - - -/** - * Preference page for JSP templates - */ -public class JSPTemplatePreferencePage extends TemplatePreferencePage { - - public JSPTemplatePreferencePage() { - JSPUIPlugin jspEditorPlugin = JSPUIPlugin.getDefault(); - - setPreferenceStore(jspEditorPlugin.getPreferenceStore()); - setTemplateStore(jspEditorPlugin.getTemplateStore()); - setContextTypeRegistry(jspEditorPlugin.getTemplateContextRegistry()); - } - - /* (non-Javadoc) - * @see org.eclipse.jface.preference.IPreferencePage#performOk() - */ - public boolean performOk() { - boolean ok = super.performOk(); - JSPUIPlugin.getDefault().savePluginPreferences(); - return ok; - } - - /* (non-Javadoc) - * @see org.eclipse.ui.texteditor.templates.TemplatePreferencePage#isShowFormatterSetting() - */ - protected boolean isShowFormatterSetting() { - // template formatting has not been implemented - return false; - } - /* (non-Javadoc) - * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite) - */ - protected Control createContents(Composite ancestor) { - Control c = super.createContents(ancestor); - PlatformUI.getWorkbench().getHelpSystem().setHelp(c, IHelpContextIds.JSP_PREFWEBX_TEMPLATES_HELPID); - return c; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/projection/ProjectionModelNodeAdapterFactoryHTML.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/projection/ProjectionModelNodeAdapterFactoryHTML.java deleted file mode 100644 index f6d639da9f..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/projection/ProjectionModelNodeAdapterFactoryHTML.java +++ /dev/null @@ -1,105 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - * - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.projection; - -import org.eclipse.jface.text.source.projection.ProjectionViewer; -import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace; -import org.eclipse.wst.sse.core.internal.provisional.AbstractAdapterFactory; -import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter; -import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier; -import org.w3c.dom.Node; - -public class ProjectionModelNodeAdapterFactoryHTML extends AbstractAdapterFactory { - // copies of this class located in: - // org.eclipse.wst.html.ui.internal.projection - // org.eclipse.jst.jsp.ui.internal.projection - - private ProjectionViewer fProjectionViewer; - - public ProjectionModelNodeAdapterFactoryHTML(Object adapterKey, boolean registerAdapters) { - super(adapterKey, registerAdapters); - } - - public ProjectionModelNodeAdapterFactoryHTML(Object adapterKey) { - super(adapterKey); - } - - public ProjectionModelNodeAdapterFactoryHTML() { - this(ProjectionModelNodeAdapterHTML.class); - } - - /** - * Actually creates an adapter for the parent of target if target is the - * "adapt-able" node - */ - protected INodeAdapter createAdapter(INodeNotifier target) { - if ((fProjectionViewer != null) && (target instanceof Node) && ((Node) target).getNodeType() == Node.ELEMENT_NODE) { - Node node = (Node) target; - if (isNodeProjectable(node)) { - - // actually work with the parent node to listen for add, - // delete events - Node parent = node.getParentNode(); - if (parent instanceof INodeNotifier) { - INodeNotifier parentNotifier = (INodeNotifier) parent; - ProjectionModelNodeAdapterHTML parentAdapter = (ProjectionModelNodeAdapterHTML) parentNotifier.getExistingAdapter(ProjectionModelNodeAdapterHTML.class); - if (parentAdapter == null) { - // create a new adapter for parent - parentAdapter = new ProjectionModelNodeAdapterHTML(this); - parentNotifier.addAdapter(parentAdapter); - } - // call update on parent because a new node has just been - // added - parentAdapter.updateAdapter(parent); - } - } - } - - return null; - } - - ProjectionViewer getProjectionViewer() { - return fProjectionViewer; - } - - /** - * Returns true if node is a node type able to fold - * - * @param node - * @return boolean true if node is projectable, false otherwise - */ - boolean isNodeProjectable(Node node) { - if (node.getNodeType() == Node.ELEMENT_NODE) { - String tagName = node.getNodeName(); - // node is only projectable if it is head, body, script, style, - // table tags - if (HTML40Namespace.ElementName.HEAD.equalsIgnoreCase(tagName) || HTML40Namespace.ElementName.BODY.equalsIgnoreCase(tagName) || HTML40Namespace.ElementName.SCRIPT.equalsIgnoreCase(tagName) || HTML40Namespace.ElementName.STYLE.equalsIgnoreCase(tagName) || HTML40Namespace.ElementName.TABLE.equalsIgnoreCase((tagName))) - return true; - } - return false; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.wst.sse.core.AbstractAdapterFactory#release() - */ - public void release() { - fProjectionViewer = null; - - super.release(); - } - - void setProjectionViewer(ProjectionViewer viewer) { - fProjectionViewer = viewer; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/projection/ProjectionModelNodeAdapterFactoryJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/projection/ProjectionModelNodeAdapterFactoryJSP.java deleted file mode 100644 index e7b217065a..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/projection/ProjectionModelNodeAdapterFactoryJSP.java +++ /dev/null @@ -1,77 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - * - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.projection; - -import org.eclipse.jst.jsp.core.internal.provisional.JSP11Namespace; -import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter; -import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier; -import org.w3c.dom.Node; - -public class ProjectionModelNodeAdapterFactoryJSP extends ProjectionModelNodeAdapterFactoryHTML { - public ProjectionModelNodeAdapterFactoryJSP() { - this(ProjectionModelNodeAdapterJSP.class); - } - - public ProjectionModelNodeAdapterFactoryJSP(Object adapterKey, boolean registerAdapters) { - super(adapterKey, registerAdapters); - } - - public ProjectionModelNodeAdapterFactoryJSP(Object adapterKey) { - super(adapterKey); - } - - /** - * Actually creates an adapter for the parent of target if target is the - * "adapt-able" node - */ - protected INodeAdapter createAdapter(INodeNotifier target) { - if ((getProjectionViewer() != null) && (target instanceof Node) && ((Node) target).getNodeType() == Node.ELEMENT_NODE) { - Node node = (Node) target; - if (isNodeProjectable(node)) { - - // actually work with the parent node to listen for add, - // delete events - Node parent = node.getParentNode(); - if (parent instanceof INodeNotifier) { - INodeNotifier parentNotifier = (INodeNotifier) parent; - ProjectionModelNodeAdapterJSP parentAdapter = (ProjectionModelNodeAdapterJSP) parentNotifier.getExistingAdapter(ProjectionModelNodeAdapterJSP.class); - if (parentAdapter == null) { - // create a new adapter for parent - parentAdapter = new ProjectionModelNodeAdapterJSP(this); - parentNotifier.addAdapter(parentAdapter); - } - // call update on parent because a new node has just been - // added - parentAdapter.updateAdapter(parent); - } - } - } - - return null; - } - - /** - * Returns true if node is a node type able to fold - * - * @param node - * @return boolean true if node is projectable, false otherwise - */ - boolean isNodeProjectable(Node node) { - if (node.getNodeType() == Node.ELEMENT_NODE) { - String tagName = node.getNodeName(); - // node is only projectable if it is jsp scriptlet tag - if (JSP11Namespace.ElementName.SCRIPTLET.equalsIgnoreCase(tagName)) - return true; - } - return false; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/projection/ProjectionModelNodeAdapterHTML.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/projection/ProjectionModelNodeAdapterHTML.java deleted file mode 100644 index 8f8d66079f..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/projection/ProjectionModelNodeAdapterHTML.java +++ /dev/null @@ -1,263 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - * - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.projection; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import org.eclipse.core.runtime.Platform; -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.Position; -import org.eclipse.jface.text.source.projection.ProjectionAnnotation; -import org.eclipse.jface.text.source.projection.ProjectionAnnotationModel; -import org.eclipse.jface.text.source.projection.ProjectionViewer; -import org.eclipse.swt.graphics.GC; -import org.eclipse.swt.graphics.Rectangle; -import org.eclipse.swt.widgets.Canvas; -import org.eclipse.wst.html.ui.internal.Logger; -import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter; -import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier; -import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion; -import org.w3c.dom.Node; - -/** - * Updates projection annotation model with projection annotations for this - * adapter node's children - */ -public class ProjectionModelNodeAdapterHTML implements INodeAdapter { - - private class TagProjectionAnnotation extends ProjectionAnnotation { - private boolean fIsVisible = false; /* workaround for BUG85874 */ - private Node fNode; - - public TagProjectionAnnotation(Node node, boolean isCollapsed) { - super(isCollapsed); - fNode = node; - } - - public Node getNode() { - return fNode; - } - - public void setNode(Node node) { - fNode = node; - } - - /** - * Does not paint hidden annotations. Annotations are hidden when they - * only span one line. - * - * @see ProjectionAnnotation#paint(org.eclipse.swt.graphics.GC, - * org.eclipse.swt.widgets.Canvas, - * org.eclipse.swt.graphics.Rectangle) - */ - public void paint(GC gc, Canvas canvas, Rectangle rectangle) { - /* workaround for BUG85874 */ - /* - * only need to check annotations that are expanded because hidden - * annotations should never have been given the chance to - * collapse. - */ - if (!isCollapsed()) { - // working with rectangle, so need the styledtext line height - int lineHeight = fAdapterFactory.getProjectionViewer().getTextWidget().getLineHeight(); - - // do not draw annotations that only span one line and mark - // them as not visible - if ((rectangle.height / lineHeight) <= 1) { - fIsVisible = false; - return; - } - } - fIsVisible = true; - super.paint(gc, canvas, rectangle); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.text.source.projection.ProjectionAnnotation#markCollapsed() - */ - public void markCollapsed() { - /* workaround for BUG85874 */ - // do not mark collapsed if annotation is not visible - if (fIsVisible) - super.markCollapsed(); - } - } - - // copies of this class located in: - // org.eclipse.wst.html.ui.internal.projection - // org.eclipse.jst.jsp.ui.internal.projection - private final static boolean debugProjectionPerf = "true".equalsIgnoreCase(Platform.getDebugOption("org.eclipse.wst.html.ui/projectionperf")); //$NON-NLS-1$ //$NON-NLS-2$ - - ProjectionModelNodeAdapterFactoryHTML fAdapterFactory; - private Map fTagAnnotations = new HashMap(); - - public ProjectionModelNodeAdapterHTML(ProjectionModelNodeAdapterFactoryHTML factory) { - fAdapterFactory = factory; - } - - /** - * Create a projection position from the given node. Able to get - * projection position if node isNodeProjectable. - * - * @param node - * @return null if no projection position possible, a Position otherwise - */ - private Position createProjectionPosition(Node node) { - Position pos = null; - if (fAdapterFactory.isNodeProjectable(node) && node instanceof IndexedRegion) { - IDocument document = fAdapterFactory.getProjectionViewer().getDocument(); - if (document != null) { - IndexedRegion inode = (IndexedRegion) node; - int start = inode.getStartOffset(); - int end = inode.getEndOffset(); - if (start >= 0 && start < end) { - try { -// // region-based -// // extra line when collapsed, but no region increase when add newline -// pos = new Position(start, end - start); - -// // line-based -// // extra line when collapsed, but no region increase when add newline -// IRegion startLineRegion = document.getLineInformationOfOffset(start); -// IRegion endLineRegion = document.getLineInformationOfOffset(end); -// int startOffset = startLineRegion.getOffset(); -// int endOffset = endLineRegion.getOffset() + endLineRegion.getLength(); -// if (endOffset > startOffset) { -// pos = new Position(startOffset, endOffset - startOffset); -// } - - // line-based - // no extra line when collapsed, but region increase when add newline - int startLine = document.getLineOfOffset(start); - int endLine = document.getLineOfOffset(end); - if (endLine + 1 < document.getNumberOfLines()) { - int offset = document.getLineOffset(startLine); - int endOffset = document.getLineOffset(endLine + 1); - pos = new Position(offset, endOffset - offset); - } - } catch (BadLocationException x) { - Logger.log(Logger.WARNING_DEBUG, null, x); - } - } - } - } - return pos; - } - - /** - * Find TagProjectionAnnotation for node in the current list of projection - * annotations for this adapter - * - * @param node - * @return TagProjectionAnnotation - */ - private TagProjectionAnnotation getExistingAnnotation(Node node) { - TagProjectionAnnotation anno = null; - - if ((node != null) && (!fTagAnnotations.isEmpty())) { - Iterator it = fTagAnnotations.keySet().iterator(); - while (it.hasNext() && anno == null) { - TagProjectionAnnotation a = (TagProjectionAnnotation) it.next(); - Node n = a.getNode(); - if (node.equals(n)) { - anno = a; - } - } - } - return anno; - } - - public boolean isAdapterForType(Object type) { - return type == ProjectionModelNodeAdapterHTML.class; - } - - public void notifyChanged(INodeNotifier notifier, int eventType, Object changedFeature, Object oldValue, Object newValue, int pos) { - // check if folding is even enabled, if not, just ignore notifyChanged - // events - if (fAdapterFactory.getProjectionViewer() == null) { - return; - } - - if ((eventType == INodeNotifier.STRUCTURE_CHANGED) && (notifier instanceof Node)) { - updateAdapter((Node) notifier); - } - } - - /** - * Update the projection annotation of all the nodes that are children of - * node - * - * @param node - */ - void updateAdapter(Node node) { - long start = System.currentTimeMillis(); - - Map additions = new HashMap(); - Map projectionAnnotations = new HashMap(); - - // go through immediate child nodes and figure out projection - // model annotations - if (node != null) { - Node childNode = node.getFirstChild(); - while (childNode != null) { - Position newPos = createProjectionPosition(childNode); - if (newPos != null) { - TagProjectionAnnotation newAnnotation = new TagProjectionAnnotation(childNode, false); - TagProjectionAnnotation existing = getExistingAnnotation(childNode); - if (existing == null) { - // add to map containing all annotations for this - // adapter - projectionAnnotations.put(newAnnotation, newPos); - // add to map containing annotations to add - additions.put(newAnnotation, newPos); - } else { - // add to map containing all annotations for this - // adapter - projectionAnnotations.put(existing, newPos); - // remove from map containing annotations to delete - fTagAnnotations.remove(existing); - } - } - childNode = childNode.getNextSibling(); - } - - // in the end, want to delete anything leftover in old list, add - // everything in additions, and update everything in - // projectionAnnotations - ProjectionAnnotation[] oldList = null; - if (!fTagAnnotations.isEmpty()) { - oldList = (ProjectionAnnotation[]) fTagAnnotations.keySet().toArray(new ProjectionAnnotation[0]); - } - ProjectionAnnotation[] modifyList = null; - if (!projectionAnnotations.isEmpty()) { - modifyList = (ProjectionAnnotation[]) projectionAnnotations.keySet().toArray(new ProjectionAnnotation[0]); - } - ProjectionViewer viewer = fAdapterFactory.getProjectionViewer(); - ProjectionAnnotationModel annotationModel = viewer.getProjectionAnnotationModel(); - annotationModel.modifyAnnotations(oldList, additions, modifyList); - } - - // save new list of annotations - fTagAnnotations = additions; - - long end = System.currentTimeMillis(); - if (debugProjectionPerf) { - String nodeName = node != null ? node.getNodeName() : "null"; //$NON-NLS-1$ - System.out.println("ProjectionModelNodeAdapterHTML.updateAdapter (" + nodeName + "):" + (end - start)); //$NON-NLS-1$ //$NON-NLS-2$ - } - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/projection/ProjectionModelNodeAdapterJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/projection/ProjectionModelNodeAdapterJSP.java deleted file mode 100644 index a195368688..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/projection/ProjectionModelNodeAdapterJSP.java +++ /dev/null @@ -1,26 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - * - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.projection; - -/** - * Updates projection annotation model with projection annotations for this - * adapter node's children - */ -public class ProjectionModelNodeAdapterJSP extends ProjectionModelNodeAdapterHTML { - public ProjectionModelNodeAdapterJSP(ProjectionModelNodeAdapterFactoryJSP factory) { - super(factory); - } - - public boolean isAdapterForType(Object type) { - return type == ProjectionModelNodeAdapterJSP.class; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/projection/StructuredTextFoldingProviderJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/projection/StructuredTextFoldingProviderJSP.java deleted file mode 100644 index f4316f9ac9..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/projection/StructuredTextFoldingProviderJSP.java +++ /dev/null @@ -1,275 +0,0 @@ -package org.eclipse.jst.jsp.ui.internal.projection; - -import org.eclipse.core.runtime.Platform; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.source.projection.IProjectionListener; -import org.eclipse.jface.text.source.projection.ProjectionViewer; -import org.eclipse.wst.sse.core.internal.PropagatingAdapter; -import org.eclipse.wst.sse.core.internal.model.FactoryRegistry; -import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier; -import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; -import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion; -import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager; -import org.eclipse.wst.sse.ui.internal.projection.IStructuredTextFoldingProvider; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; -import org.w3c.dom.Document; -import org.w3c.dom.Node; - -/** - * Updates the projection model of a structured model for JSP. - */ -public class StructuredTextFoldingProviderJSP implements IStructuredTextFoldingProvider, IProjectionListener { - private final static boolean debugProjectionPerf = "true".equalsIgnoreCase(Platform.getDebugOption("org.eclipse.jst.jsp.ui/projectionperf")); //$NON-NLS-1$ //$NON-NLS-2$ - - private IDocument fDocument; - private ProjectionViewer fViewer; - - /** - * Adds an adapter to node and its children - * - * @param node - * @param level - */ - private void addAdapterToNodeAndChildren(Node node, int level) { - if (node instanceof INodeNotifier) { - INodeNotifier notifier = (INodeNotifier) node; - - // try and get the adapter for the current node and update the - // adapter with projection information - ProjectionModelNodeAdapterJSP adapter = (ProjectionModelNodeAdapterJSP) notifier.getExistingAdapter(ProjectionModelNodeAdapterJSP.class); - if (adapter != null) { - adapter.updateAdapter(node); - } - else { - // just call getadapter so the adapter is created and - // automatically initialized - notifier.getAdapterFor(ProjectionModelNodeAdapterJSP.class); - } - ProjectionModelNodeAdapterHTML adapter2 = (ProjectionModelNodeAdapterHTML) notifier.getExistingAdapter(ProjectionModelNodeAdapterHTML.class); - if (adapter2 != null) { - adapter2.updateAdapter(node); - } - else { - // just call getadapter so the adapter is created and - // automatically initialized - notifier.getAdapterFor(ProjectionModelNodeAdapterHTML.class); - } - - Node nextChild = node.getFirstChild(); - while (nextChild != null) { - Node childNode = nextChild; - nextChild = childNode.getNextSibling(); - - addAdapterToNodeAndChildren(childNode, level + 1); - } - } - } - - /** - * Goes through every node and adds an adapter onto each for tracking - * purposes - */ - private void addAllAdapters() { - long start = System.currentTimeMillis(); - - IStructuredModel sModel = null; - try { - sModel = StructuredModelManager.getModelManager().getExistingModelForRead(fDocument); - if (sModel != null) { - int startOffset = 0; - IndexedRegion startNode = sModel.getIndexedRegion(startOffset); - if (startNode instanceof Node) { - int level = 0; - Node nextSibling = (Node) startNode; - while (nextSibling != null) { - Node currentNode = nextSibling; - nextSibling = currentNode.getNextSibling(); - - addAdapterToNodeAndChildren(currentNode, level); - } - } - } - } - finally { - if (sModel != null) { - sModel.releaseFromRead(); - } - } - long end = System.currentTimeMillis(); - if (debugProjectionPerf) - System.out.println("StructuredTextFoldingProviderJSP.addAllAdapters: " + (end - start)); //$NON-NLS-1$ - } - - /** - * Get the ProjectionModelNodeAdapterFactoryHTML to use with this - * provider. - * - * @return ProjectionModelNodeAdapterFactoryHTML - */ - private ProjectionModelNodeAdapterFactoryHTML getAdapterFactoryHTML(boolean createIfNeeded) { - long start = System.currentTimeMillis(); - - ProjectionModelNodeAdapterFactoryHTML factory = null; - IStructuredModel sModel = null; - try { - sModel = StructuredModelManager.getModelManager().getExistingModelForRead(fDocument); - if (sModel != null) { - FactoryRegistry factoryRegistry = sModel.getFactoryRegistry(); - - // getting the projectionmodelnodeadapter for the first time - // so do some initializing - if (!factoryRegistry.contains(ProjectionModelNodeAdapterHTML.class) && createIfNeeded) { - ProjectionModelNodeAdapterFactoryHTML newFactory = new ProjectionModelNodeAdapterFactoryHTML(); - - // add factory to factory registry - factoryRegistry.addFactory(newFactory); - - // add factory to propogating adapter - IDOMModel domModel = (IDOMModel) sModel; - Document document = domModel.getDocument(); - PropagatingAdapter propagatingAdapter = (PropagatingAdapter) ((INodeNotifier) document).getAdapterFor(PropagatingAdapter.class); - if (propagatingAdapter != null) { - propagatingAdapter.addAdaptOnCreateFactory(newFactory); - } - } - - // try and get the factory - factory = (ProjectionModelNodeAdapterFactoryHTML) factoryRegistry.getFactoryFor(ProjectionModelNodeAdapterHTML.class); - } - } - finally { - if (sModel != null) - sModel.releaseFromRead(); - } - - long end = System.currentTimeMillis(); - if (debugProjectionPerf) - System.out.println("StructuredTextFoldingProviderJSP.getAdapterFactoryHTML: " + (end - start)); //$NON-NLS-1$ - return factory; - } - - /** - * Get the ProjectionModelNodeAdapterFactoryJSP to use with this provider. - * - * @return ProjectionModelNodeAdapterFactoryJSP - */ - private ProjectionModelNodeAdapterFactoryJSP getAdapterFactoryJSP(boolean createIfNeeded) { - long start = System.currentTimeMillis(); - - ProjectionModelNodeAdapterFactoryJSP factory = null; - IStructuredModel sModel = null; - try { - sModel = StructuredModelManager.getModelManager().getExistingModelForRead(fDocument); - if (sModel != null) { - FactoryRegistry factoryRegistry = sModel.getFactoryRegistry(); - - // getting the projectionmodelnodeadapter for the first time - // so do some initializing - if (!factoryRegistry.contains(ProjectionModelNodeAdapterJSP.class) && createIfNeeded) { - ProjectionModelNodeAdapterFactoryJSP newFactory = new ProjectionModelNodeAdapterFactoryJSP(); - - // add factory to factory registry - factoryRegistry.addFactory(newFactory); - - // add factory to propogating adapter - IDOMModel domModel = (IDOMModel) sModel; - Document document = domModel.getDocument(); - PropagatingAdapter propagatingAdapter = (PropagatingAdapter) ((INodeNotifier) document).getAdapterFor(PropagatingAdapter.class); - if (propagatingAdapter != null) { - propagatingAdapter.addAdaptOnCreateFactory(newFactory); - } - } - - // try and get the factory - factory = (ProjectionModelNodeAdapterFactoryJSP) factoryRegistry.getFactoryFor(ProjectionModelNodeAdapterJSP.class); - } - } - finally { - if (sModel != null) - sModel.releaseFromRead(); - } - - long end = System.currentTimeMillis(); - if (debugProjectionPerf) - System.out.println("StructuredTextFoldingProviderJSP.getAdapterFactoryJSP: " + (end - start)); //$NON-NLS-1$ - return factory; - } - - /** - * Initialize this provider with the correct document. Assumes projection - * is enabled. (otherwise, only install would have been called) - */ - public void initialize() { - if (!isInstalled()) - return; - - // set projection viewer to null on old document's adapter factory - projectionDisabled(); - - // clear out all annotations - if (fViewer.getProjectionAnnotationModel() != null) - fViewer.getProjectionAnnotationModel().removeAllAnnotations(); - fDocument = fViewer.getDocument(); - - if (fDocument != null) { - // set projection viewer on new document's adapter factory - ProjectionModelNodeAdapterFactoryJSP factory = getAdapterFactoryJSP(true); - if (factory != null) { - factory.setProjectionViewer(fViewer); - } - ProjectionModelNodeAdapterFactoryHTML factory2 = getAdapterFactoryHTML(true); - if (factory2 != null) { - factory2.setProjectionViewer(fViewer); - } - - addAllAdapters(); - } - } - - /** - * Associate a ProjectionViewer with this IStructuredTextFoldingProvider - * - * @param viewer - */ - public void install(ProjectionViewer viewer) { - // uninstall before trying to install new viewer - if (isInstalled()) { - uninstall(); - } - fViewer = viewer; - fViewer.addProjectionListener(this); - } - - private boolean isInstalled() { - return fViewer != null; - } - - public void projectionDisabled() { - ProjectionModelNodeAdapterFactoryJSP factory = getAdapterFactoryJSP(false); - if (factory != null) { - factory.setProjectionViewer(null); - } - ProjectionModelNodeAdapterFactoryHTML factory2 = getAdapterFactoryHTML(false); - if (factory2 != null) { - factory2.setProjectionViewer(null); - } - - fDocument = null; - } - - public void projectionEnabled() { - initialize(); - } - - /** - * Disconnect this IStructuredTextFoldingProvider from projection viewer - */ - public void uninstall() { - if (isInstalled()) { - projectionDisabled(); - - fViewer.removeProjectionListener(this); - fViewer = null; - } - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/registry/AdapterFactoryProviderForJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/registry/AdapterFactoryProviderForJSP.java deleted file mode 100644 index ec08c1574a..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/registry/AdapterFactoryProviderForJSP.java +++ /dev/null @@ -1,79 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.registry; - -import org.eclipse.jst.jsp.core.internal.java.IJSPTranslation; -import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapterFactory; -import org.eclipse.jst.jsp.core.internal.modelhandler.ModelHandlerForJSP; -import org.eclipse.wst.html.ui.internal.contentoutline.JFaceNodeAdapterFactoryForHTML; -import org.eclipse.wst.sse.core.internal.PropagatingAdapter; -import org.eclipse.wst.sse.core.internal.ltk.modelhandler.IDocumentTypeHandler; -import org.eclipse.wst.sse.core.internal.model.FactoryRegistry; -import org.eclipse.wst.sse.core.internal.provisional.INodeAdapterFactory; -import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; -import org.eclipse.wst.sse.ui.internal.contentoutline.IJFaceNodeAdapter; -import org.eclipse.wst.sse.ui.internal.provisional.registry.AdapterFactoryProvider; -import org.eclipse.wst.sse.ui.internal.util.Assert; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; - -public class AdapterFactoryProviderForJSP implements AdapterFactoryProvider { - - /* - * @see AdapterFactoryProvider#addAdapterFactories(IStructuredModel) - */ - public void addAdapterFactories(IStructuredModel structuredModel) { - // these are the main factories, on model's factory registry - addContentBasedFactories(structuredModel); - // ------- - // Must update/add to propagating adapters here too - addPropagatingAdapters(structuredModel); - } - - protected void addContentBasedFactories(IStructuredModel structuredModel) { - FactoryRegistry factoryRegistry = structuredModel.getFactoryRegistry(); - Assert.isNotNull(factoryRegistry, "Program Error: client caller must ensure model has factory registry"); //$NON-NLS-1$ - INodeAdapterFactory factory = null; - factory = factoryRegistry.getFactoryFor(IJFaceNodeAdapter.class); - if (factory == null) { - factory = new JFaceNodeAdapterFactoryForHTML(IJFaceNodeAdapter.class, true); - factoryRegistry.addFactory(factory); - } - - factory = factoryRegistry.getFactoryFor(IJSPTranslation.class); - if (factory == null) { - factory = new JSPTranslationAdapterFactory(); - factoryRegistry.addFactory(factory); - } - } - - protected void addPropagatingAdapters(IStructuredModel structuredModel) { - - if (structuredModel instanceof IDOMModel) { - IDOMModel xmlModel = (IDOMModel) structuredModel; - IDOMDocument document = xmlModel.getDocument(); - PropagatingAdapter propagatingAdapter = (PropagatingAdapter) document.getAdapterFor(PropagatingAdapter.class); - if (propagatingAdapter != null) { - // what to do? - } - } - } - - /* - * @see AdapterFactoryProvider#isFor(ContentTypeDescription) - */ - public boolean isFor(IDocumentTypeHandler contentTypeDescription) { - return (contentTypeDescription instanceof ModelHandlerForJSP); - } - - public void reinitializeFactories(IStructuredModel structuredModel) { - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/IStyleConstantsJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/IStyleConstantsJSP.java deleted file mode 100644 index 2b81bf80d4..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/IStyleConstantsJSP.java +++ /dev/null @@ -1,5 +0,0 @@ -package org.eclipse.jst.jsp.ui.internal.style; - -public interface IStyleConstantsJSP { - public static final String JSP_CONTENT = "jsp_content"; //$NON-NLS-1$ -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/LineStyleProviderForJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/LineStyleProviderForJSP.java deleted file mode 100644 index 56bcc4346c..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/LineStyleProviderForJSP.java +++ /dev/null @@ -1,224 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.style; - -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.text.TextAttribute; -import org.eclipse.jface.util.PropertyChangeEvent; -import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts; -import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin; -import org.eclipse.wst.html.ui.internal.style.IStyleConstantsHTML; -import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion; -import org.eclipse.wst.sse.ui.internal.provisional.style.AbstractLineStyleProvider; -import org.eclipse.wst.sse.ui.internal.provisional.style.LineStyleProvider; -import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext; -import org.eclipse.wst.xml.ui.internal.style.IStyleConstantsXML; - -public class LineStyleProviderForJSP extends AbstractLineStyleProvider implements LineStyleProvider{ - - private String fLanguage = null; - - // private static final String JAVA = "java"; //$NON-NLS-1$ - // private static final String[] JAVASCRIPT_LANGUAGE_KEYS = new String[] { - // "javascript", "javascript1.0", "javascript1.1_3", "javascript1.2", - // "javascript1.3", "javascript1.4", "javascript1.5", "javascript1.6", - // "jscript", "sashscript" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - // //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ - // //$NON-NLS-9$ //$NON-NLS-10$ - - public LineStyleProviderForJSP() { - super(); - } - - protected TextAttribute getAttributeFor(ITextRegion region) { - /** - * a method to centralize all the "sytle rules" for regions - */ - TextAttribute result = null; - // not sure why this is coming through null, but just to catch it - if (region == null) { - result = (TextAttribute) getTextAttributes().get(IStyleConstantsXML.CDATA_TEXT); - } - else { - - if (result == null) { - String type = region.getType(); - if ((type == DOMJSPRegionContexts.JSP_SCRIPTLET_OPEN) || (type == DOMJSPRegionContexts.JSP_DECLARATION_OPEN) || (type == DOMJSPRegionContexts.JSP_EXPRESSION_OPEN) || (type == DOMJSPRegionContexts.JSP_DIRECTIVE_OPEN) || (type == DOMJSPRegionContexts.JSP_DIRECTIVE_CLOSE) || (type == DOMJSPRegionContexts.JSP_CLOSE)) { - result = (TextAttribute) getTextAttributes().get(IStyleConstantsHTML.SCRIPT_AREA_BORDER); - } - else if (type == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME || type == DOMJSPRegionContexts.JSP_ROOT_TAG_NAME) { - result = (TextAttribute) getTextAttributes().get(IStyleConstantsXML.TAG_NAME); - } - else if ((type == DOMJSPRegionContexts.JSP_COMMENT_OPEN) || (type == DOMJSPRegionContexts.JSP_COMMENT_CLOSE)) { - result = (TextAttribute) getTextAttributes().get(IStyleConstantsXML.COMMENT_BORDER); - } - else if (type == DOMJSPRegionContexts.JSP_COMMENT_TEXT) { - result = (TextAttribute) getTextAttributes().get(IStyleConstantsXML.COMMENT_TEXT); - } - // ============ These are in common with XML --- (for XML form - // of tags) - // Note: this assume's this provider is only called for - // true JSP Nodes. If its called for others, then this will - // cause their tag names to be highlighted too! - // Further checks could be done to prevent that, but doesn't - // seem worth it, since if adpaters factories are working - // right, - // then wouldn't be needed. - else if (type == DOMRegionContext.XML_TAG_NAME) { - result = (TextAttribute) getTextAttributes().get(IStyleConstantsXML.TAG_NAME); - } - else if ((type == DOMRegionContext.XML_TAG_OPEN) || (type == DOMRegionContext.XML_END_TAG_OPEN) || (type == DOMRegionContext.XML_TAG_CLOSE) || (type == DOMRegionContext.XML_EMPTY_TAG_CLOSE)) { - result = (TextAttribute) getTextAttributes().get(IStyleConstantsXML.TAG_BORDER); - } - else if (type == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) { - result = (TextAttribute) getTextAttributes().get(IStyleConstantsXML.TAG_ATTRIBUTE_NAME); - } - else if ((type == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) || (type == DOMJSPRegionContexts.XML_TAG_ATTRIBUTE_VALUE_DQUOTE) || (type == DOMJSPRegionContexts.XML_TAG_ATTRIBUTE_VALUE_SQUOTE)) { - result = (TextAttribute) getTextAttributes().get(IStyleConstantsXML.TAG_ATTRIBUTE_VALUE); - } - else if (type == DOMRegionContext.XML_TAG_ATTRIBUTE_EQUALS) { - result = (TextAttribute) getTextAttributes().get(IStyleConstantsXML.TAG_ATTRIBUTE_EQUALS); - } - - // DMW: added 9/1/2002 Undefined color may need addjustment :) - else if (type == DOMRegionContext.UNDEFINED) - result = (TextAttribute) getTextAttributes().get(IStyleConstantsXML.XML_CONTENT); - - else if (type == DOMRegionContext.WHITE_SPACE) - result = (TextAttribute) getTextAttributes().get(IStyleConstantsXML.XML_CONTENT); - // DMW added 8/30/2002 -- should provide JSP specific - // preference for "custom tag content" (both tag dependent, - // BLOCKED_TEXT, and not, XML CONTENT) - else if (type == DOMRegionContext.XML_CONTENT) - result = (TextAttribute) getTextAttributes().get(IStyleConstantsXML.XML_CONTENT); - else if (type == DOMRegionContext.BLOCK_TEXT) - result = (TextAttribute) getTextAttributes().get(IStyleConstantsXML.CDATA_TEXT); - } - } - // default, return null to signal "not handled" - // in which case, other factories should be tried - return result; - } - - - protected IPreferenceStore getColorPreferences() { - return JSPUIPlugin.getDefault().getPreferenceStore(); - } - - protected void loadColors() { - addTextAttribute(IStyleConstantsXML.TAG_NAME); - addTextAttribute(IStyleConstantsXML.TAG_BORDER); - addTextAttribute(IStyleConstantsXML.TAG_ATTRIBUTE_NAME); - addTextAttribute(IStyleConstantsXML.TAG_ATTRIBUTE_VALUE); - addTextAttribute(IStyleConstantsXML.TAG_ATTRIBUTE_EQUALS); - addTextAttribute(IStyleConstantsXML.COMMENT_BORDER); - addTextAttribute(IStyleConstantsXML.COMMENT_TEXT); - addTextAttribute(IStyleConstantsXML.CDATA_BORDER); - addTextAttribute(IStyleConstantsXML.CDATA_TEXT); - addTextAttribute(IStyleConstantsXML.DECL_BORDER); - addTextAttribute(IStyleConstantsXML.DOCTYPE_EXTERNAL_ID); - addTextAttribute(IStyleConstantsXML.DOCTYPE_EXTERNAL_ID_PUBREF); - addTextAttribute(IStyleConstantsXML.DOCTYPE_EXTERNAL_ID_SYSREF); - addTextAttribute(IStyleConstantsXML.DOCTYPE_NAME); - addTextAttribute(IStyleConstantsXML.PI_CONTENT); - addTextAttribute(IStyleConstantsXML.PI_BORDER); - addTextAttribute(IStyleConstantsXML.XML_CONTENT); - addTextAttribute(IStyleConstantsHTML.SCRIPT_AREA_BORDER); - } - - protected void handlePropertyChange(PropertyChangeEvent event) { - String styleKey = null; - - if (event != null) { - String prefKey = event.getProperty(); - // check if preference changed is a style preference - if (IStyleConstantsXML.TAG_NAME.equals(prefKey)) { - styleKey = IStyleConstantsXML.TAG_NAME; - } - else if (IStyleConstantsXML.TAG_BORDER.equals(prefKey)) { - styleKey = IStyleConstantsXML.TAG_BORDER; - } - else if (IStyleConstantsXML.TAG_ATTRIBUTE_NAME.equals(prefKey)) { - styleKey = IStyleConstantsXML.TAG_ATTRIBUTE_NAME; - } - else if (IStyleConstantsXML.TAG_ATTRIBUTE_VALUE.equals(prefKey)) { - styleKey = IStyleConstantsXML.TAG_ATTRIBUTE_VALUE; - } - else if (IStyleConstantsXML.TAG_ATTRIBUTE_EQUALS.equals(prefKey)) { - styleKey = IStyleConstantsXML.TAG_ATTRIBUTE_EQUALS; - } - else if (IStyleConstantsXML.COMMENT_BORDER.equals(prefKey)) { - styleKey = IStyleConstantsXML.COMMENT_BORDER; - } - else if (IStyleConstantsXML.COMMENT_TEXT.equals(prefKey)) { - styleKey = IStyleConstantsXML.COMMENT_TEXT; - } - else if (IStyleConstantsXML.CDATA_BORDER.equals(prefKey)) { - styleKey = IStyleConstantsXML.CDATA_BORDER; - } - else if (IStyleConstantsXML.CDATA_TEXT.equals(prefKey)) { - styleKey = IStyleConstantsXML.CDATA_TEXT; - } - else if (IStyleConstantsXML.DECL_BORDER.equals(prefKey)) { - styleKey = IStyleConstantsXML.DECL_BORDER; - } - else if (IStyleConstantsXML.DOCTYPE_EXTERNAL_ID.equals(prefKey)) { - styleKey = IStyleConstantsXML.DOCTYPE_EXTERNAL_ID; - } - else if (IStyleConstantsXML.DOCTYPE_EXTERNAL_ID_PUBREF.equals(prefKey)) { - styleKey = IStyleConstantsXML.DOCTYPE_EXTERNAL_ID_PUBREF; - } - else if (IStyleConstantsXML.DOCTYPE_EXTERNAL_ID_SYSREF.equals(prefKey)) { - styleKey = IStyleConstantsXML.DOCTYPE_EXTERNAL_ID_SYSREF; - } - else if (IStyleConstantsXML.DOCTYPE_NAME.equals(prefKey)) { - styleKey = IStyleConstantsXML.DOCTYPE_NAME; - } - else if (IStyleConstantsXML.PI_CONTENT.equals(prefKey)) { - styleKey = IStyleConstantsXML.PI_CONTENT; - } - else if (IStyleConstantsXML.PI_BORDER.equals(prefKey)) { - styleKey = IStyleConstantsXML.PI_BORDER; - } - else if (IStyleConstantsXML.XML_CONTENT.equals(prefKey)) { - styleKey = IStyleConstantsXML.XML_CONTENT; - } - else if (IStyleConstantsHTML.SCRIPT_AREA_BORDER.equals(prefKey)) { - styleKey = IStyleConstantsHTML.SCRIPT_AREA_BORDER; - } - } - - if (styleKey != null) { - // overwrite style preference with new value - addTextAttribute(styleKey); - super.handlePropertyChange(event); - } - } - - /** - * Returns the language. - * - * @return String - */ - public String getLanguage() { - return fLanguage; - } - - /** - * Sets the language. - * - * @param language - * The language to set - */ - public void setLanguage(String language) { - this.fLanguage = language; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/java/IStyleConstantsJSPJava.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/java/IStyleConstantsJSPJava.java deleted file mode 100644 index 29e39e8010..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/java/IStyleConstantsJSPJava.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM - Initial API and implementation - * Jens Lukowski/Innoopract - initial renaming/restructuring - * - */ -package org.eclipse.jst.jsp.ui.internal.style.java; - -public interface IStyleConstantsJSPJava { - String JAVA_KEYWORD = "keyword"; //$NON-NLS-1$ - String JAVA_SINGLE_LINE_COMMENT = "single_line_comment"; //$NON-NLS-1$ - String JAVA_STRING = "string"; //$NON-NLS-1$ - String JAVA_DEFAULT = "default"; //$NON-NLS-1$ -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/java/JavaCodeScanner.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/java/JavaCodeScanner.java deleted file mode 100644 index 528ed65495..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/java/JavaCodeScanner.java +++ /dev/null @@ -1,106 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.style.java; - - - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.jface.text.rules.EndOfLineRule; -import org.eclipse.jface.text.rules.IRule; -import org.eclipse.jface.text.rules.IToken; -import org.eclipse.jface.text.rules.MultiLineRule; -import org.eclipse.jface.text.rules.SingleLineRule; -import org.eclipse.jface.text.rules.Token; -import org.eclipse.jface.text.rules.WordRule; - -/** - * A Java code scanner. - */ -class JavaCodeScanner extends org.eclipse.jface.text.rules.RuleBasedScanner { - private IToken fKeywordToken; - private IToken fTypeToken; - private IToken fStringToken; - private IToken fSingleLineCommentToken; - private IToken fDefaultToken; - - private static String[] fgKeywords = {"abstract", //$NON-NLS-1$ - "break", //$NON-NLS-1$ - "case", "catch", "class", "continue", //$NON-NLS-4$//$NON-NLS-3$//$NON-NLS-2$//$NON-NLS-1$ - "default", "do", //$NON-NLS-2$//$NON-NLS-1$ - "else", "extends", //$NON-NLS-2$//$NON-NLS-1$ - "final", "finally", "for", //$NON-NLS-3$//$NON-NLS-2$//$NON-NLS-1$ - "if", "implements", "import", "instanceof", "interface", //$NON-NLS-5$//$NON-NLS-4$//$NON-NLS-3$//$NON-NLS-2$//$NON-NLS-1$ - "native", "new", //$NON-NLS-2$//$NON-NLS-1$ - "package", "private", "protected", "public", //$NON-NLS-4$//$NON-NLS-3$//$NON-NLS-2$//$NON-NLS-1$ - "return", //$NON-NLS-1$ - "static", "super", "switch", "synchronized", //$NON-NLS-4$//$NON-NLS-3$//$NON-NLS-2$//$NON-NLS-1$ - "this", "throw", "throws", "transient", "try", //$NON-NLS-5$//$NON-NLS-4$//$NON-NLS-3$//$NON-NLS-2$//$NON-NLS-1$ - "volatile", //$NON-NLS-1$ - "while", //$NON-NLS-1$ - "strictfp",//$NON-NLS-1$ - }; - private static String[] fgTypes = {"void", "boolean", "char", "byte", "short", "int", "long", "float", "double"};//$NON-NLS-9$//$NON-NLS-8$//$NON-NLS-7$//$NON-NLS-6$//$NON-NLS-5$//$NON-NLS-4$//$NON-NLS-3$//$NON-NLS-2$//$NON-NLS-1$ - private static String[] fgConstants = {"false", "null", "true"};//$NON-NLS-3$//$NON-NLS-2$//$NON-NLS-1$ - - /** - * Creates a Java code scanner - */ - public JavaCodeScanner() { - super(); - } - - public void initializeRules() { - List rules = new ArrayList(); - - // Add rule for multiple line comments. - rules.add(new MultiLineRule("/*", "*/", fSingleLineCommentToken));//$NON-NLS-1$ //$NON-NLS-2$ - - // Add rule for single line comments. - rules.add(new EndOfLineRule("//", fSingleLineCommentToken));//$NON-NLS-1$ - - // Add rule for strings and character constants. - rules.add(new SingleLineRule("\"", "\"", fStringToken, '\\'));//$NON-NLS-2$//$NON-NLS-1$ - rules.add(new SingleLineRule("'", "'", fStringToken, '\\'));//$NON-NLS-2$//$NON-NLS-1$ - - // Add generic whitespace rule. - //rules.add(new WhitespaceRule(new JavaWhitespaceDetector())); - - // Add word rule for keywords, types, and constants. - WordRule wordRule = new WordRule(new JavaWordDetector(), fDefaultToken); - for (int i = 0; i < fgKeywords.length; i++) - wordRule.addWord(fgKeywords[i], fKeywordToken); - for (int i = 0; i < fgTypes.length; i++) - wordRule.addWord(fgTypes[i], fTypeToken); - for (int i = 0; i < fgConstants.length; i++) - wordRule.addWord(fgConstants[i], fTypeToken); - rules.add(wordRule); - - - IRule[] result = new IRule[rules.size()]; - rules.toArray(result); - setRules(result); - } - - public void setTokenData(String tokenKey, Object data) { - if (tokenKey == IStyleConstantsJSPJava.JAVA_KEYWORD) { - fKeywordToken = new Token(data); - fTypeToken = new Token(data); - } else if (tokenKey == IStyleConstantsJSPJava.JAVA_STRING) { - fStringToken = new Token(data); - } else if (tokenKey == IStyleConstantsJSPJava.JAVA_SINGLE_LINE_COMMENT) { - fSingleLineCommentToken = new Token(data); - } else if (tokenKey == IStyleConstantsJSPJava.JAVA_DEFAULT) { - fDefaultToken = new Token(data); - } - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/java/JavaColorProvider.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/java/JavaColorProvider.java deleted file mode 100644 index d943561425..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/java/JavaColorProvider.java +++ /dev/null @@ -1,82 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.style.java; - -import org.eclipse.jdt.ui.PreferenceConstants; -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.preference.PreferenceConverter; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.RGB; - -/** - * Colors used in the Java editor - */ -public class JavaColorProvider { - - // people should not be setting these, even though they are currently not final - public static RGB MULTI_LINE_COMMENT = new RGB(128, 0, 0); - public static RGB SINGLE_LINE_COMMENT = new RGB(128, 128, 0); - public static RGB KEYWORD = new RGB(0, 0, 128); - public static RGB TYPE = new RGB(0, 0, 128); - public static RGB STRING = new RGB(0, 128, 0); - public static RGB DEFAULT = new RGB(0, 0, 0); - public static RGB JAVADOC_KEYWORD = new RGB(0, 128, 0); - public static RGB JAVADOC_TAG = new RGB(128, 128, 128); - public static RGB JAVADOC_LINK = new RGB(128, 128, 128); - public static RGB JAVADOC_DEFAULT = new RGB(0, 128, 128); - - public static int MULTI_LINE_COMMENT_BOLD = SWT.NORMAL; - public static int SINGLE_LINE_COMMENT_BOLD = SWT.NORMAL; - public static int KEYWORD_BOLD = SWT.BOLD; - public static int TYPE_BOLD = SWT.BOLD; - public static int STRING_BOLD = SWT.NORMAL; - public static int DEFAULT_BOLD = SWT.NORMAL; - public static int JAVADOC_KEYWORD_BOLD = SWT.BOLD; - public static int JAVADOC_TAG_BOLD = SWT.NORMAL; - public static int JAVADOC_LINK_BOLD = SWT.NORMAL; - public static int JAVADOC_DEFAULT_BOLD = SWT.NORMAL; - - private static JavaColorProvider fInstance = null; - - public static JavaColorProvider getInstance() { - if (fInstance == null) { - fInstance = new JavaColorProvider(); - } - return fInstance; - } - - /** - * Use colors from JDT plugin - */ - public void loadJavaColors() { - IPreferenceStore jdtStore = PreferenceConstants.getPreferenceStore(); - MULTI_LINE_COMMENT = PreferenceConverter.getColor(jdtStore, PreferenceConstants.EDITOR_MULTI_LINE_COMMENT_COLOR); - SINGLE_LINE_COMMENT = PreferenceConverter.getColor(jdtStore, PreferenceConstants.EDITOR_SINGLE_LINE_COMMENT_COLOR); - KEYWORD = PreferenceConverter.getColor(jdtStore, PreferenceConstants.EDITOR_JAVA_KEYWORD_COLOR); - TYPE = KEYWORD; - STRING = PreferenceConverter.getColor(jdtStore, PreferenceConstants.EDITOR_STRING_COLOR); - DEFAULT = PreferenceConverter.getColor(jdtStore, PreferenceConstants.EDITOR_JAVA_DEFAULT_COLOR); - JAVADOC_KEYWORD = PreferenceConverter.getColor(jdtStore, PreferenceConstants.EDITOR_JAVADOC_KEYWORD_COLOR); - JAVADOC_TAG = PreferenceConverter.getColor(jdtStore, PreferenceConstants.EDITOR_JAVADOC_TAG_COLOR); - JAVADOC_LINK = PreferenceConverter.getColor(jdtStore, PreferenceConstants.EDITOR_JAVADOC_LINKS_COLOR); - JAVADOC_DEFAULT = PreferenceConverter.getColor(jdtStore, PreferenceConstants.EDITOR_JAVADOC_DEFAULT_COLOR); - - MULTI_LINE_COMMENT_BOLD = jdtStore.getBoolean(PreferenceConstants.EDITOR_MULTI_LINE_COMMENT_BOLD) ? SWT.BOLD : SWT.NORMAL; - SINGLE_LINE_COMMENT_BOLD = jdtStore.getBoolean(PreferenceConstants.EDITOR_SINGLE_LINE_COMMENT_BOLD) ? SWT.BOLD : SWT.NORMAL; - KEYWORD_BOLD = jdtStore.getBoolean(PreferenceConstants.EDITOR_JAVA_KEYWORD_BOLD) ? SWT.BOLD : SWT.NORMAL; - TYPE_BOLD = jdtStore.getBoolean(PreferenceConstants.EDITOR_JAVA_KEYWORD_BOLD) ? SWT.BOLD : SWT.NORMAL; - STRING_BOLD = jdtStore.getBoolean(PreferenceConstants.EDITOR_STRING_BOLD) ? SWT.BOLD : SWT.NORMAL; - DEFAULT_BOLD = jdtStore.getBoolean(PreferenceConstants.EDITOR_JAVA_DEFAULT_BOLD) ? SWT.BOLD : SWT.NORMAL; - JAVADOC_TAG_BOLD = jdtStore.getBoolean(PreferenceConstants.EDITOR_JAVADOC_TAG_BOLD) ? SWT.BOLD : SWT.NORMAL; - JAVADOC_LINK_BOLD = jdtStore.getBoolean(PreferenceConstants.EDITOR_JAVADOC_LINKS_BOLD) ? SWT.BOLD : SWT.NORMAL; - JAVADOC_DEFAULT_BOLD = jdtStore.getBoolean(PreferenceConstants.EDITOR_JAVADOC_DEFAULT_BOLD) ? SWT.BOLD : SWT.NORMAL; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/java/JavaWhitespaceDetector.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/java/JavaWhitespaceDetector.java deleted file mode 100644 index 381893e74d..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/java/JavaWhitespaceDetector.java +++ /dev/null @@ -1,26 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.style.java; - - - -/** - * A java aware white space detector. - */ -public class JavaWhitespaceDetector implements org.eclipse.jface.text.rules.IWhitespaceDetector { - - /** - * @see org.eclipse.jface.text.rules.IWhitespaceDetector#isWhitespace - */ - public boolean isWhitespace(char c) { - return Character.isWhitespace(c); - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/java/JavaWordDetector.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/java/JavaWordDetector.java deleted file mode 100644 index 77fe762368..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/java/JavaWordDetector.java +++ /dev/null @@ -1,32 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.style.java; - - -/** - * A Java aware word detector. - */ -public class JavaWordDetector implements org.eclipse.jface.text.rules.IWordDetector { - - /** - * @see org.eclipse.jface.text.rules.IWordDetector#isWordIdentifierPart - */ - public boolean isWordPart(char c) { - return Character.isJavaIdentifierPart(c); - } - - /** - * @see org.eclipse.jface.text.rules.IWordDetector#isWordIdentifierStart - */ - public boolean isWordStart(char c) { - return Character.isJavaIdentifierStart(c); - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/java/LineStyleProviderForJava.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/java/LineStyleProviderForJava.java deleted file mode 100644 index a10936a79c..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/java/LineStyleProviderForJava.java +++ /dev/null @@ -1,347 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.style.java; - -import java.util.Collection; -import java.util.HashMap; - -import org.eclipse.jdt.ui.PreferenceConstants; -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.preference.PreferenceConverter; -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.Document; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.ITypedRegion; -import org.eclipse.jface.text.TextAttribute; -import org.eclipse.jface.text.rules.IToken; -import org.eclipse.jface.text.rules.Token; -import org.eclipse.jface.util.IPropertyChangeListener; -import org.eclipse.jface.util.PropertyChangeEvent; -import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin; -import org.eclipse.jst.jsp.ui.internal.style.IStyleConstantsJSP; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.StyleRange; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.RGB; -import org.eclipse.swt.widgets.Display; -import org.eclipse.wst.html.ui.internal.style.IStyleConstantsHTML; -import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument; -import org.eclipse.wst.sse.ui.internal.preferences.ui.ColorHelper; -import org.eclipse.wst.sse.ui.internal.provisional.style.Highlighter; -import org.eclipse.wst.sse.ui.internal.provisional.style.LineStyleProvider; -import org.eclipse.wst.sse.ui.internal.util.EditorUtility; -import org.eclipse.wst.xml.ui.internal.style.IStyleConstantsXML; - -// Note: many of the methods in this class were based on (or copied from) those -// found in the example Java Editor -public class LineStyleProviderForJava implements LineStyleProvider{ - private class PropertyChangeListener implements IPropertyChangeListener { - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent) - */ - public void propertyChange(PropertyChangeEvent event) { - // have to do it this way so others can override the method - handlePropertyChange(event); - } - } - - private IDocument fDocument; - private Highlighter fHighlighter; - private boolean fIsInitialized = false; - private PropertyChangeListener fPreferenceListener = new PropertyChangeListener(); - /** The scanner it uses */ - private JavaCodeScanner fScanner; - /** Contains all text attributes pretaining to this line style provider */ - private HashMap fTextAttributes = null; - - public LineStyleProviderForJava() { - super(); - fScanner = new JavaCodeScanner(); - } - - /** - * Adds style information to the given text presentation. - * - * @param presentation the text presentation to be extended - * @param offset the offset of the range to be styled - * @param length the length of the range to be styled - * @param attr the attribute describing the style of the range to be styled - */ - private void addRange(Collection presentation, int offset, int length, TextAttribute attr) { - // support for user defined backgroud for JSP scriptlet regions - String styleString = JSPUIPlugin.getDefault().getPreferenceStore().getString(IStyleConstantsJSP.JSP_CONTENT); - String[] prefs = ColorHelper.unpackStylePreferences(styleString); - Color bgColor = (prefs != null && prefs.length == 3 && prefs[1].startsWith("#") && Display.getCurrent() != null) //$NON-NLS-1$ - ? new Color(Display.getCurrent(), ColorHelper.toRGB(prefs[1])) - : attr.getBackground(); - - presentation.add(new StyleRange(offset, length, attr.getForeground(), bgColor, attr.getStyle())); - } - - /** - * Looks up the colorKey in the preference store and adds the style - * information to list of TextAttributes - * - * @param colorKey - */ - private void addTextAttribute(String colorKey) { - if (getColorPreferences() != null) { - String prefString = getColorPreferences().getString(colorKey); - String[] stylePrefs = ColorHelper.unpackStylePreferences(prefString); - if (stylePrefs != null) { - RGB foreground = ColorHelper.toRGB(stylePrefs[0]); - RGB background = ColorHelper.toRGB(stylePrefs[1]); - boolean bold = Boolean.valueOf(stylePrefs[2]).booleanValue(); - getTextAttributes().put(colorKey, createTextAttribute(foreground, background, bold)); - } - } - } - - /** - * Looks up the colorKey in the preference store and adds the style - * information to list of TextAttributes - * - * @param colorKey - */ - private void addJavaTextAttribute(String colorKey) { - IPreferenceStore store = getJavaColorPreferences(); - if (store != null && colorKey != null) { - TextAttribute ta = null; - if (colorKey == IStyleConstantsJSPJava.JAVA_KEYWORD) { - // keyword - RGB foreground = PreferenceConverter.getColor(store, PreferenceConstants.EDITOR_JAVA_KEYWORD_COLOR); - boolean bold = store.getBoolean(PreferenceConstants.EDITOR_JAVA_KEYWORD_BOLD); - boolean italics = store.getBoolean(PreferenceConstants.EDITOR_JAVA_KEYWORD_ITALIC); - ta = createTextAttribute(foreground, null, bold, italics); - } else if (colorKey == IStyleConstantsJSPJava.JAVA_STRING) { - // string - RGB foreground = PreferenceConverter.getColor(store, PreferenceConstants.EDITOR_STRING_COLOR); - boolean bold = store.getBoolean(PreferenceConstants.EDITOR_STRING_BOLD); - boolean italics = store.getBoolean(PreferenceConstants.EDITOR_STRING_ITALIC); - ta = createTextAttribute(foreground, null, bold, italics); - } else if (colorKey == IStyleConstantsJSPJava.JAVA_SINGLE_LINE_COMMENT) { - // single line comment - RGB foreground = PreferenceConverter.getColor(store, PreferenceConstants.EDITOR_SINGLE_LINE_COMMENT_COLOR); - boolean bold = store.getBoolean(PreferenceConstants.EDITOR_SINGLE_LINE_COMMENT_BOLD); - boolean italics = store.getBoolean(PreferenceConstants.EDITOR_SINGLE_LINE_COMMENT_ITALIC); - ta = createTextAttribute(foreground, null, bold, italics); - } else if (colorKey == IStyleConstantsJSPJava.JAVA_DEFAULT) { - // default - RGB foreground = PreferenceConverter.getColor(store, PreferenceConstants.EDITOR_JAVA_DEFAULT_COLOR); - boolean bold = store.getBoolean(PreferenceConstants.EDITOR_JAVA_DEFAULT_BOLD); - boolean italics = store.getBoolean(PreferenceConstants.EDITOR_JAVA_DEFAULT_ITALIC); - ta = createTextAttribute(foreground, null, bold, italics); - } - if (ta != null) { - getTextAttributes().put(colorKey, ta); - fScanner.setTokenData(colorKey, ta); - } - } - } - - private TextAttribute createTextAttribute(RGB foreground, RGB background, boolean bold) { - return new TextAttribute((foreground != null) ? EditorUtility.getColor(foreground) : null, (background != null) ? EditorUtility.getColor(background) : null, bold ? SWT.BOLD : SWT.NORMAL); - } - - private TextAttribute createTextAttribute(RGB foreground, RGB background, boolean bold, boolean italics) { - int style = bold ? SWT.BOLD : SWT.NORMAL; - if (italics) - style |= SWT.ITALIC; - - return new TextAttribute((foreground != null) ? EditorUtility.getColor(foreground) : null, (background != null) ? EditorUtility.getColor(background) : null, style); - } - - /** - * Returns the hashtable containing all the text attributes for this line - * style provider. Lazily creates a hashtable if one has not already been - * created. - * - * @return - */ - private HashMap getTextAttributes() { - if (fTextAttributes == null) { - fTextAttributes = new HashMap(); - loadColors(); - } - return fTextAttributes; - } - - /** - * Returns a text attribute encoded in the given token. If the token's - * data is not <code>null</code> and a text attribute it is assumed that - * it is the encoded text attribute. It returns the default text attribute - * if there is no encoded text attribute found. - * - * @param token the token whose text attribute is to be determined - * @return the token's text attribute - */ - private TextAttribute getTokenTextAttribute(IToken token) { - TextAttribute ta = null; - - Object data = token.getData(); - if (data instanceof TextAttribute) - ta = (TextAttribute)data; - else { - ta = (TextAttribute)getTextAttributes().get(IStyleConstantsJSPJava.JAVA_DEFAULT); - } - return ta; - } - - public void init(IStructuredDocument document, Highlighter highlighter) { - fDocument = document; - fHighlighter = highlighter; - - if (fIsInitialized) - return; - - registerPreferenceListener(); - - fIsInitialized = true; - } - - private void loadColors() { - addTextAttribute(IStyleConstantsHTML.SCRIPT_AREA_BORDER); - addTextAttribute(IStyleConstantsXML.TAG_ATTRIBUTE_NAME); - addTextAttribute(IStyleConstantsXML.TAG_ATTRIBUTE_VALUE); - - addJavaTextAttribute(IStyleConstantsJSPJava.JAVA_KEYWORD); - addJavaTextAttribute(IStyleConstantsJSPJava.JAVA_STRING); - addJavaTextAttribute(IStyleConstantsJSPJava.JAVA_SINGLE_LINE_COMMENT); - addJavaTextAttribute(IStyleConstantsJSPJava.JAVA_DEFAULT); - - fScanner.initializeRules(); - } - - protected void handlePropertyChange(PropertyChangeEvent event) { - String styleKey = null; - String javaStyleKey = null; - - if (event != null) { - String prefKey = event.getProperty(); - // check if preference changed is a style preference - if (IStyleConstantsHTML.SCRIPT_AREA_BORDER.equals(prefKey)) { - styleKey = IStyleConstantsHTML.SCRIPT_AREA_BORDER; - } - else if (IStyleConstantsXML.TAG_ATTRIBUTE_NAME.equals(prefKey)) { - styleKey = IStyleConstantsXML.TAG_ATTRIBUTE_NAME; - } - else if (IStyleConstantsXML.TAG_ATTRIBUTE_VALUE.equals(prefKey)) { - styleKey = IStyleConstantsXML.TAG_ATTRIBUTE_VALUE; - } else if (PreferenceConstants.EDITOR_JAVA_KEYWORD_COLOR.equals(prefKey) || (PreferenceConstants.EDITOR_JAVA_KEYWORD_BOLD.equals(prefKey))|| (PreferenceConstants.EDITOR_JAVA_KEYWORD_ITALIC.equals(prefKey))) { - javaStyleKey = IStyleConstantsJSPJava.JAVA_KEYWORD; - } else if (PreferenceConstants.EDITOR_STRING_COLOR.equals(prefKey) || (PreferenceConstants.EDITOR_STRING_BOLD.equals(prefKey))|| (PreferenceConstants.EDITOR_STRING_ITALIC.equals(prefKey))) { - javaStyleKey = IStyleConstantsJSPJava.JAVA_STRING; - } else if (PreferenceConstants.EDITOR_SINGLE_LINE_COMMENT_COLOR.equals(prefKey) || (PreferenceConstants.EDITOR_SINGLE_LINE_COMMENT_BOLD.equals(prefKey))|| (PreferenceConstants.EDITOR_SINGLE_LINE_COMMENT_ITALIC.equals(prefKey))) { - javaStyleKey = IStyleConstantsJSPJava.JAVA_SINGLE_LINE_COMMENT; - } else if (PreferenceConstants.EDITOR_JAVA_DEFAULT_COLOR.equals(prefKey) || (PreferenceConstants.EDITOR_JAVA_DEFAULT_BOLD.equals(prefKey))|| (PreferenceConstants.EDITOR_JAVA_DEFAULT_ITALIC.equals(prefKey))) { - javaStyleKey = IStyleConstantsJSPJava.JAVA_DEFAULT; - } - } - - if (styleKey != null) { - // overwrite style preference with new value - addTextAttribute(styleKey); - } - if (javaStyleKey != null) { - // overwrite style preference with new value - addJavaTextAttribute(javaStyleKey); - fScanner.initializeRules(); - } - if (styleKey != null || javaStyleKey != null) { - // force a full update of the text viewer - fHighlighter.refreshDisplay(); - } - } - - public boolean prepareRegions(ITypedRegion typedRegion, int ssssrequestedStart, int ssssrequestedLength, Collection holdResults) { - boolean result = true; - try { - // ideally, eventually, we'll have a "virtualDocument" we can - // refer to, but for now ... we'll simple rescan the one region. - // use simple adjustment (since "sub-content" starts at 0 - int offsetAdjustment = typedRegion.getOffset(); - String content = fDocument.get(typedRegion.getOffset(), typedRegion.getLength()); - IDocument document = new Document(content); - - int lastStart = 0; - int length = 0; - IToken lastToken = Token.UNDEFINED; - - int remainingLength = typedRegion.getLength(); - fScanner.setRange(document, lastStart, remainingLength); - - while (true) { - - IToken token = fScanner.nextToken(); - - if (token.isEOF()) { - if (!lastToken.isUndefined() && length != 0) - addRange(holdResults, lastStart + offsetAdjustment, length, getTokenTextAttribute(lastToken)); - break; - } - - if (token.isWhitespace()) { - length += fScanner.getTokenLength(); - continue; - } - - if (lastToken.isUndefined()) { - lastToken = token; - length += fScanner.getTokenLength(); - continue; - } - - if (token != lastToken) { - addRange(holdResults, lastStart + offsetAdjustment, length, getTokenTextAttribute(lastToken)); - lastToken = token; - lastStart = fScanner.getTokenOffset(); - length = fScanner.getTokenLength(); - continue; - } - - length += fScanner.getTokenLength(); - } - } - catch (BadLocationException e) { - // shouldn't happen, but we don't want it to stop other highlighting, if it does. - result = false; - } - return result; - } - - private void registerPreferenceListener() { - getColorPreferences().addPropertyChangeListener(fPreferenceListener); - getJavaColorPreferences().addPropertyChangeListener(fPreferenceListener); - } - - public void release() { - unregisterPreferenceManager(); - if (fTextAttributes != null) { - fTextAttributes.clear(); - fTextAttributes = null; - } - } - - private void unregisterPreferenceManager() { - getColorPreferences().removePropertyChangeListener(fPreferenceListener); - getJavaColorPreferences().removePropertyChangeListener(fPreferenceListener); - } - - private IPreferenceStore getColorPreferences() { - return JSPUIPlugin.getDefault().getPreferenceStore(); - } - - private IPreferenceStore getJavaColorPreferences() { - return PreferenceConstants.getPreferenceStore(); - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/jspel/IStyleConstantsJSPEL.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/jspel/IStyleConstantsJSPEL.java deleted file mode 100644 index 256ed220da..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/jspel/IStyleConstantsJSPEL.java +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright (c) 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM - Initial API and implementation - * Jens Lukowski/Innoopract - initial renaming/restructuring - * - */ -package org.eclipse.jst.jsp.ui.internal.style.jspel; - -public interface IStyleConstantsJSPEL { - String EL_KEYWORD = "keyword"; //$NON-NLS-1$ - String EL_DEFAULT = "default"; //$NON-NLS-1$ -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/jspel/JSPELCodeScanner.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/jspel/JSPELCodeScanner.java deleted file mode 100644 index e7f7cc9f9a..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/jspel/JSPELCodeScanner.java +++ /dev/null @@ -1,83 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.style.jspel; - - - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.jface.text.rules.IRule; -import org.eclipse.jface.text.rules.IToken; -import org.eclipse.jface.text.rules.Token; -import org.eclipse.jface.text.rules.WhitespaceRule; -import org.eclipse.jface.text.rules.WordRule; - -/** - * A Java code scanner. - */ -public class JSPELCodeScanner extends org.eclipse.jface.text.rules.RuleBasedScanner { - private IToken fKeywordToken; - private IToken fTypeToken; - private IToken fDefaultToken; - - private static String[] fgKeywords = { - "and", //$NON-NLS-1$ - "did", //$NON-NLS-1$ - "div", //$NON-NLS-1$ - "empty", //$NON-NLS-1$ - "eq", //$NON-NLS-1$ - "ge", //$NON-NLS-1$ - "gt", //$NON-NLS-1$ - "or", //$NON-NLS-1$ - "le", //$NON-NLS-1$ - "lt", //$NON-NLS-1$ - "mod", //$NON-NLS-1$ - "ne", //$NON-NLS-1$ - "not" //$NON-NLS-1$ - }; - private static String[] fgConstants = {"false", "true"};//$NON-NLS-2$//$NON-NLS-1$ - - /** - * Creates a Java code scanner - */ - public JSPELCodeScanner() { - super(); - } - - public void initializeRules() { - List rules = new ArrayList(); - - // Add generic whitespace rule. - rules.add(new WhitespaceRule(new JSPELWhitespaceDetector())); - - // Add word rule for keywords, types, and constants. - WordRule wordRule = new WordRule(new JSPELWordDetector(), fDefaultToken); - for (int i = 0; i < fgKeywords.length; i++) - wordRule.addWord(fgKeywords[i], fKeywordToken); - for (int i = 0; i < fgConstants.length; i++) - wordRule.addWord(fgConstants[i], fTypeToken); - rules.add(wordRule); - - IRule[] result = new IRule[rules.size()]; - rules.toArray(result); - setRules(result); - } - - public void setTokenData(String tokenKey, Object data) { - if (tokenKey == IStyleConstantsJSPEL.EL_KEYWORD) { - fKeywordToken = new Token(data); - fTypeToken = new Token(data); - } else if (tokenKey == IStyleConstantsJSPEL.EL_DEFAULT) { - fDefaultToken = new Token(data); - } - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/jspel/JSPELColorProvider.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/jspel/JSPELColorProvider.java deleted file mode 100644 index 716071ffea..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/jspel/JSPELColorProvider.java +++ /dev/null @@ -1,102 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.style.jspel; - -import org.eclipse.jdt.ui.PreferenceConstants; -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.preference.PreferenceConverter; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.RGB; - -/** - * Colors used in the Java editor - */ -public class JSPELColorProvider { - - // people should not be setting these, even though they are currently not final - public static RGB MULTI_LINE_COMMENT = new RGB(128, 0, 0); - public static RGB SINGLE_LINE_COMMENT = new RGB(128, 128, 0); - public static RGB KEYWORD = new RGB(0, 0, 128); - public static RGB TYPE = new RGB(0, 0, 128); - public static RGB STRING = new RGB(0, 128, 0); - public static RGB DEFAULT = new RGB(0, 0, 0); - public static RGB JAVADOC_KEYWORD = new RGB(0, 128, 0); - public static RGB JAVADOC_TAG = new RGB(128, 128, 128); - public static RGB JAVADOC_LINK = new RGB(128, 128, 128); - public static RGB JAVADOC_DEFAULT = new RGB(0, 128, 128); - - public static int MULTI_LINE_COMMENT_BOLD = SWT.NORMAL; - public static int SINGLE_LINE_COMMENT_BOLD = SWT.NORMAL; - public static int KEYWORD_BOLD = SWT.BOLD; - public static int TYPE_BOLD = SWT.BOLD; - public static int STRING_BOLD = SWT.NORMAL; - public static int DEFAULT_BOLD = SWT.NORMAL; - public static int JAVADOC_KEYWORD_BOLD = SWT.BOLD; - public static int JAVADOC_TAG_BOLD = SWT.NORMAL; - public static int JAVADOC_LINK_BOLD = SWT.NORMAL; - public static int JAVADOC_DEFAULT_BOLD = SWT.NORMAL; - - /** - * @deprecated all editors use same - */ - public static RGB EDITOR_BACKGROUND = new RGB(255, 255, 255); - /** - * @deprecated all editors use same - */ - public static boolean EDITOR_CURRENT_LINE = true; - /** - * @deprecated all editors use same - */ - public static RGB EDITOR_CURRENT_LINE_COLOR = new RGB(128, 128, 128); - - private static JSPELColorProvider fInstance = null; - - public static JSPELColorProvider getInstance() { - if (fInstance == null) { - fInstance = new JSPELColorProvider(); - } - return fInstance; - } - - /** - * Use colors from JDT plugin - */ - public void loadJavaColors() { - - IPreferenceStore jdtStore = PreferenceConstants.getPreferenceStore(); - MULTI_LINE_COMMENT = PreferenceConverter.getColor(jdtStore, PreferenceConstants.EDITOR_MULTI_LINE_COMMENT_COLOR); - SINGLE_LINE_COMMENT = PreferenceConverter.getColor(jdtStore, PreferenceConstants.EDITOR_SINGLE_LINE_COMMENT_COLOR); - KEYWORD = PreferenceConverter.getColor(jdtStore, PreferenceConstants.EDITOR_JAVA_KEYWORD_COLOR); - TYPE = KEYWORD; - STRING = PreferenceConverter.getColor(jdtStore, PreferenceConstants.EDITOR_STRING_COLOR); - DEFAULT = PreferenceConverter.getColor(jdtStore, PreferenceConstants.EDITOR_JAVA_DEFAULT_COLOR); - JAVADOC_KEYWORD = PreferenceConverter.getColor(jdtStore, PreferenceConstants.EDITOR_JAVADOC_KEYWORD_COLOR); - JAVADOC_TAG = PreferenceConverter.getColor(jdtStore, PreferenceConstants.EDITOR_JAVADOC_TAG_COLOR); - JAVADOC_LINK = PreferenceConverter.getColor(jdtStore, PreferenceConstants.EDITOR_JAVADOC_LINKS_COLOR); - JAVADOC_DEFAULT = PreferenceConverter.getColor(jdtStore, PreferenceConstants.EDITOR_JAVADOC_DEFAULT_COLOR); - - MULTI_LINE_COMMENT_BOLD = jdtStore.getBoolean(PreferenceConstants.EDITOR_MULTI_LINE_COMMENT_BOLD) ? SWT.BOLD : SWT.NORMAL; - SINGLE_LINE_COMMENT_BOLD = jdtStore.getBoolean(PreferenceConstants.EDITOR_SINGLE_LINE_COMMENT_BOLD) ? SWT.BOLD : SWT.NORMAL; - KEYWORD_BOLD = jdtStore.getBoolean(PreferenceConstants.EDITOR_JAVA_KEYWORD_BOLD) ? SWT.BOLD : SWT.NORMAL; - TYPE_BOLD = jdtStore.getBoolean(PreferenceConstants.EDITOR_JAVA_KEYWORD_BOLD) ? SWT.BOLD : SWT.NORMAL; - STRING_BOLD = jdtStore.getBoolean(PreferenceConstants.EDITOR_STRING_BOLD) ? SWT.BOLD : SWT.NORMAL; - DEFAULT_BOLD = jdtStore.getBoolean(PreferenceConstants.EDITOR_JAVA_DEFAULT_BOLD) ? SWT.BOLD : SWT.NORMAL; - JAVADOC_TAG_BOLD = jdtStore.getBoolean(PreferenceConstants.EDITOR_JAVADOC_TAG_BOLD) ? SWT.BOLD : SWT.NORMAL; - JAVADOC_LINK_BOLD = jdtStore.getBoolean(PreferenceConstants.EDITOR_JAVADOC_LINKS_BOLD) ? SWT.BOLD : SWT.NORMAL; - JAVADOC_DEFAULT_BOLD = jdtStore.getBoolean(PreferenceConstants.EDITOR_JAVADOC_DEFAULT_BOLD) ? SWT.BOLD : SWT.NORMAL; - -// EDITOR_BACKGROUND = new RGB(255, 255, 255); - -// IPreferenceStore sseStore = SSEUIPlugin.getDefault().getPreferenceStore(); -// EDITOR_CURRENT_LINE = sseStore.getBoolean(AbstractDecoratedTextEditorPreferenceConstants.EDITOR_CURRENT_LINE); -// EDITOR_CURRENT_LINE_COLOR = PreferenceConverter.getColor(sseStore, AbstractDecoratedTextEditorPreferenceConstants.EDITOR_CURRENT_LINE_COLOR); - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/jspel/JSPELWhitespaceDetector.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/jspel/JSPELWhitespaceDetector.java deleted file mode 100644 index 5c2345d7e9..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/jspel/JSPELWhitespaceDetector.java +++ /dev/null @@ -1,26 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.style.jspel; - - - -/** - * A java aware white space detector. - */ -public class JSPELWhitespaceDetector implements org.eclipse.jface.text.rules.IWhitespaceDetector { - - /** - * @see org.eclipse.jface.text.rules.IWhitespaceDetector#isWhitespace - */ - public boolean isWhitespace(char c) { - return Character.isWhitespace(c); - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/jspel/JSPELWordDetector.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/jspel/JSPELWordDetector.java deleted file mode 100644 index 4676e239bf..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/jspel/JSPELWordDetector.java +++ /dev/null @@ -1,32 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.style.jspel; - - -/** - * A Java aware word detector. - */ -public class JSPELWordDetector implements org.eclipse.jface.text.rules.IWordDetector { - - /** - * @see org.eclipse.jface.text.rules.IWordDetector#isWordIdentifierPart - */ - public boolean isWordPart(char c) { - return Character.isJavaIdentifierPart(c); - } - - /** - * @see org.eclipse.jface.text.rules.IWordDetector#isWordIdentifierStart - */ - public boolean isWordStart(char c) { - return Character.isJavaIdentifierStart(c); - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/jspel/LineStyleProviderForJSPEL.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/jspel/LineStyleProviderForJSPEL.java deleted file mode 100644 index 8f000a0069..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/style/jspel/LineStyleProviderForJSPEL.java +++ /dev/null @@ -1,333 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.style.jspel; - -import java.util.Collection; -import java.util.HashMap; - -import org.eclipse.jdt.ui.PreferenceConstants; -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.preference.PreferenceConverter; -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.Document; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.ITypedRegion; -import org.eclipse.jface.text.TextAttribute; -import org.eclipse.jface.text.rules.IToken; -import org.eclipse.jface.text.rules.Token; -import org.eclipse.jface.util.IPropertyChangeListener; -import org.eclipse.jface.util.PropertyChangeEvent; -import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin; -import org.eclipse.jst.jsp.ui.internal.style.IStyleConstantsJSP; -import org.eclipse.jst.jsp.ui.internal.style.java.IStyleConstantsJSPJava; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.StyleRange; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.RGB; -import org.eclipse.swt.widgets.Display; -import org.eclipse.wst.html.ui.internal.style.IStyleConstantsHTML; -import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument; -import org.eclipse.wst.sse.ui.internal.preferences.ui.ColorHelper; -import org.eclipse.wst.sse.ui.internal.provisional.style.Highlighter; -import org.eclipse.wst.sse.ui.internal.provisional.style.LineStyleProvider; -import org.eclipse.wst.sse.ui.internal.util.EditorUtility; -import org.eclipse.wst.xml.ui.internal.style.IStyleConstantsXML; - -// Note: many of the methods in this class were based on (or copied from) -// those -// found in the example Java Editor -public class LineStyleProviderForJSPEL implements LineStyleProvider { - private class PropertyChangeListener implements IPropertyChangeListener { - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent) - */ - public void propertyChange(PropertyChangeEvent event) { - // have to do it this way so others can override the method - handlePropertyChange(event); - } - } - - private IDocument fDocument; - private Highlighter fHighlighter; - private boolean fIsInitialized = false; - private PropertyChangeListener fPreferenceListener = new PropertyChangeListener(); - /** The scanner it uses */ - private JSPELCodeScanner fScanner; - /** Contains all text attributes pretaining to this line style provider */ - private HashMap fTextAttributes = null; - - public LineStyleProviderForJSPEL() { - super(); - fScanner = new JSPELCodeScanner(); - } - - /** - * Adds style information to the given text presentation. - * - * @param presentation - * the text presentation to be extended - * @param offset - * the offset of the range to be styled - * @param length - * the length of the range to be styled - * @param attr - * the attribute describing the style of the range to be styled - */ - private void addRange(Collection presentation, int offset, int length, TextAttribute attr) { - // support for user defined backgroud for JSP scriptlet regions - String styleString = JSPUIPlugin.getDefault().getPreferenceStore().getString(IStyleConstantsJSP.JSP_CONTENT); - String[] prefs = ColorHelper.unpackStylePreferences(styleString); - Color bgColor = (prefs != null && prefs.length == 3 && prefs[1].startsWith("#") && Display.getCurrent() != null) //$NON-NLS-1$ - ? new Color(Display.getCurrent(), ColorHelper.toRGB(prefs[1])) : attr.getBackground(); - - presentation.add(new StyleRange(offset, length, attr.getForeground(), bgColor, attr.getStyle())); - } - - /** - * Looks up the colorKey in the preference store and adds the style - * information to list of TextAttributes - * - * @param colorKey - */ - private void addTextAttribute(String colorKey) { - if (getColorPreferences() != null) { - String prefString = getColorPreferences().getString(colorKey); - String[] stylePrefs = ColorHelper.unpackStylePreferences(prefString); - if (stylePrefs != null) { - RGB foreground = ColorHelper.toRGB(stylePrefs[0]); - RGB background = ColorHelper.toRGB(stylePrefs[1]); - boolean bold = Boolean.valueOf(stylePrefs[2]).booleanValue(); - getTextAttributes().put(colorKey, createTextAttribute(foreground, background, bold)); - } - } - } - - /** - * Looks up the colorKey in the preference store and adds the style - * information to list of TextAttributes - * - * @param colorKey - */ - private void addJavaTextAttribute(String colorKey) { - IPreferenceStore store = getJavaColorPreferences(); - if (store != null && colorKey != null) { - TextAttribute ta = null; - if (colorKey == IStyleConstantsJSPEL.EL_KEYWORD) { - // keyword - RGB foreground = PreferenceConverter.getColor(store, PreferenceConstants.EDITOR_JAVA_KEYWORD_COLOR); - boolean bold = store.getBoolean(PreferenceConstants.EDITOR_JAVA_KEYWORD_BOLD); - boolean italics = store.getBoolean(PreferenceConstants.EDITOR_JAVA_KEYWORD_ITALIC); - ta = createTextAttribute(foreground, null, bold, italics); - } else if (colorKey == IStyleConstantsJSPEL.EL_DEFAULT) { - // default - RGB foreground = PreferenceConverter.getColor(store, PreferenceConstants.EDITOR_JAVA_DEFAULT_COLOR); - boolean bold = store.getBoolean(PreferenceConstants.EDITOR_JAVA_DEFAULT_BOLD); - boolean italics = store.getBoolean(PreferenceConstants.EDITOR_JAVA_DEFAULT_ITALIC); - ta = createTextAttribute(foreground, null, bold, italics); - } - if (ta != null) { - getTextAttributes().put(colorKey, ta); - fScanner.setTokenData(colorKey, ta); - } - } - } - - private TextAttribute createTextAttribute(RGB foreground, RGB background, boolean bold) { - return new TextAttribute((foreground != null) ? EditorUtility.getColor(foreground) : null, (background != null) ? EditorUtility.getColor(background) : null, bold ? SWT.BOLD : SWT.NORMAL); - } - - private TextAttribute createTextAttribute(RGB foreground, RGB background, boolean bold, boolean italics) { - int style = bold ? SWT.BOLD : SWT.NORMAL; - if (italics) - style |= SWT.ITALIC; - - return new TextAttribute((foreground != null) ? EditorUtility.getColor(foreground) : null, (background != null) ? EditorUtility.getColor(background) : null, style); - } - - /** - * Returns the hashtable containing all the text attributes for this line - * style provider. Lazily creates a hashtable if one has not already been - * created. - * - * @return - */ - private HashMap getTextAttributes() { - if (fTextAttributes == null) { - fTextAttributes = new HashMap(); - loadColors(); - } - return fTextAttributes; - } - - /** - * Returns a text attribute encoded in the given token. If the token's - * data is not <code>null</code> and a text attribute it is assumed that - * it is the encoded text attribute. It returns the default text attribute - * if there is no encoded text attribute found. - * - * @param token - * the token whose text attribute is to be determined - * @return the token's text attribute - */ - private TextAttribute getTokenTextAttribute(IToken token) { - TextAttribute ta = null; - - Object data = token.getData(); - if (data instanceof TextAttribute) - ta = (TextAttribute) data; - else { - ta = (TextAttribute) getTextAttributes().get(IStyleConstantsJSPJava.JAVA_DEFAULT); - } - return ta; - } - - public void init(IStructuredDocument document, Highlighter highlighter) { - fDocument = document; - fHighlighter = highlighter; - - if (fIsInitialized) - return; - - registerPreferenceListener(); - - fIsInitialized = true; - } - - private void loadColors() { - addTextAttribute(IStyleConstantsHTML.SCRIPT_AREA_BORDER); - addTextAttribute(IStyleConstantsXML.TAG_ATTRIBUTE_NAME); - addTextAttribute(IStyleConstantsXML.TAG_ATTRIBUTE_VALUE); - - addJavaTextAttribute(IStyleConstantsJSPJava.JAVA_KEYWORD); - addJavaTextAttribute(IStyleConstantsJSPJava.JAVA_DEFAULT); - - fScanner.initializeRules(); - } - - protected void handlePropertyChange(PropertyChangeEvent event) { - String styleKey = null; - String javaStyleKey = null; - - if (event != null) { - String prefKey = event.getProperty(); - // check if preference changed is a style preference - if (IStyleConstantsHTML.SCRIPT_AREA_BORDER.equals(prefKey)) { - styleKey = IStyleConstantsHTML.SCRIPT_AREA_BORDER; - } else if (IStyleConstantsXML.TAG_ATTRIBUTE_NAME.equals(prefKey)) { - styleKey = IStyleConstantsXML.TAG_ATTRIBUTE_NAME; - } else if (IStyleConstantsXML.TAG_ATTRIBUTE_VALUE.equals(prefKey)) { - styleKey = IStyleConstantsXML.TAG_ATTRIBUTE_VALUE; - } else if (PreferenceConstants.EDITOR_JAVA_KEYWORD_COLOR.equals(prefKey) || (PreferenceConstants.EDITOR_JAVA_KEYWORD_BOLD.equals(prefKey)) || (PreferenceConstants.EDITOR_JAVA_KEYWORD_ITALIC.equals(prefKey))) { - javaStyleKey = IStyleConstantsJSPEL.EL_KEYWORD; - } else if (PreferenceConstants.EDITOR_JAVA_DEFAULT_COLOR.equals(prefKey) || (PreferenceConstants.EDITOR_JAVA_DEFAULT_BOLD.equals(prefKey)) || (PreferenceConstants.EDITOR_JAVA_DEFAULT_ITALIC.equals(prefKey))) { - javaStyleKey = IStyleConstantsJSPEL.EL_DEFAULT; - } - } - - if (styleKey != null) { - // overwrite style preference with new value - addTextAttribute(styleKey); - } - if (javaStyleKey != null) { - // overwrite style preference with new value - addJavaTextAttribute(javaStyleKey); - fScanner.initializeRules(); - } - if (styleKey != null || javaStyleKey != null) { - // force a full update of the text viewer - fHighlighter.refreshDisplay(); - } - } - - public boolean prepareRegions(ITypedRegion typedRegion, int ssssrequestedStart, int ssssrequestedLength, Collection holdResults) { - boolean result = true; - try { - // ideally, eventually, we'll have a "virtualDocument" we can - // refer to, but for now ... we'll simple rescan the one region. - // use simple adjustment (since "sub-content" starts at 0 - int offsetAdjustment = typedRegion.getOffset(); - String content = fDocument.get(typedRegion.getOffset(), typedRegion.getLength()); - IDocument document = new Document(content); - - int lastStart = 0; - int length = 0; - IToken lastToken = Token.UNDEFINED; - - int remainingLength = typedRegion.getLength(); - fScanner.setRange(document, lastStart, remainingLength); - - while (true) { - - IToken token = fScanner.nextToken(); - - if (token.isEOF()) { - if (!lastToken.isUndefined() && length != 0) - addRange(holdResults, lastStart + offsetAdjustment, length, getTokenTextAttribute(lastToken)); - break; - } - - if (token.isWhitespace()) { - length += fScanner.getTokenLength(); - continue; - } - - if (lastToken.isUndefined()) { - lastToken = token; - length += fScanner.getTokenLength(); - continue; - } - - if (token != lastToken) { - addRange(holdResults, lastStart + offsetAdjustment, length, getTokenTextAttribute(lastToken)); - lastToken = token; - lastStart = fScanner.getTokenOffset(); - length = fScanner.getTokenLength(); - continue; - } - - length += fScanner.getTokenLength(); - } - } catch (BadLocationException e) { - // shouldn't happen, but we don't want it to stop other - // highlighting, if it does. - result = false; - } - return result; - } - - private void registerPreferenceListener() { - getColorPreferences().addPropertyChangeListener(fPreferenceListener); - getJavaColorPreferences().addPropertyChangeListener(fPreferenceListener); - } - - public void release() { - unRegisterPreferenceManager(); - if (fTextAttributes != null) { - fTextAttributes.clear(); - fTextAttributes = null; - } - } - - private void unRegisterPreferenceManager() { - getColorPreferences().removePropertyChangeListener(fPreferenceListener); - getJavaColorPreferences().removePropertyChangeListener(fPreferenceListener); - } - - private IPreferenceStore getColorPreferences() { - return JSPUIPlugin.getDefault().getPreferenceStore(); - } - - private IPreferenceStore getJavaColorPreferences() { - return PreferenceConstants.getPreferenceStore(); - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/HTMLPrinter.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/HTMLPrinter.java deleted file mode 100644 index 031b10839f..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/HTMLPrinter.java +++ /dev/null @@ -1,223 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.taginfo; - - -import java.io.IOException; -import java.io.Reader; -import java.net.URL; - -import org.eclipse.jst.jsp.ui.internal.Logger; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.RGB; -import org.eclipse.swt.widgets.Display; - - -/** - * Provides a set of convenience methods for creating HTML pages. - * - * Based on org.eclipse.jdt.internal.ui.text.HTMLPrinter - */ -class HTMLPrinter { - - static RGB BG_COLOR_RGB = null; - - static { - // try to do in advance - getSystemBGColor(); - } - - private static RGB getSystemBGColor() { - RGB result = null; - if (BG_COLOR_RGB == null) { - final Display display = Display.getCurrent(); - if (display != null && !display.isDisposed()) { - - display.asyncExec(new Runnable() { - public void run() { - if (display != null && !display.isDisposed()) { - BG_COLOR_RGB = display.getSystemColor(SWT.COLOR_INFO_BACKGROUND).getRGB(); - } - } - }); - - } - } - else { - result = BG_COLOR_RGB; - } - return result; - } - - private HTMLPrinter() { - super(); - } - - private static String replace(String text, char c, String s) { - - int previous = 0; - int current = text.indexOf(c, previous); - - if (current == -1) - return text; - - StringBuffer buffer = new StringBuffer(); - while (current > -1) { - buffer.append(text.substring(previous, current)); - buffer.append(s); - previous = current + 1; - current = text.indexOf(c, previous); - } - buffer.append(text.substring(previous)); - - return buffer.toString(); - } - - public static String convertToHTMLContent(String content) { - content = replace(content, '<', "<"); //$NON-NLS-1$ - return replace(content, '>', ">"); //$NON-NLS-1$ - } - - static String read(Reader rd) { - - StringBuffer buffer = new StringBuffer(); - char[] readBuffer = new char[2048]; - - try { - int n = rd.read(readBuffer); - while (n > 0) { - buffer.append(readBuffer, 0, n); - n = rd.read(readBuffer); - } - return buffer.toString(); - } - catch (IOException x) { - // never expected - Logger.logException(x); - } - - return null; - } - - public static void insertPageProlog(StringBuffer buffer, int position, RGB bgRGB, URL styleSheetURL) { - - if (bgRGB == null) - insertPageProlog(buffer, position, styleSheetURL); - else { - StringBuffer pageProlog = new StringBuffer(300); - - pageProlog.append("<html>"); //$NON-NLS-1$ - - appendStyleSheetLink(pageProlog, styleSheetURL); - - pageProlog.append("<body text=\"#000000\" bgcolor=\""); //$NON-NLS-1$ - appendColor(pageProlog, bgRGB); - pageProlog.append("\"><font size=-1>"); //$NON-NLS-1$ - - buffer.insert(position, pageProlog.toString()); - } - } - - public static void insertPageProlog(StringBuffer buffer, int position, RGB bgRGB) { - if (bgRGB == null) - insertPageProlog(buffer, position); - else { - StringBuffer pageProlog = new StringBuffer(60); - pageProlog.append("<html><body text=\"#000000\" bgcolor=\""); //$NON-NLS-1$ - appendColor(pageProlog, bgRGB); - pageProlog.append("\"><font size=-1>"); //$NON-NLS-1$ - buffer.insert(position, pageProlog.toString()); - } - } - - private static void appendStyleSheetLink(StringBuffer buffer, URL styleSheetURL) { - if (styleSheetURL == null) - return; - - buffer.append("<head>"); //$NON-NLS-1$ - - buffer.append("<LINK REL=\"stylesheet\" HREF= \""); //$NON-NLS-1$ - buffer.append(styleSheetURL); - buffer.append("\" CHARSET=\"ISO-8859-1\" TYPE=\"text/css\">"); //$NON-NLS-1$ - - buffer.append("</head>"); //$NON-NLS-1$ - } - - private static void appendColor(StringBuffer buffer, RGB rgb) { - buffer.append('#'); - buffer.append(Integer.toHexString(rgb.red)); - buffer.append(Integer.toHexString(rgb.green)); - buffer.append(Integer.toHexString(rgb.blue)); - } - - public static void insertPageProlog(StringBuffer buffer, int position) { - insertPageProlog(buffer, position, getBgColor()); //$NON-NLS-1$ - } - - public static void insertPageProlog(StringBuffer buffer, int position, URL styleSheetURL) { - insertPageProlog(buffer, position, getBgColor(), styleSheetURL); //$NON-NLS-1$ - } - - static RGB getBgColor() { - RGB result = getSystemBGColor(); - if (result == null) { - // use RGB value of default info bg color - // on WindowsXP - result = new RGB(255, 255, 225); - } - return result; - - } - - public static void addPageProlog(StringBuffer buffer) { - insertPageProlog(buffer, buffer.length()); - } - - public static void addPageEpilog(StringBuffer buffer) { - buffer.append("</font></body></html>"); //$NON-NLS-1$ - } - - public static void startBulletList(StringBuffer buffer) { - buffer.append("<ul>"); //$NON-NLS-1$ - } - - public static void endBulletList(StringBuffer buffer) { - buffer.append("</ul>"); //$NON-NLS-1$ - } - - public static void addBullet(StringBuffer buffer, String bullet) { - if (bullet != null) { - buffer.append("<li>"); //$NON-NLS-1$ - buffer.append(bullet); - buffer.append("</li>"); //$NON-NLS-1$ - } - } - - public static void addSmallHeader(StringBuffer buffer, String header) { - if (header != null) { - buffer.append("<h5>"); //$NON-NLS-1$ - buffer.append(header); - buffer.append("</h5>"); //$NON-NLS-1$ - } - } - - public static void addParagraph(StringBuffer buffer, String paragraph) { - if (paragraph != null) { - buffer.append("<p>"); //$NON-NLS-1$ - buffer.append(paragraph); - } - } - - public static void addParagraph(StringBuffer buffer, Reader paragraphReader) { - if (paragraphReader != null) - addParagraph(buffer, read(paragraphReader)); - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/JSPJavaJavadocHoverProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/JSPJavaJavadocHoverProcessor.java deleted file mode 100644 index 7ee1293ea8..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/JSPJavaJavadocHoverProcessor.java +++ /dev/null @@ -1,129 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.taginfo; - -import java.io.Reader; - -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.IMember; -import org.eclipse.jdt.core.JavaModelException; -import org.eclipse.jdt.ui.JavaElementLabels; -import org.eclipse.jdt.ui.JavadocContentAccess; -import org.eclipse.jface.text.IRegion; -import org.eclipse.jface.text.ITextHover; -import org.eclipse.jface.text.ITextViewer; -import org.eclipse.jst.jsp.core.internal.java.IJSPTranslation; -import org.eclipse.jst.jsp.core.internal.java.JSPTranslation; -import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapter; -import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; - -/** - * Provides javadoc hover help documentation for java code inside JSPs - */ -public class JSPJavaJavadocHoverProcessor implements ITextHover { - private final long LABEL_FLAGS= JavaElementLabels.ALL_FULLY_QUALIFIED - | JavaElementLabels.M_PRE_RETURNTYPE | JavaElementLabels.M_PARAMETER_TYPES | JavaElementLabels.M_PARAMETER_NAMES | JavaElementLabels.M_EXCEPTIONS - | JavaElementLabels.F_PRE_TYPE_SIGNATURE; - - private String getInfoText(IJavaElement member) { - String label= JavaElementLabels.getElementLabel(member, LABEL_FLAGS); - StringBuffer buf= new StringBuffer(); - for (int i= 0; i < label.length(); i++) { - char ch= label.charAt(i); - if (ch == '<') { - buf.append("<"); //$NON-NLS-1$ - } else if (ch == '>') { - buf.append(">"); //$NON-NLS-1$ - } else { - buf.append(ch); - } - } - return buf.toString(); - } - - private String getHoverInfo(IJavaElement[] result) { - StringBuffer buffer= new StringBuffer(); - int nResults= result.length; - if (nResults == 0) - return null; - - if (nResults > 1) { - - for (int i= 0; i < result.length; i++) { - HTMLPrinter.startBulletList(buffer); - IJavaElement curr= result[i]; - if (curr instanceof IMember || curr.getElementType() == IJavaElement.LOCAL_VARIABLE) - HTMLPrinter.addBullet(buffer, getInfoText(curr)); - HTMLPrinter.endBulletList(buffer); - } - - } else { - - IJavaElement curr= result[0]; - if (curr instanceof IMember) { - IMember member= (IMember) curr; - HTMLPrinter.addSmallHeader(buffer, getInfoText(member)); - Reader reader; - try { - reader= JavadocContentAccess.getHTMLContentReader(member, true); - } catch (JavaModelException ex) { - return null; - } - if (reader != null) { - HTMLPrinter.addParagraph(buffer, reader); - } - } else if (curr.getElementType() == IJavaElement.LOCAL_VARIABLE) - HTMLPrinter.addSmallHeader(buffer, getInfoText(curr)); - } - - if (buffer.length() > 0) { - HTMLPrinter.insertPageProlog(buffer, 0); - HTMLPrinter.addPageEpilog(buffer); - return buffer.toString(); - } - - return null; - } - - /* (non-Javadoc) - * @see org.eclipse.jface.text.ITextHover#getHoverInfo(org.eclipse.jface.text.ITextViewer, org.eclipse.jface.text.IRegion) - */ - public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) { - // get JSP translation object for this viewer's document - IDOMModel xmlModel = (IDOMModel) StructuredModelManager.getModelManager().getExistingModelForRead(textViewer.getDocument()); - try { - if(xmlModel != null) { - IDOMDocument xmlDoc = xmlModel.getDocument(); - JSPTranslationAdapter adapter = (JSPTranslationAdapter) xmlDoc.getAdapterFor(IJSPTranslation.class); - if (adapter != null) { - JSPTranslation translation = adapter.getJSPTranslation(); - IJavaElement[] result = translation.getElementsFromJspRange(hoverRegion.getOffset(), hoverRegion.getOffset() + hoverRegion.getLength()); - return getHoverInfo(result); - } - } - } - finally { - if(xmlModel != null) - xmlModel.releaseFromRead(); - } - return null; - } - - /* (non-Javadoc) - * @see org.eclipse.jface.text.ITextHover#getHoverRegion(org.eclipse.jface.text.ITextViewer, int) - */ - public IRegion getHoverRegion(ITextViewer textViewer, int offset) { - return JavaWordFinder.findWord(textViewer.getDocument(), offset); - } - -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/JSPTagInfoHoverProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/JSPTagInfoHoverProcessor.java deleted file mode 100644 index 2a234ca745..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/JSPTagInfoHoverProcessor.java +++ /dev/null @@ -1,51 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.taginfo; - - - -import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts; -import org.eclipse.wst.html.ui.internal.taginfo.HTMLTagInfoHoverProcessor; -import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion; -import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion; -import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode; - -/** - * Provides hover help documentation for JSP tags - */ -public class JSPTagInfoHoverProcessor extends HTMLTagInfoHoverProcessor { - - protected String computeRegionHelp(IndexedRegion treeNode, IDOMNode parentNode, IStructuredDocumentRegion flatNode, ITextRegion region) { - String result = null; - - if (region == null) - return null; - - String regionType = region.getType(); - if (regionType == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME) { - result = computeJSPDirHelp((IDOMNode) treeNode, parentNode, flatNode, region); - } - else - result = super.computeRegionHelp(treeNode, parentNode, flatNode, region); - - return result; - } - - /** - * Computes the hover help for the jsp directive name - * for now, treat jsp directives like any other tag name - */ - protected String computeJSPDirHelp(IDOMNode xmlnode, IDOMNode parentNode, IStructuredDocumentRegion flatNode, ITextRegion region) { - return computeTagNameHelp(xmlnode, parentNode, flatNode, region); - } - -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/JavaWordFinder.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/JavaWordFinder.java deleted file mode 100644 index d3c5b67122..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/JavaWordFinder.java +++ /dev/null @@ -1,69 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.taginfo; - -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.IRegion; -import org.eclipse.jface.text.Region; - -/** - * Copied from org.eclipse.jdt.internal.ui.text.JavaWordFinder - */ -class JavaWordFinder { - - public static IRegion findWord(IDocument document, int offset) { - - int start= -1; - int end= -1; - - - try { - - int pos= offset; - char c; - - while (pos >= 0) { - c= document.getChar(pos); - if (!Character.isJavaIdentifierPart(c)) - break; - --pos; - } - - start= pos; - - pos= offset; - int length= document.getLength(); - - while (pos < length) { - c= document.getChar(pos); - if (!Character.isJavaIdentifierPart(c)) - break; - ++pos; - } - - end= pos; - - } catch (BadLocationException x) { - } - - if (start > -1 && end > -1) { - if (start == offset && end == offset) - return new Region(offset, 0); - else if (start == offset) - return new Region(start, end - start); - else - return new Region(start + 1, end - start - 1); - } - - return null; - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/templates/EncodingTemplateVariableResolverJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/templates/EncodingTemplateVariableResolverJSP.java deleted file mode 100644 index 23b1058209..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/templates/EncodingTemplateVariableResolverJSP.java +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - * - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.templates; - -import org.eclipse.jface.text.templates.SimpleTemplateVariableResolver; -import org.eclipse.jface.text.templates.TemplateContext; -import org.eclipse.jst.jsp.core.internal.JSPCorePlugin; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; -import org.eclipse.wst.sse.core.internal.encoding.CommonEncodingPreferenceNames; - - -public class EncodingTemplateVariableResolverJSP extends SimpleTemplateVariableResolver { - private static final String ENCODING_TYPE = getEncodingType(); - - private static String getEncodingType() { - return "encoding"; //$NON-NLS-1$ - } - - /** - * Creates a new encoding variable - */ - public EncodingTemplateVariableResolverJSP() { - super(ENCODING_TYPE, JSPUIMessages.Creating_files_encoding); - } - - protected String resolve(TemplateContext context) { - return JSPCorePlugin.getDefault().getPluginPreferences().getString(CommonEncodingPreferenceNames.OUTPUT_CODESET); - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/templates/TemplateContextTypeIdsJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/templates/TemplateContextTypeIdsJSP.java deleted file mode 100644 index 8e5d9e3743..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/templates/TemplateContextTypeIdsJSP.java +++ /dev/null @@ -1,50 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - * - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.templates; - - -public class TemplateContextTypeIdsJSP { - - public static final String ALL = getAll(); - - public static final String ATTRIBUTE = getAttribute(); - - public static final String ATTRIBUTE_VALUE = getAttributeValue(); - - public static final String NEW = getNew(); - - public static final String TAG = getTag(); - - private static String getAll() { - return getPrefix() + "_all"; //$NON-NLS-1$ - } - - private static String getAttribute() { - return getPrefix() + "_attribute"; //$NON-NLS-1$ - } - - private static String getAttributeValue() { - return getPrefix() + "_attribute_value"; //$NON-NLS-1$ - } - - private static String getNew() { - return getPrefix() + "_new"; //$NON-NLS-1$ - } - - private static String getPrefix() { - return "jsp"; //$NON-NLS-1$ - } - - private static String getTag() { - return getPrefix() + "_tag"; //$NON-NLS-1$ - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/templates/TemplateContextTypeJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/templates/TemplateContextTypeJSP.java deleted file mode 100644 index a907d25af5..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/templates/TemplateContextTypeJSP.java +++ /dev/null @@ -1,33 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.templates; - -import org.eclipse.jface.text.templates.GlobalTemplateVariables; -import org.eclipse.jface.text.templates.TemplateContextType; - -/** - * Base class for JSP template context types. Templates of this context type - * apply to any place within JSP content type. - */ -public class TemplateContextTypeJSP extends TemplateContextType { - public TemplateContextTypeJSP() { - super(); - addResolver(new GlobalTemplateVariables.Cursor()); - addResolver(new GlobalTemplateVariables.Date()); - addResolver(new GlobalTemplateVariables.Dollar()); - addResolver(new GlobalTemplateVariables.LineSelection()); - addResolver(new GlobalTemplateVariables.Time()); - addResolver(new GlobalTemplateVariables.User()); - addResolver(new GlobalTemplateVariables.WordSelection()); - addResolver(new GlobalTemplateVariables.Year()); - addResolver(new EncodingTemplateVariableResolverJSP()); - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/text/JSPDocumentRegionEdgeMatcher.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/text/JSPDocumentRegionEdgeMatcher.java deleted file mode 100644 index ae12677b8a..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/text/JSPDocumentRegionEdgeMatcher.java +++ /dev/null @@ -1,28 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.text; - -import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts; -import org.eclipse.wst.sse.ui.internal.text.DocumentRegionEdgeMatcher; -import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext; - -public class JSPDocumentRegionEdgeMatcher extends DocumentRegionEdgeMatcher { - - protected final static char[] BRACKETS = {'{', '}', '(', ')', '[', ']'}; - - /** - * @param validContexts - * @param nextMatcher - */ - public JSPDocumentRegionEdgeMatcher() { - super(new String[]{DOMRegionContext.XML_TAG_NAME, DOMRegionContext.XML_COMMENT_TEXT, DOMJSPRegionContexts.JSP_COMMENT_TEXT, DOMJSPRegionContexts.JSP_DIRECTIVE_NAME, DOMJSPRegionContexts.JSP_ROOT_TAG_NAME, DOMRegionContext.XML_CDATA_TEXT, DOMRegionContext.XML_PI_OPEN, DOMRegionContext.XML_PI_CONTENT}, new JavaPairMatcher(BRACKETS)); - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/text/JavaCodeReader.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/text/JavaCodeReader.java deleted file mode 100644 index 2483dd26d4..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/text/JavaCodeReader.java +++ /dev/null @@ -1,252 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -/* - * Created on Sep 2, 2003 - * - * To change the template for this generated file go to - * Window>Preferences>Java>Code Generation>Code and Comments - */ -package org.eclipse.jst.jsp.ui.internal.text; - -import java.io.IOException; - -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jst.jsp.ui.internal.derived.SingleCharReader; - - -/** - * Reads from a document either forwards or backwards. May be configured to - * skip comments and strings. - * - * Copied from org.eclipse.jdt.internal.ui.text so we don't have to - * depend on the org.eclipse.jdt.ui plugin. - * - * No modifications were made. - */ -class JavaCodeReader extends SingleCharReader { - - /** The EOF character */ - public static final int EOF = -1; - - private boolean fSkipComments = false; - private boolean fSkipStrings = false; - private boolean fForward = false; - - private IDocument fDocument; - private int fOffset; - - private int fEnd = -1; - private int fCachedLineNumber = -1; - private int fCachedLineOffset = -1; - - - public JavaCodeReader() { - } - - /** - * Returns the offset of the last read character. Should only be called after read has been called. - */ - public int getOffset() { - return fForward ? fOffset - 1 : fOffset; - } - - public void configureForwardReader(IDocument document, int offset, int length, boolean skipComments, boolean skipStrings) throws IOException { - fDocument = document; - fOffset = offset; - fSkipComments = skipComments; - fSkipStrings = skipStrings; - - fForward = true; - fEnd = Math.min(fDocument.getLength(), fOffset + length); - } - - public void configureBackwardReader(IDocument document, int offset, boolean skipComments, boolean skipStrings) throws IOException { - fDocument = document; - fOffset = offset; - fSkipComments = skipComments; - fSkipStrings = skipStrings; - - fForward = false; - try { - fCachedLineNumber = fDocument.getLineOfOffset(fOffset); - } - catch (BadLocationException x) { - throw new IOException(x.getMessage()); - } - } - - /* - * @see Reader#close() - */ - public void close() throws IOException { - fDocument = null; - } - - /* - * @see SingleCharReader#read() - */ - public int read() throws IOException { - try { - return fForward ? readForwards() : readBackwards(); - } - catch (BadLocationException x) { - throw new IOException(x.getMessage()); - } - } - - private void gotoCommentEnd() throws BadLocationException { - while (fOffset < fEnd) { - char current = fDocument.getChar(fOffset++); - if (current == '*') { - if (fOffset < fEnd && fDocument.getChar(fOffset) == '/') { - ++fOffset; - return; - } - } - } - } - - private void gotoStringEnd(char delimiter) throws BadLocationException { - while (fOffset < fEnd) { - char current = fDocument.getChar(fOffset++); - if (current == '\\') { - // ignore escaped characters - ++fOffset; - } - else if (current == delimiter) { - return; - } - } - } - - private void gotoLineEnd() throws BadLocationException { - int line = fDocument.getLineOfOffset(fOffset); - fOffset = fDocument.getLineOffset(line + 1); - } - - private int readForwards() throws BadLocationException { - while (fOffset < fEnd) { - char current = fDocument.getChar(fOffset++); - - switch (current) { - case '/' : - - if (fSkipComments && fOffset < fEnd) { - char next = fDocument.getChar(fOffset); - if (next == '*') { - // a comment starts, advance to the comment end - ++fOffset; - gotoCommentEnd(); - continue; - } - else if (next == '/') { - // '//'-comment starts, advance to the line end - gotoLineEnd(); - continue; - } - } - - return current; - - case '"' : - case '\'' : - - if (fSkipStrings) { - gotoStringEnd(current); - continue; - } - - return current; - } - - return current; - } - - return EOF; - } - - private void handleSingleLineComment() throws BadLocationException { - int line = fDocument.getLineOfOffset(fOffset); - if (line < fCachedLineNumber) { - fCachedLineNumber = line; - fCachedLineOffset = fDocument.getLineOffset(line); - int offset = fOffset; - while (fCachedLineOffset < offset) { - char current = fDocument.getChar(offset--); - if (current == '/' && fCachedLineOffset <= offset && fDocument.getChar(offset) == '/') { - fOffset = offset; - return; - } - } - } - } - - private void gotoCommentStart() throws BadLocationException { - while (0 < fOffset) { - char current = fDocument.getChar(fOffset--); - if (current == '*' && 0 <= fOffset && fDocument.getChar(fOffset) == '/') - return; - } - } - - private void gotoStringStart(char delimiter) throws BadLocationException { - while (0 < fOffset) { - char current = fDocument.getChar(fOffset); - if (current == delimiter) { - if (!(0 <= fOffset && fDocument.getChar(fOffset - 1) == '\\')) - return; - } - --fOffset; - } - } - - private int readBackwards() throws BadLocationException { - - while (0 < fOffset) { - --fOffset; - - handleSingleLineComment(); - - char current = fDocument.getChar(fOffset); - switch (current) { - case '/' : - - if (fSkipComments && fOffset > 1) { - char next = fDocument.getChar(fOffset - 1); - if (next == '*') { - // a comment ends, advance to the comment start - fOffset -= 2; - gotoCommentStart(); - continue; - } - } - - return current; - - case '"' : - case '\'' : - - if (fSkipStrings) { - --fOffset; - gotoStringStart(current); - continue; - } - - return current; - } - - return current; - } - - return EOF; - } -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/text/JavaPairMatcher.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/text/JavaPairMatcher.java deleted file mode 100644 index 0a55e93c26..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/text/JavaPairMatcher.java +++ /dev/null @@ -1,202 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.internal.text; - -import java.io.IOException; - -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.IRegion; -import org.eclipse.jface.text.Region; -import org.eclipse.jface.text.source.ICharacterPairMatcher; - - -/** - * Helper class for match pairs of characters. - * - * Copied from org.eclipse.jdt.internal.ui.text so we don't have to - * depend on the org.eclipse.jdt.ui plugin. - * - * No modifications were made. - */ -class JavaPairMatcher implements ICharacterPairMatcher { - - protected char[] fPairs; - protected IDocument fDocument; - protected int fOffset; - - protected int fStartPos; - protected int fEndPos; - protected int fAnchor; - - protected JavaCodeReader fReader = new JavaCodeReader(); - - - public JavaPairMatcher(char[] pairs) { - fPairs = pairs; - } - - /* (non-Javadoc) - * @see org.eclipse.jface.text.source.ICharacterPairMatcher#match(org.eclipse.jface.text.IDocument, int) - */ - public IRegion match(IDocument document, int offset) { - - fOffset = offset; - - if (fOffset < 0) - return null; - - fDocument = document; - - if (fDocument != null && matchPairsAt() && fStartPos != fEndPos) - return new Region(fStartPos, fEndPos - fStartPos + 1); - - return null; - } - - /* (non-Javadoc) - * @see org.eclipse.jface.text.source.ICharacterPairMatcher#getAnchor() - */ - public int getAnchor() { - return fAnchor; - } - - /* (non-Javadoc) - * @see org.eclipse.jface.text.source.ICharacterPairMatcher#dispose() - */ - public void dispose() { - clear(); - fDocument = null; - fReader = null; - } - - /* - * @see org.eclipse.jface.text.source.ICharacterPairMatcher#clear() - */ - public void clear() { - if (fReader != null) { - try { - fReader.close(); - } - catch (IOException x) { - // ignore - } - } - } - - protected boolean matchPairsAt() { - - int i; - int pairIndex1 = fPairs.length; - int pairIndex2 = fPairs.length; - - fStartPos = -1; - fEndPos = -1; - - // get the chars preceding and following the start position - try { - - char prevChar = fDocument.getChar(Math.max(fOffset - 1, 0)); - // modified behavior for http://dev.eclipse.org/bugs/show_bug.cgi?id=16879 - // char nextChar= fDocument.getChar(fOffset); - - // search for opening peer character next to the activation point - for (i = 0; i < fPairs.length; i = i + 2) { - // if (nextChar == fPairs[i]) { - // fStartPos= fOffset; - // pairIndex1= i; - // } else - if (prevChar == fPairs[i]) { - fStartPos = fOffset - 1; - pairIndex1 = i; - } - } - - // search for closing peer character next to the activation point - for (i = 1; i < fPairs.length; i = i + 2) { - if (prevChar == fPairs[i]) { - fEndPos = fOffset - 1; - pairIndex2 = i; - } - // else if (nextChar == fPairs[i]) { - // fEndPos= fOffset; - // pairIndex2= i; - // } - } - - if (fEndPos > -1) { - fAnchor = RIGHT; - fStartPos = searchForOpeningPeer(fEndPos, fPairs[pairIndex2 - 1], fPairs[pairIndex2], fDocument); - if (fStartPos > -1) - return true; - else - fEndPos = -1; - } - else if (fStartPos > -1) { - fAnchor = LEFT; - fEndPos = searchForClosingPeer(fStartPos, fPairs[pairIndex1], fPairs[pairIndex1 + 1], fDocument); - if (fEndPos > -1) - return true; - else - fStartPos = -1; - } - - } - catch (BadLocationException x) { - } - catch (IOException x) { - } - - return false; - } - - protected int searchForClosingPeer(int offset, int openingPeer, int closingPeer, IDocument document) throws IOException { - - fReader.configureForwardReader(document, offset + 1, document.getLength(), true, true); - - int stack = 1; - int c = fReader.read(); - while (c != JavaCodeReader.EOF) { - if (c == openingPeer && c != closingPeer) - stack++; - else if (c == closingPeer) - stack--; - - if (stack == 0) - return fReader.getOffset(); - - c = fReader.read(); - } - - return -1; - } - - protected int searchForOpeningPeer(int offset, int openingPeer, int closingPeer, IDocument document) throws IOException { - - fReader.configureBackwardReader(document, offset, true, true); - - int stack = 1; - int c = fReader.read(); - while (c != JavaCodeReader.EOF) { - if (c == closingPeer && c != openingPeer) - stack++; - else if (c == openingPeer) - stack--; - - if (stack == 0) - return fReader.getOffset(); - - c = fReader.read(); - } - - return -1; - } -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/wizard/NewJSPTemplatesWizardPage.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/wizard/NewJSPTemplatesWizardPage.java deleted file mode 100644 index 95ece8c58c..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/wizard/NewJSPTemplatesWizardPage.java +++ /dev/null @@ -1,474 +0,0 @@ -package org.eclipse.jst.jsp.ui.internal.wizard; - -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.preference.PreferenceDialog; -import org.eclipse.jface.text.Document; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.source.SourceViewer; -import org.eclipse.jface.text.source.SourceViewerConfiguration; -import org.eclipse.jface.text.templates.DocumentTemplateContext; -import org.eclipse.jface.text.templates.Template; -import org.eclipse.jface.text.templates.TemplateBuffer; -import org.eclipse.jface.text.templates.TemplateContext; -import org.eclipse.jface.text.templates.TemplateContextType; -import org.eclipse.jface.text.templates.persistence.TemplateStore; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.IStructuredContentProvider; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.ITableLabelProvider; -import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.jface.viewers.SelectionChangedEvent; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jface.viewers.TableLayout; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jface.viewers.ViewerSorter; -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; -import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin; -import org.eclipse.jst.jsp.ui.internal.Logger; -import org.eclipse.jst.jsp.ui.internal.editor.IHelpContextIds; -import org.eclipse.jst.jsp.ui.internal.preferences.JSPUIPreferenceNames; -import org.eclipse.jst.jsp.ui.internal.templates.TemplateContextTypeIdsJSP; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.ControlAdapter; -import org.eclipse.swt.events.ControlEvent; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.graphics.Rectangle; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Link; -import org.eclipse.swt.widgets.Table; -import org.eclipse.swt.widgets.TableColumn; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.dialogs.PreferencesUtil; - -/** - * Templates page in new file wizard. Allows users to select a new file - * template to be applied in new file. - * - */ -public class NewJSPTemplatesWizardPage extends WizardPage { - - /** - * Content provider for templates - */ - private class TemplateContentProvider implements IStructuredContentProvider { - /** The template store. */ - private TemplateStore fStore; - - /* - * @see IContentProvider#dispose() - */ - public void dispose() { - fStore = null; - } - - /* - * @see IStructuredContentProvider#getElements(Object) - */ - public Object[] getElements(Object input) { - return fStore.getTemplates(TemplateContextTypeIdsJSP.NEW); - } - - /* - * @see IContentProvider#inputChanged(Viewer, Object, Object) - */ - public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - fStore = (TemplateStore) newInput; - } - } - - /** - * Label provider for templates. - */ - private class TemplateLabelProvider extends LabelProvider implements ITableLabelProvider { - - /* - * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, - * int) - */ - public Image getColumnImage(Object element, int columnIndex) { - return null; - } - - /* - * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, - * int) - */ - public String getColumnText(Object element, int columnIndex) { - Template template = (Template) element; - - switch (columnIndex) { - case 0 : - return template.getName(); - case 1 : - return template.getDescription(); - default : - return ""; //$NON-NLS-1$ - } - } - } - - /** Last selected template name */ - private String fLastSelectedTemplateName; - /** The viewer displays the pattern of selected template. */ - private SourceViewer fPatternViewer; - /** The table presenting the templates. */ - private TableViewer fTableViewer; - /** Template store used by this wizard page */ - private TemplateStore fTemplateStore; - /** Checkbox for using templates. */ - private Button fUseTemplateButton; - - public NewJSPTemplatesWizardPage() { - super("NewJSPTemplatesWizardPage", JSPUIMessages.NewJSPTemplatesWizardPage_0, null); //$NON-NLS-1$ - setDescription(JSPUIMessages.NewJSPTemplatesWizardPage_1); - } - - /** - * Correctly resizes the table so no phantom columns appear - * - * @param parent - * the parent control - * @param buttons - * the buttons - * @param table - * the table - * @param column1 - * the first column - * @param column2 - * the second column - * @param column3 - * the third column - */ - private void configureTableResizing(final Composite parent, final Table table, final TableColumn column1, final TableColumn column2) { - parent.addControlListener(new ControlAdapter() { - public void controlResized(ControlEvent e) { - Rectangle area = parent.getClientArea(); - Point preferredSize = table.computeSize(SWT.DEFAULT, SWT.DEFAULT); - int width = area.width - 2 * table.getBorderWidth(); - if (preferredSize.y > area.height) { - // Subtract the scrollbar width from the total column - // width - // if a vertical scrollbar will be required - Point vBarSize = table.getVerticalBar().getSize(); - width -= vBarSize.x; - } - - Point oldSize = table.getSize(); - if (oldSize.x > width) { - // table is getting smaller so make the columns - // smaller first and then resize the table to - // match the client area width - column1.setWidth(width / 2); - column2.setWidth(width / 2); - table.setSize(width, area.height); - } - else { - // table is getting bigger so make the table - // bigger first and then make the columns wider - // to match the client area width - table.setSize(width, area.height); - column1.setWidth(width / 2); - column2.setWidth(width / 2); - } - } - }); - } - - public void createControl(Composite ancestor) { - Composite parent = new Composite(ancestor, SWT.NONE); - GridLayout layout = new GridLayout(); - layout.numColumns = 2; - parent.setLayout(layout); - - // create checkbox for user to use JSP Template - fUseTemplateButton = new Button(parent, SWT.CHECK); - fUseTemplateButton.setText(JSPUIMessages.NewJSPTemplatesWizardPage_4); - GridData data = new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1); - fUseTemplateButton.setLayoutData(data); - fUseTemplateButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - enableTemplates(); - } - }); - - // create composite for Templates table - Composite innerParent = new Composite(parent, SWT.NONE); - GridLayout innerLayout = new GridLayout(); - innerLayout.numColumns = 2; - innerLayout.marginHeight = 0; - innerLayout.marginWidth = 0; - innerParent.setLayout(innerLayout); - GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1); - innerParent.setLayoutData(gd); - - // Create linked text to just to templates preference page - Link link = new Link(innerParent, SWT.NONE); - link.setText(JSPUIMessages.NewJSPTemplatesWizardPage_6); - data = new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1); - link.setLayoutData(data); - link.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - linkClicked(); - } - }); - - // create table that displays templates - Table table = new Table(innerParent, SWT.BORDER | SWT.FULL_SELECTION); - - data = new GridData(GridData.FILL_BOTH); - data.widthHint = convertWidthInCharsToPixels(2); - data.heightHint = convertHeightInCharsToPixels(10); - data.horizontalSpan = 2; - table.setLayoutData(data); - table.setHeaderVisible(true); - table.setLinesVisible(true); - TableLayout tableLayout = new TableLayout(); - table.setLayout(tableLayout); - - TableColumn column1 = new TableColumn(table, SWT.NONE); - column1.setText(JSPUIMessages.NewJSPTemplatesWizardPage_2); - - TableColumn column2 = new TableColumn(table, SWT.NONE); - column2.setText(JSPUIMessages.NewJSPTemplatesWizardPage_3); - - fTableViewer = new TableViewer(table); - fTableViewer.setLabelProvider(new TemplateLabelProvider()); - fTableViewer.setContentProvider(new TemplateContentProvider()); - - fTableViewer.setSorter(new ViewerSorter() { - public int compare(Viewer viewer, Object object1, Object object2) { - if ((object1 instanceof Template) && (object2 instanceof Template)) { - Template left = (Template) object1; - Template right = (Template) object2; - int result = left.getName().compareToIgnoreCase(right.getName()); - if (result != 0) - return result; - return left.getDescription().compareToIgnoreCase(right.getDescription()); - } - return super.compare(viewer, object1, object2); - } - - public boolean isSorterProperty(Object element, String property) { - return true; - } - }); - - fTableViewer.addSelectionChangedListener(new ISelectionChangedListener() { - public void selectionChanged(SelectionChangedEvent e) { - updateViewerInput(); - } - }); - - // create viewer that displays currently selected template's contents - fPatternViewer = doCreateViewer(parent); - - fTemplateStore = JSPUIPlugin.getDefault().getTemplateStore(); - fTableViewer.setInput(fTemplateStore); - - configureTableResizing(innerParent, table, column1, column2); - loadLastSavedPreferences(); - - PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, IHelpContextIds.JSP_NEWWIZARD_TEMPLATE_HELPID); - Dialog.applyDialogFont(parent); - setControl(parent); - } - - /** - * Creates, configures and returns a source viewer to present the template - * pattern on the preference page. Clients may override to provide a - * custom source viewer featuring e.g. syntax coloring. - * - * @param parent - * the parent control - * @return a configured source viewer - */ - private SourceViewer createViewer(Composite parent) { - SourceViewer viewer = new SourceViewer(parent, null, null, false, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); - SourceViewerConfiguration configuration = new SourceViewerConfiguration(); - viewer.configure(configuration); - IDocument document = new Document(); - viewer.setDocument(document); - return viewer; - } - - private SourceViewer doCreateViewer(Composite parent) { - Label label = new Label(parent, SWT.NONE); - label.setText(JSPUIMessages.NewJSPTemplatesWizardPage_5); - GridData data = new GridData(); - data.horizontalSpan = 2; - label.setLayoutData(data); - - SourceViewer viewer = createViewer(parent); - viewer.setEditable(false); - - Control control = viewer.getControl(); - data = new GridData(GridData.FILL_BOTH); - data.horizontalSpan = 2; - data.heightHint = convertHeightInCharsToPixels(5); - control.setLayoutData(data); - - return viewer; - } - - /** - * Enable/disable controls in page based on fUseTemplateButton's current - * state. - */ - void enableTemplates() { - boolean enabled = fUseTemplateButton.getSelection(); - - if (!enabled) { - // save last selected template - Template template = getSelectedTemplate(); - if (template != null) - fLastSelectedTemplateName = template.getName(); - else - fLastSelectedTemplateName = ""; //$NON-NLS-1$ - - fTableViewer.setSelection(null); - } - else { - setSelectedTemplate(fLastSelectedTemplateName); - } - - fTableViewer.getControl().setEnabled(enabled); - fPatternViewer.getControl().setEnabled(enabled); - } - - /** - * Return the template preference page id - * - * @return - */ - private String getPreferencePageId() { - return "org.eclipse.wst.sse.ui.preferences.jsp.templates"; //$NON-NLS-1$ - } - - /** - * Get the currently selected template. - * - * @return - */ - private Template getSelectedTemplate() { - Template template = null; - IStructuredSelection selection = (IStructuredSelection) fTableViewer.getSelection(); - - if (selection.size() == 1) { - template = (Template) selection.getFirstElement(); - } - return template; - } - - /** - * Returns template string to insert. - * - * @return String to insert or null if none is to be inserted - */ - String getTemplateString() { - String templateString = null; - - Template template = getSelectedTemplate(); - if (template != null) { - TemplateContextType contextType = JSPUIPlugin.getDefault().getTemplateContextRegistry().getContextType(TemplateContextTypeIdsJSP.NEW); - IDocument document = new Document(); - TemplateContext context = new DocumentTemplateContext(contextType, document, 0, 0); - try { - TemplateBuffer buffer = context.evaluate(template); - templateString = buffer.getString(); - } - catch (Exception e) { - Logger.log(Logger.WARNING_DEBUG, "Could not create template for new jsp", e); //$NON-NLS-1$ - } - } - - return templateString; - } - - void linkClicked() { - String pageId = getPreferencePageId(); - PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn(getShell(), pageId, new String[]{pageId}, null); - dialog.open(); - fTableViewer.refresh(); - } - - /** - * Load the last template name used in New JSP File wizard. - */ - private void loadLastSavedPreferences() { - String templateName = JSPUIPlugin.getDefault().getPreferenceStore().getString(JSPUIPreferenceNames.NEW_FILE_TEMPLATE_NAME); - if (templateName == null || templateName.length() == 0) { - fLastSelectedTemplateName = ""; //$NON-NLS-1$ - fUseTemplateButton.setSelection(false); - } - else { - fLastSelectedTemplateName = templateName; - fUseTemplateButton.setSelection(true); - } - enableTemplates(); - } - - /** - * Save template name used for next call to New JSP File wizard. - */ - void saveLastSavedPreferences() { - String templateName = ""; //$NON-NLS-1$ - - Template template = getSelectedTemplate(); - if (template != null) { - templateName = template.getName(); - } - - JSPUIPlugin.getDefault().getPreferenceStore().setValue(JSPUIPreferenceNames.NEW_FILE_TEMPLATE_NAME, templateName); - JSPUIPlugin.getDefault().savePluginPreferences(); - } - - /** - * Select a template in the table viewer given the template name. If - * template name cannot be found or templateName is null, just select - * first item in table. If no items in table select nothing. - * - * @param templateName - */ - private void setSelectedTemplate(String templateName) { - Object template = null; - - if (templateName != null && templateName.length() > 0) { - // pick the last used template - template = fTemplateStore.findTemplate(templateName, TemplateContextTypeIdsJSP.NEW); - } - - // no record of last used template so just pick first element - if (template == null) { - // just pick first element - template = fTableViewer.getElementAt(0); - } - - if (template != null) { - IStructuredSelection selection = new StructuredSelection(template); - fTableViewer.setSelection(selection, true); - } - } - - /** - * Updates the pattern viewer. - */ - void updateViewerInput() { - Template template = getSelectedTemplate(); - if (template != null) { - fPatternViewer.getDocument().set(template.getPattern()); - } - else { - fPatternViewer.getDocument().set(""); //$NON-NLS-1$ - } - } -} diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/wizard/NewJSPWizard.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/wizard/NewJSPWizard.java deleted file mode 100644 index c96288eb36..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/wizard/NewJSPWizard.java +++ /dev/null @@ -1,141 +0,0 @@ -package org.eclipse.jst.jsp.ui.internal.wizard; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.OutputStreamWriter; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.Preferences; -import org.eclipse.core.runtime.content.IContentType; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jface.wizard.Wizard; -import org.eclipse.jst.jsp.core.internal.JSPCorePlugin; -import org.eclipse.jst.jsp.core.internal.provisional.contenttype.ContentTypeIdForJSP; -import org.eclipse.jst.jsp.ui.internal.JSPUIMessages; -import org.eclipse.jst.jsp.ui.internal.Logger; -import org.eclipse.jst.jsp.ui.internal.editor.JSPEditorPluginImageHelper; -import org.eclipse.jst.jsp.ui.internal.editor.JSPEditorPluginImages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.ui.INewWizard; -import org.eclipse.ui.IWorkbench; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.dialogs.WizardNewFileCreationPage; -import org.eclipse.ui.ide.IDE; -import org.eclipse.wst.sse.core.internal.encoding.CommonEncodingPreferenceNames; - -public class NewJSPWizard extends Wizard implements INewWizard { - private WizardNewFileCreationPage fNewFilePage; - private NewJSPTemplatesWizardPage fNewFileTemplatesPage; - private IStructuredSelection fSelection; - private List fValidExtensions = null; - - /** - * Get list of valid extensions for JSP Content type - * - * @return - */ - List getValidExtensions() { - if (fValidExtensions == null) { - IContentType type = Platform.getContentTypeManager().getContentType(ContentTypeIdForJSP.ContentTypeID_JSP); - fValidExtensions = new ArrayList(Arrays.asList(type.getFileSpecs(IContentType.FILE_EXTENSION_SPEC))); - } - return fValidExtensions; - } - - public void addPages() { - fNewFilePage = new WizardNewFileCreationPage("JSPWizardNewFileCreationPage", new StructuredSelection(IDE.computeSelectedResources(fSelection))) { //$NON-NLS-1$ - protected boolean validatePage() { - IPath handlePath = new Path(getFileName()); - String extension = handlePath.getFileExtension(); - if (extension == null || !getValidExtensions().contains(extension)) { - setErrorMessage(NLS.bind(JSPUIMessages._ERROR_FILENAME_MUST_END_JSP, getValidExtensions().toString())); - return false; - } - setErrorMessage(null); - return super.validatePage(); - } - }; - fNewFilePage.setTitle(JSPUIMessages._UI_WIZARD_NEW_HEADING); - fNewFilePage.setDescription(JSPUIMessages._UI_WIZARD_NEW_DESCRIPTION); - - addPage(fNewFilePage); - - fNewFileTemplatesPage = new NewJSPTemplatesWizardPage(); - addPage(fNewFileTemplatesPage); - } - - public void init(IWorkbench aWorkbench, IStructuredSelection aSelection) { - fSelection = aSelection; - setWindowTitle(JSPUIMessages._UI_WIZARD_NEW_TITLE); - - ImageDescriptor descriptor = JSPEditorPluginImageHelper.getInstance().getImageDescriptor(JSPEditorPluginImages.IMG_OBJ_WIZBAN_NEWJSPFILE); - setDefaultPageImageDescriptor(descriptor); - } - - private void openEditor(final IFile file) { - if (file != null) { - getShell().getDisplay().asyncExec(new Runnable() { - public void run() { - try { - IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); - IDE.openEditor(page, file, true); - } - catch (PartInitException e) { - Logger.log(Logger.WARNING_DEBUG, e.getMessage(), e); - } - } - }); - } - } - - public boolean performFinish() { - // save user options for next use - fNewFileTemplatesPage.saveLastSavedPreferences(); - - // create a new empty file - IFile file = fNewFilePage.createNewFile(); - - // put template contents into file - String templateString = fNewFileTemplatesPage.getTemplateString(); - if (templateString != null) { - // determine the encoding for the new file - Preferences preference = JSPCorePlugin.getDefault().getPluginPreferences(); - String charSet = preference.getString(CommonEncodingPreferenceNames.OUTPUT_CODESET); - - try { - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - OutputStreamWriter outputStreamWriter = null; - if (charSet == null || charSet.trim().equals("")) { //$NON-NLS-1$ - // just use default encoding - outputStreamWriter = new OutputStreamWriter(outputStream); - } else { - outputStreamWriter = new OutputStreamWriter(outputStream, charSet); - } - outputStreamWriter.write(templateString); - outputStreamWriter.flush(); - outputStreamWriter.close(); - ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray()); - file.setContents(inputStream, true, false, null); - inputStream.close(); - } - catch (Exception e) { - Logger.log(Logger.WARNING_DEBUG, "Could not create contents for new JSP file", e); //$NON-NLS-1$ - } - } - - // open the file in editor - openEditor(file); - return true; - } - -}
\ No newline at end of file diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/views/contentoutline/JSPContentOutlineConfiguration.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/views/contentoutline/JSPContentOutlineConfiguration.java deleted file mode 100644 index f9a15705b3..0000000000 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/views/contentoutline/JSPContentOutlineConfiguration.java +++ /dev/null @@ -1,51 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2005 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsp.ui.views.contentoutline; - -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin; -import org.eclipse.wst.html.ui.views.contentoutline.HTMLContentOutlineConfiguration; - -/** - * Configuration for outline view page which shows JSP content. - * - * @see org.eclipse.wst.sse.ui.views.contentoutline.ContentOutlineConfiguration - * @since 1.0 - */ -public class JSPContentOutlineConfiguration extends HTMLContentOutlineConfiguration { - - // private static final String ATT_CLASS = "class"; //$NON-NLS-1$ - - // TODO: Automate the loading of a real configuration based on the model - // type at - // creation time; clear on unConfigure so that a new embedded - // configuration can - // be used - // private StructuredContentOutlineConfiguration fEmbeddedConfiguration = - // null; - - /** - * Create new instance of JSPContentOutlineConfiguration - */ - public JSPContentOutlineConfiguration() { - // Must have empty constructor to createExecutableExtension - super(); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.wst.sse.ui.views.contentoutline.ContentOutlineConfiguration#getPreferenceStore() - */ - protected IPreferenceStore getPreferenceStore() { - return JSPUIPlugin.getDefault().getPreferenceStore(); - } -} |