/** * 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); } }