/******************************************************************************* * Copyright (c) 2012-2017 Codenvy, S.A. * 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: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.plugin.languageserver.ide.navigation.symbol; import com.google.inject.Inject; import com.google.inject.Singleton; import org.eclipse.che.plugin.languageserver.ide.LanguageServerResources; import org.eclipse.lsp4j.SymbolKind; import org.vectomatic.dom.svg.ui.SVGResource; import java.util.HashMap; import java.util.Map; /** * Provides icons and text description for {@link SymbolKind} * * @author Evgen Vidolob */ @Singleton public class SymbolKindHelper { private final LanguageServerResources resources; private final Map<SymbolKind, SVGResource> iconMap = new HashMap<>(); @Inject public SymbolKindHelper(LanguageServerResources resources) { this.resources = resources; //TODO Replace markWarning() image with proper images iconMap.put(SymbolKind.Method, resources.methodItem()); iconMap.put(SymbolKind.Function, resources.textItem()); iconMap.put(SymbolKind.Constructor, resources.textItem()); iconMap.put(SymbolKind.Variable, resources.variableItem()); iconMap.put(SymbolKind.Class, resources.classItem()); iconMap.put(SymbolKind.Interface, resources.interfaceItem()); iconMap.put(SymbolKind.Namespace, resources.textItem()); iconMap.put(SymbolKind.Package, resources.textItem()); iconMap.put(SymbolKind.Module, resources.moduleItem()); iconMap.put(SymbolKind.Property, resources.propertyItem()); iconMap.put(SymbolKind.Enum, resources.enumItem()); iconMap.put(SymbolKind.String, resources.textItem()); iconMap.put(SymbolKind.File, resources.textItem()); iconMap.put(SymbolKind.Array, resources.textItem()); iconMap.put(SymbolKind.Number, resources.textItem()); iconMap.put(SymbolKind.Boolean, resources.textItem()); iconMap.put(SymbolKind.Field, resources.fieldItem()); iconMap.put(SymbolKind.Constant, resources.textItem()); } public SVGResource getIcon(SymbolKind kind) { if (iconMap.containsKey(kind)) { return iconMap.get(kind); } return null; } public String from(SymbolKind kind) { switch (kind) { case Method: return "method"; case Function: return "function"; case Constructor: return "constructor"; case Variable: return "variable"; case Class: return "class"; case Interface: return "interface"; case Namespace: return "namespace"; case Package: return "package"; case Module: return "module"; case Property: return "property"; case Enum: return "enum"; case String: return "string"; case File: return "file"; case Array: return "array"; case Number: return "number"; case Boolean: return "boolean"; } return "property"; } }