bug 413518: [outline] Support StyledText in outline
diff --git a/plugins/org.eclipse.ldt.ui/src/org/eclipse/ldt/ui/internal/editor/completion/LuaCompletionProposalLabelProvide.java b/plugins/org.eclipse.ldt.ui/src/org/eclipse/ldt/ui/internal/editor/completion/LuaCompletionProposalLabelProvide.java
index cf9fdb8..0696a89 100644
--- a/plugins/org.eclipse.ldt.ui/src/org/eclipse/ldt/ui/internal/editor/completion/LuaCompletionProposalLabelProvide.java
+++ b/plugins/org.eclipse.ldt.ui/src/org/eclipse/ldt/ui/internal/editor/completion/LuaCompletionProposalLabelProvide.java
@@ -19,14 +19,16 @@
import org.eclipse.dltk.core.IType;
import org.eclipse.dltk.core.ModelException;
import org.eclipse.dltk.ui.text.completion.CompletionProposalLabelProvider;
+import org.eclipse.dltk.ui.text.completion.ICompletionProposalLabelProviderExtension;
import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.StyledString;
import org.eclipse.ldt.core.internal.ast.models.LuaDLTKModelUtils;
import org.eclipse.ldt.ui.internal.Activator;
import org.eclipse.ldt.ui.internal.ImageConstants;
import org.eclipse.ldt.ui.internal.editor.navigation.Messages;
//TODO factorize some code with LuaLabelProvider
-public class LuaCompletionProposalLabelProvide extends CompletionProposalLabelProvider {
+public class LuaCompletionProposalLabelProvide extends CompletionProposalLabelProvider implements ICompletionProposalLabelProviderExtension {
public LuaCompletionProposalLabelProvide() {
}
@@ -82,21 +84,8 @@
// TODO BUG_ECLIPSE 403751
protected String createFieldProposalLabel(CompletionProposal proposal) {
- IModelElement element = proposal.getModelElement();
- if (element != null && element.getElementType() == IModelElement.FIELD && element.exists()) {
- final IField field = (IField) element;
- try {
- String type = field.getType();
- if (type != null) {
- return proposal.getName() + " : " + type; //$NON-NLS-1$
- }
- // CHECKSTYLE:OFF
- } catch (ModelException e) {
- // ignore
- // CHECKSTYLE:ON
- }
- }
- return proposal.getName();
+ StyledString string = createStyledFieldProposalLabel(proposal);
+ return string.toString();
}
/**
@@ -160,4 +149,48 @@
}
return super.createImageDescriptor(proposal);
}
+
+ public StyledString createStyledFieldProposalLabel(CompletionProposal proposal) {
+ StyledString result = new StyledString(proposal.getName());
+ IModelElement element = proposal.getModelElement();
+ if (element != null && element.getElementType() == IModelElement.FIELD && element.exists()) {
+ final IField field = (IField) element;
+ try {
+ String type = field.getType();
+ if (type != null) {
+ return result.append(new StyledString(" : " + type, StyledString.DECORATIONS_STYLER)); //$NON-NLS-1$
+ }
+ // CHECKSTYLE:OFF
+ } catch (ModelException e) {
+ // ignore
+ // CHECKSTYLE:ON
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public StyledString createStyledLabel(CompletionProposal fProposal) {
+ return new StyledString(createLabel(fProposal));
+ }
+
+ @Override
+ public StyledString createStyledKeywordLabel(CompletionProposal proposal) {
+ return new StyledString(createKeywordLabel(proposal));
+ }
+
+ @Override
+ public StyledString createStyledSimpleLabel(CompletionProposal proposal) {
+ return new StyledString(createSimpleLabel(proposal));
+ }
+
+ @Override
+ public StyledString createStyledTypeProposalLabel(CompletionProposal proposal) {
+ return new StyledString(createTypeProposalLabel(proposal));
+ }
+
+ @Override
+ public StyledString createStyledSimpleLabelWithType(CompletionProposal proposal) {
+ return new StyledString(createSimpleLabelWithType(proposal));
+ }
}
diff --git a/plugins/org.eclipse.ldt.ui/src/org/eclipse/ldt/ui/internal/editor/navigation/LuaLabelProvider.java b/plugins/org.eclipse.ldt.ui/src/org/eclipse/ldt/ui/internal/editor/navigation/LuaLabelProvider.java
index 3f1ca01..98b15b9 100644
--- a/plugins/org.eclipse.ldt.ui/src/org/eclipse/ldt/ui/internal/editor/navigation/LuaLabelProvider.java
+++ b/plugins/org.eclipse.ldt.ui/src/org/eclipse/ldt/ui/internal/editor/navigation/LuaLabelProvider.java
@@ -10,38 +10,27 @@
*******************************************************************************/
package org.eclipse.ldt.ui.internal.editor.navigation;
+import org.eclipse.dltk.core.IField;
import org.eclipse.dltk.core.IMember;
-import org.eclipse.dltk.core.IType;
+import org.eclipse.dltk.core.IModelElement;
import org.eclipse.dltk.core.ModelException;
+import org.eclipse.dltk.ui.ScriptElementLabels;
+import org.eclipse.dltk.ui.viewsupport.AppearanceAwareLabelProvider;
+import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.StyledString;
import org.eclipse.ldt.core.internal.ast.models.LuaDLTKModelUtils;
import org.eclipse.ldt.ui.internal.Activator;
import org.eclipse.ldt.ui.internal.ImageConstants;
import org.eclipse.swt.graphics.Image;
-public class LuaLabelProvider extends LabelProvider {
+public class LuaLabelProvider extends LabelProvider implements IStyledLabelProvider {
@Override
public String getText(final Object element) {
- final IMember member = element instanceof IMember ? (IMember) element : null;
- if (member == null)
- return null;
- try {
- // Special icon for private type
- if (member.exists()) {
- if (LuaDLTKModelUtils.isType(member) || LuaDLTKModelUtils.isModule(member)) {
- IType type = (IType) member;
- if (type.getSuperClasses() != null && type.getSuperClasses().length >= 1) {
- return type.getElementName() + " -> " + type.getSuperClasses()[0]; //$NON-NLS-1$
- } else {
- return type.getElementName();
- }
- }
- }
- } catch (ModelException e) {
- Activator.logError(Messages.LuaCompletionProvidersFlags, e);
- }
- // DLTK default behavior
+ StyledString styledText = getStyledText(element);
+ if (styledText != null)
+ return styledText.toString();
return null;
}
@@ -83,4 +72,29 @@
// DLTK default behavior
return null;
}
+
+ @Override
+ public StyledString getStyledText(Object element) {
+ if (element instanceof IModelElement) {// get name
+ StyledString result = new StyledString();
+ StringBuffer buf = new StringBuffer(61);
+ ScriptElementLabels.getDefault().getElementLabel((IModelElement) element,
+ AppearanceAwareLabelProvider.DEFAULT_TEXTFLAGS | ScriptElementLabels.ALL_CATEGORY | ScriptElementLabels.M_APP_RETURNTYPE, buf);
+ result.append(buf.toString());
+
+ // get field type
+ if (element instanceof IField) {
+ try {
+ if (((IField) element).getType() != null)
+ result.append(new StyledString(" : " + ((IField) element).getType(), StyledString.DECORATIONS_STYLER)); //$NON-NLS-1$
+ // CHECKSTYLE:OFF
+ } catch (ModelException e) {
+ // do nothing, we just not be able to get the type
+ // CHECKSTYLE:ON
+ }
+ }
+ return result;
+ }
+ return null;
+ }
}