package org.eclipse.koneki.ldt.ui.internal.editor.completion; import org.eclipse.dltk.core.CompletionProposal; import org.eclipse.dltk.core.IField; import org.eclipse.dltk.core.ILocalVariable; import org.eclipse.dltk.core.IMember; import org.eclipse.dltk.core.IMethod; import org.eclipse.dltk.core.IModelElement; import org.eclipse.dltk.core.IType; import org.eclipse.dltk.core.ModelException; import org.eclipse.dltk.ui.text.completion.CompletionProposalLabelProvider; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.koneki.ldt.core.internal.ast.models.LuaDLTKModelUtils; import org.eclipse.koneki.ldt.ui.internal.Activator; import org.eclipse.koneki.ldt.ui.internal.ImageConstants; import org.eclipse.koneki.ldt.ui.internal.editor.navigation.Messages; //TODO factorize some code with LuaLabelProvider public class LuaCompletionProposalLabelProvide extends CompletionProposalLabelProvider { public LuaCompletionProposalLabelProvide() { } // TODO BUG_ECLIPSE 403751 protected String createMethodProposalLabel(CompletionProposal methodProposal) { StringBuffer buffer = new StringBuffer(); // method name buffer.append(methodProposal.getName()); // parameters buffer.append('('); appendParameterList(buffer, methodProposal); buffer.append(')'); IModelElement element = methodProposal.getModelElement(); if (element != null && element.getElementType() == IModelElement.METHOD && element.exists()) { final IMethod method = (IMethod) element; try { if (!method.isConstructor()) { String type = method.getType(); if (type != null) { buffer.append(" : ").append(type); //$NON-NLS-1$ } IType declaringType = method.getDeclaringType(); if (declaringType != null) { buffer.append(" - ").append(declaringType.getElementName()); //$NON-NLS-1$ } } // CHECKSTYLE:OFF } catch (ModelException e) { // ignore // CHECKSTYLE:ON } } return buffer.toString(); } // TODO BUG_ECLIPSE 403751 protected String createSimpleLabelWithType(CompletionProposal proposal) { IModelElement element = proposal.getModelElement(); if (element != null && element.getElementType() == IModelElement.LOCAL_VARIABLE && element.exists()) { final ILocalVariable var = (ILocalVariable) element; String type = var.getType(); if (type != null) { return proposal.getName() + " : " + type; //$NON-NLS-1$ } } return proposal.getName(); } // 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(); } /** * @see org.eclipse.dltk.ui.text.completion.CompletionProposalLabelProvider#createImageDescriptor(org.eclipse.dltk.core.CompletionProposal) */ // TODO factorize some code with LuaLabelProvider.. @Override public ImageDescriptor createImageDescriptor(CompletionProposal proposal) { if (proposal.getModelElement() instanceof IMember) { IMember member = (IMember) proposal.getModelElement(); try { // Special icon for private type if (member.exists()) { if (member instanceof IType) { if (LuaDLTKModelUtils.isModule(member)) { return Activator.getDefault().getImageRegistry().getDescriptor(ImageConstants.MODULE_OBJ16); } else if (LuaDLTKModelUtils.isGlobalTable(member)) { return Activator.getDefault().getImageRegistry().getDescriptor(ImageConstants.GLOBAL_TABLE_OBJ16); } else if (LuaDLTKModelUtils.isLocalTable(member)) { return Activator.getDefault().getImageRegistry().getDescriptor(ImageConstants.LOCAL_TABLE_OBJ16); } } else if (LuaDLTKModelUtils.isModuleFunction(member)) { return Activator.getDefault().getImageRegistry().getDescriptor(ImageConstants.MODULE_FUNCTION_OBJ16); } } } catch (ModelException e) { Activator.logError(Messages.LuaCompletionProvidersFlags, e); return super.createImageDescriptor(proposal); } } return super.createImageDescriptor(proposal); } /** * @see org.eclipse.dltk.ui.text.completion.CompletionProposalLabelProvider#createTypeImageDescriptor(org.eclipse.dltk.core.CompletionProposal) */ @Override public ImageDescriptor createTypeImageDescriptor(CompletionProposal proposal) { if (proposal.getModelElement() instanceof IMember) { IMember member = (IMember) proposal.getModelElement(); try { // Special icon for private type if (member.exists()) { if (member instanceof IType) { if (LuaDLTKModelUtils.isModule(member)) { return Activator.getDefault().getImageRegistry().getDescriptor(ImageConstants.MODULE_OBJ16); } else if (LuaDLTKModelUtils.isGlobalTable(member)) { return Activator.getDefault().getImageRegistry().getDescriptor(ImageConstants.GLOBAL_TABLE_OBJ16); } else if (LuaDLTKModelUtils.isLocalTable(member)) { return Activator.getDefault().getImageRegistry().getDescriptor(ImageConstants.LOCAL_TABLE_OBJ16); } } else if (LuaDLTKModelUtils.isModuleFunction(member)) { return Activator.getDefault().getImageRegistry().getDescriptor(ImageConstants.MODULE_FUNCTION_OBJ16); } } } catch (ModelException e) { Activator.logError(Messages.LuaCompletionProvidersFlags, e); return super.createImageDescriptor(proposal); } } return super.createImageDescriptor(proposal); } }