/** * Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved. * Licensed under the terms of the Eclipse Public License (EPL). * Please see the license.txt included with this distribution for details. * Any modifications to this file must keep this entire header intact. */ /* * Created on Jan 15, 2006 */ package com.python.pydev.actions; import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.StyledString; import org.eclipse.swt.graphics.Image; import org.python.pydev.core.bundle.ImageCache; import org.python.pydev.outline.ParsedItem; import org.python.pydev.parser.jython.SimpleNode; import org.python.pydev.parser.visitors.NodeUtils; import org.python.pydev.parser.visitors.scope.ASTEntry; import org.python.pydev.plugin.PydevPlugin; import com.aptana.shared_core.string.FastStringBuffer; import com.python.pydev.ui.hierarchy.TreeNode; public final class ShowOutlineLabelProvider extends LabelProvider implements IStyledLabelProvider { public Image getImage(Object element) { SimpleNode n = null; if (element instanceof TreeNode) { @SuppressWarnings("rawtypes") TreeNode treeNode = (TreeNode) element; element = treeNode.data; } if (element instanceof OutlineEntry) { n = ((OutlineEntry) element).node; } if (element instanceof ASTEntry) { n = ((ASTEntry) element).node; } if (n != null) { ImageCache imageCache = PydevPlugin.getImageCache(); if (imageCache == null) { return null; } return ParsedItem.getImageForNode(imageCache, n, null); } return null; } public String getText(Object element) { if (element instanceof TreeNode) { @SuppressWarnings("rawtypes") TreeNode treeNode = (TreeNode) element; element = treeNode.data; } if (element instanceof OutlineEntry) { OutlineEntry entry = (OutlineEntry) element; String start = NodeUtils.getFullRepresentationString(entry.node); if (entry.model != null) { FastStringBuffer suffix = new FastStringBuffer(" (", entry.model.name.length() + 50) .append(entry.model.name); if (entry.model.moduleName != null && entry.model.moduleName.length() > 0) { suffix.append(" - ").append(entry.model.moduleName); } suffix.append(')'); return start + suffix.toString(); } return start; } if (element instanceof ASTEntry) { return NodeUtils.getFullRepresentationString(((ASTEntry) element).node); } return element.toString(); } public StyledString getStyledText(Object element) { if (element instanceof TreeNode) { @SuppressWarnings("rawtypes") TreeNode treeNode = (TreeNode) element; element = treeNode.data; } if (element instanceof OutlineEntry) { OutlineEntry entry = (OutlineEntry) element; String start = NodeUtils.getFullRepresentationString(entry.node); if (entry.model != null) { FastStringBuffer suffix = new FastStringBuffer(" (", entry.model.name.length() + 50) .append(entry.model.name); if (entry.model.moduleName != null && entry.model.moduleName.length() > 0) { suffix.append(" - ").append(entry.model.moduleName); } suffix.append(')'); return new StyledString(start).append(suffix.toString(), StyledString.QUALIFIER_STYLER); } else if (entry.parentClass != null) { FastStringBuffer suffix = new FastStringBuffer(" (", entry.parentClass.length() + 4).append( entry.parentClass).append(')'); return new StyledString(start).append(suffix.toString(), StyledString.QUALIFIER_STYLER); } return new StyledString(start); } if (element instanceof ASTEntry) { return new StyledString(NodeUtils.getFullRepresentationString(((ASTEntry) element).node)); } return new StyledString(element.toString()); } }