com.javadude.antxr.eclipse.ui.editor.outline.AntxrOutlineLabelProvider.java Source code

Java tutorial

Introduction

Here is the source code for com.javadude.antxr.eclipse.ui.editor.outline.AntxrOutlineLabelProvider.java

Source

/*******************************************************************************
 * Copyright (c) 2008 Scott Stanchfield, based on ANTLR-Eclipse plugin
 *   by Torsten Juergeleit.
 * 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
 *    Torsten Juergeleit - original ANTLR Eclipse plugin
 *    Scott Stanchfield - modifications for ANTXR
 *******************************************************************************/
package com.javadude.antxr.eclipse.ui.editor.outline;

import java.util.HashMap;
import java.util.Iterator;

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;

import com.javadude.antxr.eclipse.core.parser.AbstractModel;
import com.javadude.antxr.eclipse.core.parser.Grammar;
import com.javadude.antxr.eclipse.core.parser.Rule;
import com.javadude.antxr.eclipse.ui.AntxrUIPluginImages;

/**
 * Renderer for the outline view
 */
public class AntxrOutlineLabelProvider extends LabelProvider {
    private HashMap<ImageDescriptor, Image> fImageCache = new HashMap<ImageDescriptor, Image>();

    /** {@inheritDoc} */
    public Image getImage(Object anElement) {
        ImageDescriptor descriptor;
        if (anElement instanceof Grammar) {
            descriptor = AntxrUIPluginImages.DESC_OBJS_CLASS;
        } else if (anElement instanceof Rule) {
            switch (((Rule) anElement).getVisibility()) {
            case Rule.PRIVATE:
                descriptor = AntxrUIPluginImages.DESC_MISC_PRIVATE;
                break;

            case Rule.PROTECTED:
                descriptor = AntxrUIPluginImages.DESC_MISC_PROTECTED;
                break;

            default:
                descriptor = AntxrUIPluginImages.DESC_MISC_PUBLIC;
                break;
            }
        } else {
            descriptor = AntxrUIPluginImages.DESC_MISC_DEFAULT;
        }

        // obtain the cached image corresponding to the descriptor
        Image image = fImageCache.get(descriptor);
        if (image == null) {
            image = descriptor.createImage();
            fImageCache.put(descriptor, image);
        }
        return image;
    }

    /** {@inheritDoc} */
    public String getText(Object anElement) {
        if (anElement instanceof AbstractModel) {
            return ((AbstractModel) anElement).getName();
        }
        return "<Noname>";
    }

    /** {@inheritDoc} */
    public void dispose() {
        for (Iterator images = fImageCache.values().iterator(); images.hasNext();) {
            ((Image) images.next()).dispose();
        }
        fImageCache.clear();
    }
}