org.eclipse.datatools.connectivity.internal.ui.DriverTreeLabelProvider.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.datatools.connectivity.internal.ui.DriverTreeLabelProvider.java

Source

/*******************************************************************************
 * Copyright (c) 2004-2005 Sybase, Inc.
 * 
 * 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: brianf - initial API and implementation
 ******************************************************************************/
package org.eclipse.datatools.connectivity.internal.ui;

import java.util.Vector;

import org.eclipse.datatools.connectivity.drivers.DriverValidator;
import org.eclipse.datatools.connectivity.drivers.IDriverMgmtConstants;
import org.eclipse.datatools.connectivity.drivers.IPropertySet;
import org.eclipse.datatools.connectivity.drivers.models.CategoryDescriptor;
import org.eclipse.datatools.connectivity.drivers.models.DriversProvider;
import org.eclipse.datatools.connectivity.drivers.models.TemplateDescriptor;
import org.eclipse.jface.viewers.ILabelDecorator;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;

/**
 * Label provider and decorator for the driver tree
 * 
 * @author brianf
 */
public class DriverTreeLabelProvider extends LabelProvider implements ILabelDecorator {

    // Images
    private Image mNullImage = DriverImages.NULLIMAGE.createImage();
    private Image mDriverImage = DriverImages.DRIVER.createImage();
    private Image mCategoryImage = DriverImages.CATEGORY.createImage();

    // List of images
    private static DriverImages driverImage_ = new DriverImages();

    /*
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
     */
    public void dispose() {
        // no resources to dispose
        this.mNullImage.dispose();
        this.mDriverImage.dispose();
        this.mCategoryImage.dispose();
        this.mNullImage = null;
        this.mDriverImage = null;
        this.mCategoryImage = null;
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
     */
    public Image getImage(Object element) {
        Image returnImage = null;
        if (element instanceof DriversProvider)
            returnImage = null;
        else if (element instanceof CategoryDescriptor) {
            returnImage = this.mCategoryImage;
        } else if (element instanceof TemplateDescriptor) {
            returnImage = this.mDriverImage;
        } else if (element instanceof IPropertySet) {
            returnImage = this.mDriverImage;
        }

        return returnImage;
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
     */
    public String getText(Object element) {
        if (element instanceof DriversProvider)
            return null;
        else if (element instanceof CategoryDescriptor) {
            return ((CategoryDescriptor) element).getName();
        } else if (element instanceof TemplateDescriptor) {
            return ((TemplateDescriptor) element).getName();
        } else if (element instanceof IPropertySet) {
            return ((IPropertySet) element).getName();
        }
        return ""; //$NON-NLS-1$
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.viewers.ILabelDecorator#decorateImage(org.eclipse.swt.graphics.Image,
     *      java.lang.Object)
     */
    public Image decorateImage(Image image, Object element) {
        if (!(element instanceof IPropertySet))
            return null;

        IPropertySet instance = (IPropertySet) element;
        String driverType = instance.getBaseProperties().getProperty(IDriverMgmtConstants.PROP_DEFN_TYPE);
        TemplateDescriptor template = TemplateDescriptor.getDriverTemplateDescriptor(driverType);
        DriverValidator validator = new DriverValidator(template, instance);
        if (validator.isValid())
            return null;

        Vector decoratorImageKeys = new Vector();
        decoratorImageKeys.add(DriverImages.ERROR_KEY);

        if (decoratorImageKeys.size() != 0) {
            image = drawIconImage(image, decoratorImageKeys);
            return image;
        }
        // The resource need not be decorated
        return null;
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.viewers.ILabelDecorator#decorateText(java.lang.String,
     *      java.lang.Object)
     */
    public String decorateText(String text, Object element) {
        return null;
    }

    /**
     * Function to draw icon image
     * 
     * @param baseImage base image of the object resource
     * @param decoratorImageKeys vector of image keys
     * 
     * @return icon image with which the resource is to be decorated
     */
    private Image drawIconImage(Image baseImage, Vector decoratorImageKeys) {
        Image image;
        OverlayImageIcon overlayIcon = new OverlayImageIcon(baseImage, driverImage_, decoratorImageKeys);
        image = overlayIcon.getImage();
        return image;
    }

    /* (non-Javadoc)
     * @see org.eclipse.jface.viewers.LabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
     */
    public void addListener(ILabelProviderListener listener) {
        // nothing
    }

    /* (non-Javadoc)
     * @see org.eclipse.jface.viewers.LabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
     */
    public boolean isLabelProperty(Object element, String property) {
        return false;
    }

    /* (non-Javadoc)
     * @see org.eclipse.jface.viewers.LabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
     */
    public void removeListener(ILabelProviderListener listener) {
        // nothing
    }
}