/*******************************************************************************
* Copyright (c) 2015 Bruno Medeiros and other Contributors.
* 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:
* Bruno Medeiros - initial API and implementation
*******************************************************************************/
package melnorme.lang.ide.ui.views;
import melnorme.lang.ide.ui.LangElementImages;
import melnorme.lang.tooling.CompletionProposalKind;
import melnorme.lang.tooling.CompletionProposalKind.ProposalKindVisitor;
import melnorme.lang.tooling.structure.StructureElementKind.StructureElementKindVisitor;
import melnorme.util.swt.jface.IManagedImage;
import melnorme.util.swt.jface.IManagedImage.NullManagedImage;
public abstract class AbstractLangImageProvider implements
ProposalKindVisitor<IManagedImage>,
StructureElementKindVisitor<IManagedImage>
{
public IManagedImage getImageDescriptor(CompletionProposalKind kind) {
if(kind == null) {
return null;
}
IManagedImage imageDescriptor = kind.switchOnKind(this);
if(imageDescriptor == null) {
return getDefaultImage();
}
return imageDescriptor;
}
public static IManagedImage getDefaultImage() {
return NullManagedImage.INSTANCE;
}
@Override
public IManagedImage visitUnknown() {
return LangElementImages.UNKNOWN;
}
@Override
public IManagedImage visitKeyword() {
return NullManagedImage.INSTANCE;
}
@Override
public IManagedImage visitError() {
return LangElementImages.ERROR_ELEMENT;
}
@Override
public IManagedImage visitAlias() {
return LangElementImages.ALIAS_ELEMENT;
}
@Override
public IManagedImage visitModule() {
return LangElementImages.MODULE;
}
@Override
public IManagedImage visitVariable() {
return LangElementImages.VARIABLE;
}
@Override
public IManagedImage visitFunction() {
return LangElementImages.FUNCTION;
}
@Override
public IManagedImage visitConstructor() {
return LangElementImages.CONSTRUCTOR;
}
@Override
public IManagedImage visitClass() {
return LangElementImages.T_CLASS;
}
@Override
public IManagedImage visitInterface() {
return LangElementImages.T_INTERFACE;
}
@Override
public IManagedImage visitStruct() {
return LangElementImages.T_STRUCT;
}
@Override
public IManagedImage visitEnum() {
return LangElementImages.T_ENUM;
}
@Override
public IManagedImage visitNative() {
return LangElementImages.T_NATIVE;
}
}