001: /*******************************************************************************
002: * Copyright (c) 2000, 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.dialogs;
011:
012: import java.util.ArrayList;
013: import java.util.Iterator;
014: import java.util.List;
015:
016: import org.eclipse.jface.viewers.ITableLabelProvider;
017: import org.eclipse.jface.viewers.LabelProvider;
018: import org.eclipse.osgi.util.TextProcessor;
019: import org.eclipse.swt.graphics.Image;
020: import org.eclipse.ui.IFileEditorMapping;
021:
022: /**
023: * A label provider for displaying of <code>IFileEditorMapping</code>
024: * objects in viewers.
025: * <p>
026: * This class has a singleton instance,
027: * <code>FileEditorMappingLabelProvider.INSTANCE</code>,
028: * which can be used any place this kind of label provider is needed.
029: * </p>
030: * <p>
031: * The singleton instance hangs on to images, which get freed up when
032: * <code>dispose</code> is called.
033: * </p>
034: *
035: * @see org.eclipse.jface.viewers.ILabelProvider
036: */
037: public class FileEditorMappingLabelProvider extends LabelProvider
038: implements ITableLabelProvider {
039:
040: /**
041: * Singleton instance accessor.
042: */
043: public final static FileEditorMappingLabelProvider INSTANCE = new FileEditorMappingLabelProvider();
044:
045: /**
046: * Images that will require disposal.
047: */
048: private List imagesToDispose = new ArrayList();
049:
050: /**
051: * Creates an instance of this class. The private visibility of this
052: * constructor ensures that this class is only usable as a singleton.
053: */
054: private FileEditorMappingLabelProvider() {
055: super ();
056: }
057:
058: /* (non-Javadoc)
059: * Method declared on ILabelProvider.
060: */
061: public void dispose() {
062: super .dispose();
063: for (Iterator e = imagesToDispose.iterator(); e.hasNext();) {
064: ((Image) e.next()).dispose();
065: }
066: imagesToDispose.clear();
067: }
068:
069: /**
070: * The <code>ResourceTypeEditorMappingLabelProvider</code> implementation of this
071: * <code>ITableLabelProvider</code> method creates and returns an new image. The
072: * image is remembered internally and will be deallocated by
073: * <code>dispose</code>.
074: */
075: public Image getColumnImage(Object element, int row) {
076: return getImage(element);
077: }
078:
079: /* (non-Javadoc)
080: * Method declared on ITableLabelProvider.
081: */
082: public String getColumnText(Object element, int row) {
083: return getText(element);
084: }
085:
086: /**
087: * The <code>ResourceTypeEditorMappingLabelProvider</code> implementation of this
088: * <code>ILabelProvider</code> method creates and returns an new image. The image
089: * is remembered internally and will be deallocated by <code>dispose</code>.
090: */
091: public Image getImage(Object element) {
092: if (element instanceof IFileEditorMapping) {
093: Image image = ((IFileEditorMapping) element)
094: .getImageDescriptor().createImage();
095: imagesToDispose.add(image);
096: return image;
097: }
098: return null;
099: }
100:
101: /* (non-Javadoc)
102: * Method declared on ILabelProvider.
103: */
104: public String getText(Object element) {
105: if (element instanceof IFileEditorMapping) {
106: return TextProcessor.process(((IFileEditorMapping) element)
107: .getLabel(), "*."); //$NON-NLS-1$
108: }
109:
110: return null;
111: }
112: }
|