/*******************************************************************************
* Copyright (c) 2015, 2015 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:
* Bruno Medeiros - initial API and implementation
*******************************************************************************/
package melnorme.lang.ide.ui;
import static melnorme.utilbox.core.Assert.AssertNamespace.assertFail;
import static melnorme.utilbox.core.Assert.AssertNamespace.assertUnreachable;
import com.github.rustdt.ide.ui.RustElementImages;
import melnorme.lang.ide.ui.views.AbstractLangImageProvider;
import melnorme.lang.tooling.LANG_SPECIFIC;
import melnorme.util.swt.jface.IManagedImage;
@LANG_SPECIFIC
public class LangImageProvider extends AbstractLangImageProvider {
@Override
public IManagedImage visitKeyword() {
throw assertUnreachable();
}
@Override
public IManagedImage visitConst() {
return visitVariable();
}
@Override
public IManagedImage visitStatic() {
return visitVariable();
}
@Override
public IManagedImage visitVariable() {
return super.visitVariable();
}
@Override
public IManagedImage visitFunction() {
return super.visitFunction();
}
@Override
public IManagedImage visitStruct() {
return super.visitStruct();
}
@Override
public IManagedImage visitUnion() {
return LangElementImages.T_UNION;
}
@Override
public IManagedImage visitImpl() {
return RustElementImages.T_IMPL;
}
@Override
public IManagedImage visitTrait() {
return RustElementImages.T_TRAIT;
}
@Override
public IManagedImage visitEnum() {
return super.visitEnum();
}
@Override
public IManagedImage visitEnumVariant() {
return RustElementImages.T_ENUM_VARIANT;
}
@Override
public IManagedImage visitExternCrate() {
return RustElementImages.PACKAGE;
}
@Override
public IManagedImage visitModule() {
// return LangElementImages.PACKAGE;
return super.visitModule();
}
@Override
public IManagedImage visitUse() {
return RustElementImages.IMPORT;
}
@Override
public IManagedImage visitUseGroup() {
return RustElementImages.IMPORTS;
}
@Override
public IManagedImage visitTypeAlias() {
return RustElementImages.T_TYPE;
}
@Override
public IManagedImage visitAlias() {
throw assertFail();
}
@Override
public IManagedImage visitMacro() {
return RustElementImages.T_MACRO;
}
/* ----------------- ----------------- */
@Override
public IManagedImage visitMatchArm() {
return visitOther();
}
@Override
public IManagedImage visitType() {
// This is an alias
return visitTypeAlias();
}
@Override
public IManagedImage visitCrate() {
return visitExternCrate();
}
@Override
public IManagedImage visitOther() {
return new IManagedImage.NullManagedImage();
}
}