/*******************************************************************************
 * Copyright (c) 2009 Tasktop Technologies and others.
 *  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:
 *      Tasktop Technologies - initial API and implementation
 *******************************************************************************/

package org.eclipse.mylyn.internal.oslc.ui;

import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.mylyn.commons.ui.CommonImages;
import org.eclipse.mylyn.internal.oslc.core.OslcCreationDialogDescriptor;
import org.eclipse.mylyn.internal.oslc.core.OslcServiceDescriptor;
import org.eclipse.mylyn.internal.oslc.core.OslcServiceProvider;
import org.eclipse.mylyn.internal.oslc.core.OslcServiceProviderCatalog;
import org.eclipse.mylyn.internal.oslc.ui.OslcServiceDiscoveryProvider.ServiceProviderCatalogWrapper;
import org.eclipse.mylyn.tasks.ui.TasksUiImages;
import org.eclipse.swt.graphics.Image;

/**
 * @author Robert Elves
 */
public class OslcServiceLabelProvider extends LabelProvider {

	@Override
	public String getText(Object element) {
		if (element instanceof OslcServiceProvider) {
			return ((OslcServiceProvider) element).getName();
		} else if (element instanceof OslcCreationDialogDescriptor) {
			return ((OslcCreationDialogDescriptor) element).getTitle();
		} else if (element instanceof OslcServiceDescriptor) {
			return ((OslcServiceDescriptor) element).getDescription();
		} else if (element instanceof ServiceProviderCatalogWrapper) {
			return this.getText(((ServiceProviderCatalogWrapper) element).getServiceObject());
		} else {
			return Messages.OslcServiceLabelProvider_Loading;
		}
	}

	@Override
	public Image getImage(Object element) {
		if (element instanceof OslcServiceProviderCatalog) {
			return CommonImages.getImage(TasksUiImages.REPOSITORIES_VIEW);
		} else if (element instanceof OslcServiceProvider) {
			return CommonImages.getImage(TasksUiImages.REPOSITORY);
		} else if (element instanceof ServiceProviderCatalogWrapper) {
			return this.getImage(((ServiceProviderCatalogWrapper) element).getServiceObject());
		}
		return null;
	}
}
