001: /*******************************************************************************
002: * Copyright (c) 2003, 2006 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.ui.internal.activities.ws;
011:
012: import java.util.HashMap;
013: import java.util.Map;
014:
015: import org.eclipse.jface.resource.DeviceResourceException;
016: import org.eclipse.jface.resource.ImageDescriptor;
017: import org.eclipse.jface.resource.JFaceResources;
018: import org.eclipse.jface.resource.LocalResourceManager;
019: import org.eclipse.jface.viewers.LabelProvider;
020: import org.eclipse.swt.graphics.Image;
021: import org.eclipse.ui.PlatformUI;
022: import org.eclipse.ui.activities.IActivity;
023: import org.eclipse.ui.activities.ICategory;
024: import org.eclipse.ui.activities.NotDefinedException;
025:
026: /**
027: * Provides labels for elements drawn from <code>IActivityManagers</code>.
028: * Ie: <code>IActivity</code> and <code>ICategory</code> objects.
029: *
030: * @since 3.0
031: */
032: public class ActivityCategoryLabelProvider extends LabelProvider {
033:
034: private LocalResourceManager manager;
035: private Map descriptorMap = new HashMap();
036:
037: /**
038: * Create a new instance of this class.
039: */
040: public ActivityCategoryLabelProvider() {
041: manager = new LocalResourceManager(JFaceResources
042: .getResources());
043: }
044:
045: /* (non-Javadoc)
046: * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
047: */
048: public Image getImage(Object element) {
049: try {
050: ImageDescriptor descriptor = getDescriptor(element);
051: if (descriptor != null) {
052: return manager.createImage(descriptor);
053: }
054: } catch (DeviceResourceException e) {
055: //ignore
056: }
057: return null;
058: }
059:
060: private ImageDescriptor getDescriptor(Object element) {
061: ImageDescriptor descriptor = (ImageDescriptor) descriptorMap
062: .get(element);
063: if (descriptor != null) {
064: return descriptor;
065: }
066:
067: if (element instanceof ICategory) {
068: ICategory category = (ICategory) element;
069: descriptor = PlatformUI.getWorkbench().getActivitySupport()
070: .getImageDescriptor(category);
071: if (descriptor != null) {
072: descriptorMap.put(element, descriptor);
073: }
074: } else if (element instanceof IActivity) {
075: IActivity activity = (IActivity) element;
076: descriptor = PlatformUI.getWorkbench().getActivitySupport()
077: .getImageDescriptor(activity);
078: if (descriptor != null) {
079: descriptorMap.put(element, descriptor);
080: }
081: }
082: return descriptor;
083: }
084:
085: /* (non-Javadoc)
086: * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
087: */
088: public String getText(Object element) {
089: if (element instanceof IActivity) {
090: IActivity activity = (IActivity) element;
091: try {
092: return activity.getName();
093: } catch (NotDefinedException e) {
094: return activity.getId();
095: }
096: } else if (element instanceof ICategory) {
097: ICategory category = ((ICategory) element);
098: try {
099: return category.getName();
100: } catch (NotDefinedException e) {
101: return category.getId();
102: }
103: }
104: return super .getText(element);
105: }
106:
107: /* (non-Javadoc)
108: * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
109: */
110: public void dispose() {
111: manager.dispose();
112: descriptorMap.clear();
113: }
114: }
|