blob: 50bd1cc87d442dbcc79dec846f537c43c1318afc [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2004 IBM Corporation 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.tests.adaptable;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.model.IWorkbenchAdapter;
/**
* @version 1.0
* @author
*/
public class TestAdaptableWorkbenchAdapter extends LabelProvider implements
IWorkbenchAdapter {
private static TestAdaptableWorkbenchAdapter singleton = new TestAdaptableWorkbenchAdapter();
public static TestAdaptableWorkbenchAdapter getInstance() {
return singleton;
}
public TestAdaptableWorkbenchAdapter() {
}
/*
* @see IWorkbenchAdapter#getChildren(Object)
*/
public Object[] getChildren(Object o) {
if (o instanceof AdaptableResourceWrapper)
return ((AdaptableResourceWrapper) o).getChildren();
if (o instanceof IResource) {
AdaptableResourceWrapper wrapper = new AdaptableResourceWrapper(
(IResource) o);
return wrapper.getChildren();
}
return new Object[0];
}
/*
* @see IWorkbenchAdapter#getImageDescriptor(Object)
*/
public ImageDescriptor getImageDescriptor(Object object) {
return null;
}
/*
* @see IWorkbenchAdapter#getLabel(Object)
*/
public String getLabel(Object o) {
if (o instanceof AdaptableResourceWrapper)
return ((AdaptableResourceWrapper) o).getLabel();
else
return null;
}
/*
* @see IWorkbenchAdapter#getParent(Object)
*/
public Object getParent(Object o) {
if (o instanceof AdaptableResourceWrapper)
return ((AdaptableResourceWrapper) o).getParent();
else
return null;
}
/**
* Returns an image descriptor that is based on the given descriptor,
* but decorated with additional information relating to the state
* of the provided object.
*
* Subclasses may reimplement this method to decorate an object's
* image.
* @see org.eclipse.jface.resource.CompositeImage
*/
protected ImageDescriptor decorateImage(ImageDescriptor input,
Object element) {
return input;
}
/**
* Returns a label that is based on the given label,
* but decorated with additional information relating to the state
* of the provided object.
*
* Subclasses may implement this method to decorate an object's
* label.
*/
protected String decorateText(String input, Object element) {
return input;
}
/* (non-Javadoc)
* Method declared on IBaseLabelProvider
*/
/**
* Disposes of all allocated images.
*/
public final void dispose() {
}
/**
* Returns the implementation of IWorkbenchAdapter for the given
* object. Returns <code>null</code> if the adapter is not defined or the
* object is not adaptable.
*/
protected final IWorkbenchAdapter getAdapter(Object o) {
if (!(o instanceof IAdaptable)) {
return null;
}
return (IWorkbenchAdapter) ((IAdaptable) o)
.getAdapter(IWorkbenchAdapter.class);
}
/* (non-Javadoc)
* Method declared on ILabelProvider
*/
public final Image getImage(Object element) {
//obtain the base image by querying the element
IWorkbenchAdapter adapter = getAdapter(element);
if (adapter == null)
return null;
ImageDescriptor descriptor = adapter.getImageDescriptor(element);
if (descriptor == null)
return null;
//add any annotations to the image descriptor
descriptor = decorateImage(descriptor, element);
return descriptor.createImage();
}
/* (non-Javadoc)
* Method declared on ILabelProvider
*/
public final String getText(Object element) {
//query the element for its label
IWorkbenchAdapter adapter = getAdapter(element);
if (adapter == null)
return ""; //$NON-NLS-1$
String label = adapter.getLabel(element);
//return the decorated label
return decorateText(label, element);
}
}