org.eclipse.xtext.ui.editor.hierarchy.HierarchyLabelProvider.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.xtext.ui.editor.hierarchy.HierarchyLabelProvider.java

Source

/**
 * Copyright (c) 2016 TypeFox GmbH (http://www.typefox.io) 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
 */
package org.eclipse.xtext.ui.editor.hierarchy;

import com.google.inject.Inject;
import com.google.inject.Singleton;
import org.eclipse.jface.viewers.DecorationOverlayIcon;
import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider;
import org.eclipse.jface.viewers.IDecoration;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.StyledString;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.progress.PendingUpdateAdapter;
import org.eclipse.xtext.ide.editor.hierarchy.IHierarchyNode;
import org.eclipse.xtext.resource.IEObjectDescription;
import org.eclipse.xtext.ui.internal.XtextPluginImages;
import org.eclipse.xtext.ui.label.GlobalDescriptionLabelProvider;

/**
 * @author kosyakov - Initial contribution and API
 * @since 2.10
 */
@Singleton
@SuppressWarnings("all")
public class HierarchyLabelProvider extends LabelProvider
        implements DelegatingStyledCellLabelProvider.IStyledLabelProvider {
    @Inject
    private GlobalDescriptionLabelProvider globalDescriptionProvider;

    @Override
    public Image getImage(final Object element) {
        if ((element instanceof PendingUpdateAdapter)) {
            return null;
        }
        final Image image = this.globalDescriptionProvider.getImage(this.getDescription(element));
        if ((image == null)) {
            return null;
        }
        boolean _matched = false;
        if (element instanceof IHierarchyNode) {
            boolean _isRecursive = ((IHierarchyNode) element).isRecursive();
            if (_isRecursive) {
                _matched = true;
                return this.decorateRecursive(image);
            }
        }
        return image;
    }

    protected Image decorateRecursive(final Image image) {
        return new DecorationOverlayIcon(image, XtextPluginImages.DESC_OVR_RECURSIVE, IDecoration.BOTTOM_LEFT)
                .createImage();
    }

    @Override
    public String getText(final Object element) {
        if ((element instanceof PendingUpdateAdapter)) {
            return this.getPendingText();
        }
        return this.globalDescriptionProvider.getText(this.getDescription(element));
    }

    @Override
    public StyledString getStyledText(final Object element) {
        if ((element instanceof PendingUpdateAdapter)) {
            String _pendingText = this.getPendingText();
            return new StyledString(_pendingText);
        }
        return this.globalDescriptionProvider.getStyledText(this.getDescription(element));
    }

    protected IEObjectDescription getDescription(final Object element) {
        if ((element instanceof IHierarchyNode)) {
            return ((IHierarchyNode) element).getElement();
        }
        return null;
    }

    protected String getPendingText() {
        return "...";
    }
}