org.absmodels.abs.plugin.editor.outline.ABSContentOutlineStyledLabelProvider.java Source code

Java tutorial

Introduction

Here is the source code for org.absmodels.abs.plugin.editor.outline.ABSContentOutlineStyledLabelProvider.java

Source

/** 
 * Copyright (c) 2009-2011, The HATS Consortium. All rights reserved. 
 * This file is licensed under the terms of the Modified BSD License.
 */
package org.absmodels.abs.plugin.editor.outline;

import static org.absmodels.abs.plugin.util.Images.getImageForObject;

import org.absmodels.abs.plugin.navigator.ModulePath;
import org.absmodels.abs.plugin.util.InternalASTNode;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.StyledCellLabelProvider;
import org.eclipse.jface.viewers.StyledString;
import org.eclipse.jface.viewers.ViewerCell;
import org.eclipse.swt.graphics.Image;

import abs.frontend.ast.ASTNode;

/**
 * The label provider is responsible for converting ASTNodes into their String
 * representations
 * 
 * @author cseise
 * 
 */
public class ABSContentOutlineStyledLabelProvider extends StyledCellLabelProvider implements ILabelProvider {

    public ABSContentOutlineStyledLabelProvider() {
        super(StyledCellLabelProvider.COLORS_ON_SELECTION);
    }

    @Override
    public void update(ViewerCell cell) {
        Object obj = cell.getElement();

        StyledString styledString = getLabel(obj);

        cell.setText(styledString.toString());
        cell.setStyleRanges(styledString.getStyleRanges());
        cell.setImage(getImage(obj));
        super.update(cell);
    }

    @Override
    public Image getImage(Object element) {
        return getImageForObject(element);
    }

    @Override
    public String getText(Object element) {
        return getLabel(element).toString();
    }

    public static StyledString getLabel(Object obj) {
        if (obj instanceof InternalASTNode<?>) {
            return ABSContentOutlineUtils.getLabel((InternalASTNode<?>) obj);
        } else if (obj instanceof ModulePath) {
            return ABSContentOutlineUtils.getLabel((ModulePath) obj);
        } else if (obj instanceof PackageContainer) {
            return ABSContentOutlineUtils.getLabel((PackageContainer) obj);
        } else if (obj instanceof PackageEntry) {
            return ABSContentOutlineUtils.getLabel((PackageEntry) obj);
        } else if (obj instanceof PackageAbsFile) {
            return ABSContentOutlineUtils.getLabel((PackageAbsFile) obj);
        } else if (obj instanceof ASTNode<?>) {
            return ABSContentOutlineUtils.getLabel((ASTNode<?>) obj);
        }
        return ABSContentOutlineUtils.getLabel(obj);
    }
}