org.eclipse.languageserver.LSPImages.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.languageserver.LSPImages.java

Source

/*******************************************************************************
 * Copyright (c) 2016 Rogue Wave Software Inc. 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:
 *  Micha Niewrza (Rogue Wave Software Inc.) - initial implementation
 *******************************************************************************/
package org.eclipse.languageserver;

import java.net.URL;

import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.lsp4j.CompletionItemKind;
import org.eclipse.lsp4j.SymbolKind;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
import org.osgi.framework.Bundle;

public class LSPImages {

    private static ImageRegistry imageRegistry;
    private static String ICONS_PATH = "$nl$/icons/full/"; //$NON-NLS-1$
    private final static String OBJECT = ICONS_PATH + "obj16/"; //basic colors - size 16x16 //$NON-NLS-1$

    public static final String IMG_MODULE = "IMG_MODULE"; //$NON-NLS-1$
    public static final String IMG_NAMESPACE = "IMG_NAMESPACE"; //$NON-NLS-1$
    public static final String IMG_PACKAGE = "IMG_PACKAGE"; //$NON-NLS-1$
    public static final String IMG_CLASS = "IMG_CLASS"; //$NON-NLS-1$
    public static final String IMG_METHOD = "IMG_METOHD"; //$NON-NLS-1$
    public static final String IMG_PROPERTY = "IMG_PROPERTY"; //$NON-NLS-1$
    public static final String IMG_FIELD = "IMG_FIELD"; //$NON-NLS-1$
    public static final String IMG_CONSTRUCTOR = "IMG_CONSTRUCTOR"; //$NON-NLS-1$
    public static final String IMG_ENUM = "IMG_ENUM"; //$NON-NLS-1$
    public static final String IMG_INTERACE = "IMG_INTERFACE"; //$NON-NLS-1$
    public static final String IMG_FUNCTION = "IMG_FUNCTION"; //$NON-NLS-1$
    public static final String IMG_VARIABLE = "IMG_VARIABLE"; //$NON-NLS-1$
    public static final String IMG_CONSTANT = "IMG_CONSTANT"; //$NON-NLS-1$
    public static final String IMG_TEXT = "IMG_TEXT"; //$NON-NLS-1$
    public static final String IMG_STRING = IMG_TEXT;
    public static final String IMG_NUMBER = "IMG_NUMBER"; //$NON-NLS-1$
    public static final String IMG_BOOLEAN = "IMG_BOOLEAN"; //$NON-NLS-1$
    public static final String IMG_ARRAY = "IMG_ARRAY"; //$NON-NLS-1$
    public static final String IMG_UNIT = "IMG_UNIT"; //$NON-NLS-1$
    public static final String IMG_VALUE = "IMG_VALUE"; //$NON-NLS-1$
    public static final String IMG_KEYWORD = "IMG_KEYWORD"; //$NON-NLS-1$
    public static final String IMG_SNIPPET = "IMG_SNIPPET"; //$NON-NLS-1$
    public static final String IMG_COLOR = "IMG_COLOR"; //$NON-NLS-1$
    public static final String IMG_REFERENCE = "IMG_REFERENCE"; //$NON-NLS-1$

    public static void initalize(ImageRegistry registry) {
        imageRegistry = registry;

        declareRegistryImage(IMG_MODULE, OBJECT + "module.png"); //$NON-NLS-1$
        declareRegistryImage(IMG_NAMESPACE, OBJECT + "namespace.png"); //$NON-NLS-1$
        declareRegistryImage(IMG_PACKAGE, OBJECT + "package.png"); //$NON-NLS-1$
        declareRegistryImage(IMG_CLASS, OBJECT + "class.png"); //$NON-NLS-1$
        declareRegistryImage(IMG_METHOD, OBJECT + "method.png"); //$NON-NLS-1$
        declareRegistryImage(IMG_PROPERTY, OBJECT + "property.png"); //$NON-NLS-1$
        declareRegistryImage(IMG_FIELD, OBJECT + "field.png"); //$NON-NLS-1$
        declareRegistryImage(IMG_CONSTRUCTOR, OBJECT + "constructor.png"); //$NON-NLS-1$
        declareRegistryImage(IMG_ENUM, OBJECT + "enum.png"); //$NON-NLS-1$
        declareRegistryImage(IMG_INTERACE, OBJECT + "interface.png"); //$NON-NLS-1$
        declareRegistryImage(IMG_FUNCTION, OBJECT + "function.png"); //$NON-NLS-1$
        declareRegistryImage(IMG_VARIABLE, OBJECT + "variable.png"); //$NON-NLS-1$
        declareRegistryImage(IMG_CONSTANT, OBJECT + "constant.png"); //$NON-NLS-1$
        declareRegistryImage(IMG_STRING, OBJECT + "string.png"); //$NON-NLS-1$
        declareRegistryImage(IMG_NUMBER, OBJECT + "number.png"); //$NON-NLS-1$
        declareRegistryImage(IMG_BOOLEAN, OBJECT + "boolean.png"); //$NON-NLS-1$
        declareRegistryImage(IMG_ARRAY, OBJECT + "array.png"); //$NON-NLS-1$

        declareRegistryImage(IMG_TEXT, OBJECT + "text.png"); //$NON-NLS-1$
        declareRegistryImage(IMG_UNIT, OBJECT + "unit.png"); //$NON-NLS-1$
        declareRegistryImage(IMG_VALUE, OBJECT + "value.png"); //$NON-NLS-1$
        declareRegistryImage(IMG_KEYWORD, OBJECT + "keyword.png"); //$NON-NLS-1$
        declareRegistryImage(IMG_SNIPPET, OBJECT + "snippet.png"); //$NON-NLS-1$
        declareRegistryImage(IMG_COLOR, OBJECT + "color.png"); //$NON-NLS-1$
        declareRegistryImage(IMG_REFERENCE, OBJECT + "reference.png"); //$NON-NLS-1$
    }

    private final static void declareRegistryImage(String key, String path) {
        ImageDescriptor desc = ImageDescriptor.getMissingImageDescriptor();
        Bundle bundle = Platform.getBundle(LanguageServerPluginActivator.PLUGIN_ID);
        URL url = null;
        if (bundle != null) {
            url = FileLocator.find(bundle, new Path(path), null);
            if (url != null) {
                desc = ImageDescriptor.createFromURL(url);
            }
        }
        imageRegistry.put(key, desc);
    }

    /**
     * Returns the <code>Image</code> identified by the given key, or
     * <code>null</code> if it does not exist.
     */
    public static Image getImage(String key) {
        return getImageRegistry().get(key);
    }

    /**
     * Returns the <code>ImageDescriptor</code> identified by the given key, or
     * <code>null</code> if it does not exist.
     */
    public static ImageDescriptor getImageDescriptor(String key) {
        return getImageRegistry().getDescriptor(key);
    }

    public static ImageRegistry getImageRegistry() {
        if (imageRegistry == null) {
            imageRegistry = LanguageServerPluginActivator.getDefault().getImageRegistry();
        }
        return imageRegistry;
    }

    public static Image imageFromSymbolKind(SymbolKind kind) {
        switch (kind) {
        case Array:
            return getImage(IMG_ARRAY);
        case Boolean:
            return getImage(IMG_BOOLEAN);
        case Class:
            return getImage(IMG_CLASS);
        case Constant:
            return getImage(IMG_CONSTANT);
        case Constructor:
            return getImage(IMG_CONSTRUCTOR);
        case Enum:
            return getImage(IMG_ENUM);
        case Field:
            return getImage(IMG_FIELD);
        case File:
            return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FILE);
        case Function:
            return getImage(IMG_FUNCTION);
        case Interface:
            return getImage(IMG_INTERACE);
        case Method:
            return getImage(IMG_METHOD);
        case Module:
            return getImage(IMG_MODULE);
        case Namespace:
            return getImage(IMG_NAMESPACE);
        case Number:
            return getImage(IMG_NUMBER);
        case Package:
            return getImage(IMG_PACKAGE);
        case Property:
            return getImage(IMG_PROPERTY);
        case String:
            return getImage(IMG_STRING);
        case Variable:
            return getImage(IMG_VARIABLE);
        }
        return null;
    }

    public static Image imageFromCompletionKind(CompletionItemKind kind) {
        switch (kind) {
        case Text:
            return getImage(IMG_TEXT);
        case Method:
            return getImage(IMG_METHOD);
        case Function:
            return getImage(IMG_FUNCTION);
        case Constructor:
            return getImage(IMG_CONSTRUCTOR);
        case Field:
            return getImage(IMG_FIELD);
        case Variable:
            return getImage(IMG_VARIABLE);
        case Class:
            return getImage(IMG_CLASS);
        case Interface:
            return getImage(IMG_INTERACE);
        case Module:
            return getImage(IMG_MODULE);
        case Property:
            return getImage(IMG_PROPERTY);
        case Unit:
            return getImage(IMG_UNIT);
        case Value:
            return getImage(IMG_VALUE);
        case Enum:
            return getImage(IMG_ENUM);
        case Keyword:
            return getImage(IMG_KEYWORD);
        case Snippet:
            return getImage(IMG_SNIPPET);
        case Color:
            return getImage(IMG_COLOR); //Color TODO use Gef Palette icon or generate color image
        case File:
            return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FILE);
        case Reference:
            return getImage(IMG_REFERENCE);
        }
        return null;
    }

}