Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 233698 Details for
Bug 413346
[outline] Support StyledText in outline
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
support of styledString in content assist.
support-styledstring-in-content-assist.patch (text/plain), 20.48 KB, created by
Simon Bernard
on 2013-07-23 06:11:09 EDT
(
hide
)
Description:
support of styledString in content assist.
Filename:
MIME Type:
Creator:
Simon Bernard
Created:
2013-07-23 06:11:09 EDT
Size:
20.48 KB
patch
obsolete
>diff --git a/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/ScriptSourceViewerConfiguration.java b/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/ScriptSourceViewerConfiguration.java >index 4594abd..e691517 100644 >--- a/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/ScriptSourceViewerConfiguration.java >+++ b/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/ScriptSourceViewerConfiguration.java >@@ -507,6 +507,8 @@ > > getContentAssistPreference().configure(assistant, fPreferenceStore); > >+ assistant.enableColoredLabels(true); >+ > return assistant; > } > >diff --git a/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/completion/AbstractScriptCompletionProposal.java b/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/completion/AbstractScriptCompletionProposal.java >index c33e604..84b3234 100644 >--- a/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/completion/AbstractScriptCompletionProposal.java >+++ b/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/completion/AbstractScriptCompletionProposal.java >@@ -48,6 +48,7 @@ > import org.eclipse.jface.text.contentassist.ICompletionProposalExtension2; > import org.eclipse.jface.text.contentassist.ICompletionProposalExtension3; > import org.eclipse.jface.text.contentassist.ICompletionProposalExtension5; >+import org.eclipse.jface.text.contentassist.ICompletionProposalExtension6; > import org.eclipse.jface.text.contentassist.IContextInformation; > import org.eclipse.jface.text.link.ILinkedModeListener; > import org.eclipse.jface.text.link.LinkedModeModel; >@@ -56,6 +57,7 @@ > import org.eclipse.jface.text.link.LinkedModeUI.IExitPolicy; > import org.eclipse.jface.text.link.LinkedPosition; > import org.eclipse.jface.text.link.LinkedPositionGroup; >+import org.eclipse.jface.viewers.StyledString; > import org.eclipse.swt.SWT; > import org.eclipse.swt.custom.StyleRange; > import org.eclipse.swt.custom.StyledText; >@@ -76,7 +78,7 @@ > public abstract class AbstractScriptCompletionProposal implements > IScriptCompletionProposal, ICompletionProposalExtension, > ICompletionProposalExtension2, ICompletionProposalExtension3, >- ICompletionProposalExtension5 { >+ ICompletionProposalExtension5, ICompletionProposalExtension6 { > > /** > * A class to simplify tracking a reference position in a document. >@@ -178,7 +180,7 @@ > > } > >- private String fDisplayString; >+ private StyledString fDisplayString; > private String fReplacementString; > private int fReplacementOffset; > private int fReplacementLength; >@@ -451,7 +453,23 @@ > * @see ICompletionProposal#getDisplayString() > */ > public String getDisplayString() { >+ if (fDisplayString != null) >+ return fDisplayString.toString(); >+ return null; >+ } >+ >+ /** >+ * @since 5.1 >+ */ >+ public StyledString getStyledDisplayString() { > return fDisplayString; >+ } >+ >+ /** >+ * @since 5.1 >+ */ >+ public void setStyledDisplayString(StyledString text) { >+ fDisplayString = text; > } > > /* >@@ -973,7 +991,7 @@ > } > > protected void setDisplayString(String string) { >- fDisplayString = string; >+ fDisplayString = new StyledString(string); > } > > @Override >diff --git a/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/completion/ICompletionProposalLabelProviderExtension.java b/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/completion/ICompletionProposalLabelProviderExtension.java >new file mode 100644 >index 0000000..753b3f9 >--- /dev/null >+++ b/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/completion/ICompletionProposalLabelProviderExtension.java >@@ -0,0 +1,29 @@ >+/******************************************************************************* >+ * Copyright (c) 2005, 2007 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 >+ *******************************************************************************/ >+package org.eclipse.dltk.ui.text.completion; >+ >+import org.eclipse.dltk.core.CompletionProposal; >+import org.eclipse.jface.viewers.StyledString; >+ >+/** >+ * @since 5.1 >+ */ >+public interface ICompletionProposalLabelProviderExtension { >+ >+ StyledString createStyledFieldProposalLabel(CompletionProposal proposal); >+ >+ StyledString createStyledLabel(CompletionProposal fProposal); >+ >+ StyledString createStyledKeywordLabel(CompletionProposal proposal); >+ >+ StyledString createStyledSimpleLabel(CompletionProposal proposal); >+ >+ StyledString createStyledTypeProposalLabel(CompletionProposal proposal); >+ >+ StyledString createStyledSimpleLabelWithType(CompletionProposal proposal); >+} >diff --git a/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/completion/LazyScriptCompletionProposal.java b/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/completion/LazyScriptCompletionProposal.java >index 43fae2a..70d3a02 100644 >--- a/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/completion/LazyScriptCompletionProposal.java >+++ b/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/completion/LazyScriptCompletionProposal.java >@@ -17,6 +17,7 @@ > import org.eclipse.dltk.ui.DLTKUIPlugin; > import org.eclipse.jface.text.IDocument; > import org.eclipse.jface.text.contentassist.IContextInformation; >+import org.eclipse.jface.viewers.StyledString; > import org.eclipse.swt.graphics.Image; > > public abstract class LazyScriptCompletionProposal extends >@@ -48,6 +49,7 @@ > * The invocation context of this completion proposal. > */ > protected final ScriptContentAssistInvocationContext fInvocationContext; >+ private boolean fDisplayStyledStringComputed; > > public LazyScriptCompletionProposal(CompletionProposal proposal, > ScriptContentAssistInvocationContext context) { >@@ -199,6 +201,33 @@ > } > > @Override >+ public final StyledString getStyledDisplayString() { >+ if (!fDisplayStyledStringComputed) { >+ setStyledDisplayString(computeStyledDisplayString()); >+ } >+ return super.getStyledDisplayString(); >+ } >+ >+ @Override >+ public final void setStyledDisplayString(StyledString string) { >+ fDisplayStyledStringComputed = true; >+ super.setStyledDisplayString(string); >+ } >+ >+ /** >+ * @since 5.1 >+ */ >+ protected StyledString computeStyledDisplayString() { >+ CompletionProposalLabelProvider labelProvider = fInvocationContext >+ .getLabelProvider(); >+ if (labelProvider instanceof ICompletionProposalLabelProviderExtension) >+ return ((ICompletionProposalLabelProviderExtension) labelProvider) >+ .createStyledLabel(fProposal); >+ else >+ return new StyledString(labelProvider.createLabel(fProposal)); >+ } >+ >+ @Override > public final String getAdditionalProposalInfo() { > return super.getAdditionalProposalInfo(); > } >diff --git a/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/completion/ScriptCompletionProposal.java b/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/completion/ScriptCompletionProposal.java >index 4cc9674..f59c51e 100644 >--- a/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/completion/ScriptCompletionProposal.java >+++ b/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/completion/ScriptCompletionProposal.java >@@ -12,6 +12,7 @@ > > import org.eclipse.core.runtime.Assert; > import org.eclipse.jface.text.IDocument; >+import org.eclipse.jface.viewers.StyledString; > import org.eclipse.swt.graphics.Image; > > public class ScriptCompletionProposal extends >@@ -66,6 +67,36 @@ > public ScriptCompletionProposal(String replacementString, > int replacementOffset, int replacementLength, Image image, > String displayString, int relevance, boolean indoc) { >+ this(replacementString, replacementOffset, replacementLength, image, >+ new StyledString(displayString), relevance, false); >+ } >+ >+ /** >+ * Creates a new completion proposal. All fields are initialized based on >+ * the provided information. >+ * >+ * @param replacementString >+ * the actual string to be inserted into the document >+ * @param replacementOffset >+ * the offset of the text to be replaced >+ * @param replacementLength >+ * the length of the text to be replaced >+ * @param image >+ * the image to display for this proposal >+ * @param displayString >+ * the StyledString to be displayed for the proposal If set to >+ * <code>null</code>, the replacement string will be taken as >+ * display string. >+ * @param relevance >+ * the relevance >+ * @param indoc >+ * <code>true</code> for a javadoc proposal >+ * @since 5.1 >+ * >+ */ >+ public ScriptCompletionProposal(String replacementString, >+ int replacementOffset, int replacementLength, Image image, >+ StyledString displayString, int relevance, boolean indoc) { > Assert.isNotNull(replacementString); > Assert.isTrue(replacementOffset >= 0); > Assert.isTrue(replacementLength >= 0); >@@ -74,12 +105,14 @@ > setReplacementOffset(replacementOffset); > setReplacementLength(replacementLength); > setImage(image); >- setDisplayString(displayString == null ? replacementString >+ setStyledDisplayString(displayString == null ? new StyledString( >+ replacementString) > : displayString); > setRelevance(relevance); > setCursorPosition(replacementString.length()); > setInDoc(indoc); >- setSortString(displayString == null ? replacementString : displayString); >+ setSortString(displayString == null ? replacementString : displayString >+ .toString()); > } > > @Override >diff --git a/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/completion/ScriptCompletionProposalCollector.java b/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/completion/ScriptCompletionProposalCollector.java >index 5ccaf61..8bab738 100644 >--- a/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/completion/ScriptCompletionProposalCollector.java >+++ b/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/completion/ScriptCompletionProposalCollector.java >@@ -37,6 +37,7 @@ > import org.eclipse.dltk.ui.viewsupport.ImageDescriptorRegistry; > import org.eclipse.jface.resource.ImageDescriptor; > import org.eclipse.jface.text.contentassist.IContextInformation; >+import org.eclipse.jface.viewers.StyledString; > import org.eclipse.swt.graphics.Image; > > /** >@@ -655,9 +656,20 @@ > image, displayString, relevance, false); > } > >+ @Deprecated > protected ScriptCompletionProposal createScriptCompletionProposal( > String completion, int replaceStart, int length, Image image, > String displayString, int relevance, boolean isInDoc) { >+ return new ScriptCompletionProposal(completion, replaceStart, length, >+ image, displayString, relevance, isInDoc); >+ } >+ >+ /** >+ * @since 5.1 >+ */ >+ protected ScriptCompletionProposal createScriptCompletionProposal( >+ String completion, int replaceStart, int length, Image image, >+ StyledString displayString, int relevance, boolean isInDoc) { > return new ScriptCompletionProposal(completion, replaceStart, length, > image, displayString, relevance, isInDoc); > } >@@ -675,17 +687,33 @@ > String completion = String.valueOf(proposal.getCompletion()); > int start = proposal.getReplaceStart(); > int length = getLength(proposal); >- String label = getLabelProvider().createFieldProposalLabel(proposal); >+ int relevance = computeRelevance(proposal); >+ >+ ScriptCompletionProposal scriptProposal; >+ >+ CompletionProposalLabelProvider labelProvider = getLabelProvider(); > Image image = getImage(getLabelProvider().createFieldImageDescriptor( > proposal)); >- int relevance = computeRelevance(proposal); >- // CompletionContext context = getContext(); >- ScriptCompletionProposal scriptProposal = createScriptCompletionProposal( >- completion, start, length, image, label, relevance, /* >- * context >- * .isInDoc >- * () >- */false); >+ >+ if (labelProvider instanceof ICompletionProposalLabelProviderExtension) { >+ >+ StyledString label = ((ICompletionProposalLabelProviderExtension) getLabelProvider()) >+ .createStyledFieldProposalLabel(proposal); >+ // CompletionContext context = getContext(); >+ scriptProposal = createScriptCompletionProposal(completion, start, >+ length, image, label, relevance, /* >+ * context .isInDoc () >+ */false); >+ } else { >+ String label = getLabelProvider() >+ .createFieldProposalLabel(proposal); >+ // CompletionContext context = getContext(); >+ scriptProposal = createScriptCompletionProposal(completion, start, >+ length, image, label, relevance, /* >+ * context .isInDoc () >+ */false); >+ } >+ > if (fScriptProject != null) > scriptProposal.setProposalInfo(new FieldProposalInfo( > fScriptProject, proposal)); >@@ -698,11 +726,31 @@ > String completion = String.valueOf(proposal.getCompletion()); > int start = proposal.getReplaceStart(); > int length = getLength(proposal); >- String label = getLabelProvider().createKeywordLabel(proposal); >- Image img = getImage(getLabelProvider().createImageDescriptor(proposal)); > int relevance = computeRelevance(proposal); >- ScriptCompletionProposal scriptProposal = createScriptCompletionProposal( >- completion, start, length, img, label, relevance); >+ >+ ScriptCompletionProposal scriptProposal; >+ >+ CompletionProposalLabelProvider labelProvider = getLabelProvider(); >+ Image image = getImage(getLabelProvider().createImageDescriptor( >+ proposal)); >+ >+ if (labelProvider instanceof ICompletionProposalLabelProviderExtension) { >+ >+ StyledString label = ((ICompletionProposalLabelProviderExtension) getLabelProvider()) >+ .createStyledKeywordLabel(proposal); >+ // CompletionContext context = getContext(); >+ scriptProposal = createScriptCompletionProposal(completion, start, >+ length, image, label, relevance, /* >+ * context .isInDoc () >+ */false); >+ } else { >+ String label = getLabelProvider().createKeywordLabel(proposal); >+ // CompletionContext context = getContext(); >+ scriptProposal = createScriptCompletionProposal(completion, start, >+ length, image, label, relevance, /* >+ * context .isInDoc () >+ */false); >+ } > > if (fScriptProject != null) { > scriptProposal.setProposalInfo(new ProposalInfo(fScriptProject, >@@ -717,11 +765,33 @@ > String completion = String.valueOf(proposal.getCompletion()); > int start = proposal.getReplaceStart(); > int length = getLength(proposal); >- String label = getLabelProvider().createSimpleLabel(proposal); > int relevance = computeRelevance(proposal); >- return createScriptCompletionProposal(completion, start, length, >- getImage(getLabelProvider().createImageDescriptor(proposal)), >- label, relevance); >+ >+ ScriptCompletionProposal scriptProposal; >+ >+ CompletionProposalLabelProvider labelProvider = getLabelProvider(); >+ Image image = getImage(getLabelProvider().createImageDescriptor( >+ proposal)); >+ >+ if (labelProvider instanceof ICompletionProposalLabelProviderExtension) { >+ >+ StyledString label = ((ICompletionProposalLabelProviderExtension) getLabelProvider()) >+ .createStyledSimpleLabel(proposal); >+ // CompletionContext context = getContext(); >+ scriptProposal = createScriptCompletionProposal(completion, start, >+ length, image, label, relevance, /* >+ * context .isInDoc () >+ */false); >+ } else { >+ String label = getLabelProvider().createSimpleLabel(proposal); >+ // CompletionContext context = getContext(); >+ scriptProposal = createScriptCompletionProposal(completion, start, >+ length, image, label, relevance, /* >+ * context .isInDoc () >+ */false); >+ } >+ >+ return scriptProposal; > } > > private IScriptCompletionProposal createLabelProposal( >@@ -729,11 +799,30 @@ > String completion = String.valueOf(proposal.getCompletion()); > int start = proposal.getReplaceStart(); > int length = getLength(proposal); >- String label = getLabelProvider().createSimpleLabel(proposal); > int relevance = computeRelevance(proposal); >- return createScriptCompletionProposal(completion, start, length, null, >- label, relevance); >- // return null; >+ >+ ScriptCompletionProposal scriptProposal; >+ >+ CompletionProposalLabelProvider labelProvider = getLabelProvider(); >+ >+ if (labelProvider instanceof ICompletionProposalLabelProviderExtension) { >+ >+ StyledString label = ((ICompletionProposalLabelProviderExtension) getLabelProvider()) >+ .createStyledSimpleLabel(proposal); >+ // CompletionContext context = getContext(); >+ scriptProposal = createScriptCompletionProposal(completion, start, >+ length, null, label, relevance, /* >+ * context .isInDoc () >+ */false); >+ } else { >+ String label = getLabelProvider().createSimpleLabel(proposal); >+ // CompletionContext context = getContext(); >+ scriptProposal = createScriptCompletionProposal(completion, start, >+ length, null, label, relevance, /* >+ * context .isInDoc () >+ */false); >+ } >+ return scriptProposal; > } > > private IScriptCompletionProposal createLocalVariableProposal( >@@ -741,14 +830,35 @@ > String completion = String.valueOf(proposal.getCompletion()); > int start = proposal.getReplaceStart(); > int length = getLength(proposal); >+ int relevance = computeRelevance(proposal); >+ >+ ScriptCompletionProposal scriptProposal; >+ >+ CompletionProposalLabelProvider labelProvider = getLabelProvider(); > Image image = getImage(getLabelProvider().createLocalImageDescriptor( > proposal)); >- String label = getLabelProvider().createSimpleLabelWithType(proposal); >- int relevance = computeRelevance(proposal); >- final ScriptCompletionProposal javaProposal = createScriptCompletionProposal( >- completion, start, length, image, label, relevance); >- javaProposal.setTriggerCharacters(getVarTrigger()); >- return javaProposal; >+ >+ if (labelProvider instanceof ICompletionProposalLabelProviderExtension) { >+ >+ StyledString label = ((ICompletionProposalLabelProviderExtension) getLabelProvider()) >+ .createStyledSimpleLabelWithType(proposal); >+ // CompletionContext context = getContext(); >+ scriptProposal = createScriptCompletionProposal(completion, start, >+ length, image, label, relevance, /* >+ * context .isInDoc () >+ */false); >+ } else { >+ String label = getLabelProvider().createSimpleLabelWithType( >+ proposal); >+ // CompletionContext context = getContext(); >+ scriptProposal = createScriptCompletionProposal(completion, start, >+ length, image, label, relevance, /* >+ * context .isInDoc () >+ */false); >+ } >+ >+ scriptProposal.setTriggerCharacters(getVarTrigger()); >+ return scriptProposal; > } > > /** >@@ -815,24 +925,39 @@ > } > > protected IScriptCompletionProposal createTypeProposal( >- CompletionProposal typeProposal) { >+ CompletionProposal proposal) { > >- String completion = typeProposal.getCompletion(); >- int replaceStart = typeProposal.getReplaceStart(); >- int length = typeProposal.getReplaceEnd() >- - typeProposal.getReplaceStart(); >+ String completion = proposal.getCompletion(); >+ int start = proposal.getReplaceStart(); >+ int length = proposal.getReplaceEnd() - proposal.getReplaceStart(); >+ int relevance = computeRelevance(proposal); >+ >+ ScriptCompletionProposal scriptProposal; >+ >+ CompletionProposalLabelProvider labelProvider = getLabelProvider(); > Image image = getImage(getLabelProvider().createTypeImageDescriptor( >- typeProposal)); >+ proposal)); > >- String displayString = getLabelProvider().createTypeProposalLabel( >- typeProposal); >+ if (labelProvider instanceof ICompletionProposalLabelProviderExtension) { > >- ScriptCompletionProposal scriptProposal = createScriptCompletionProposal( >- completion, replaceStart, length, image, displayString, 0); >- >- scriptProposal.setRelevance(computeRelevance(typeProposal)); >+ StyledString label = ((ICompletionProposalLabelProviderExtension) getLabelProvider()) >+ .createStyledTypeProposalLabel(proposal); >+ // CompletionContext context = getContext(); >+ scriptProposal = createScriptCompletionProposal(completion, start, >+ length, image, label, relevance, /* >+ * context .isInDoc () >+ */false); >+ } else { >+ String label = getLabelProvider().createTypeProposalLabel(proposal); >+ // CompletionContext context = getContext(); >+ scriptProposal = createScriptCompletionProposal(completion, start, >+ length, image, label, relevance, /* >+ * context .isInDoc () >+ */false); >+ } > scriptProposal.setProposalInfo(new TypeProposalInfo(fScriptProject, >- typeProposal)); >+ proposal)); >+ > return scriptProposal; > } >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 413346
:
233624
|
233626
|
233697
| 233698 |
233889
|
233890