01: /*******************************************************************************
02: * Copyright (c) 2005, 2006 IBM Corporation and others.
03: * All rights reserved. This program and the accompanying materials
04: * are made available under the terms of the Eclipse Public License v1.0
05: * which accompanies this distribution, and is available at
06: * http://www.eclipse.org/legal/epl-v10.html
07: *
08: * Contributors:
09: * IBM Corporation - initial API and implementation
10: *******************************************************************************/package org.eclipse.jface.internal.databinding.provisional.viewers;
11:
12: import java.util.ArrayList;
13: import java.util.Collection;
14: import java.util.List;
15:
16: import org.eclipse.jface.internal.databinding.provisional.swt.SWTUtil;
17: import org.eclipse.jface.viewers.ILabelProvider;
18: import org.eclipse.jface.viewers.ILabelProviderListener;
19: import org.eclipse.jface.viewers.IViewerLabelProvider;
20: import org.eclipse.jface.viewers.LabelProviderChangedEvent;
21: import org.eclipse.jface.viewers.ViewerLabel;
22: import org.eclipse.swt.graphics.Image;
23:
24: /**
25: * NON-API - Generic viewer label provider.
26: * @since 1.1
27: *
28: */
29: public class ViewerLabelProvider implements IViewerLabelProvider,
30: ILabelProvider {
31:
32: private List listeners = new ArrayList();
33:
34: /**
35: * Subclasses should override this method. They should not call the base
36: * class implementation.
37: */
38: public void updateLabel(ViewerLabel label, Object element) {
39: label.setText(element.toString());
40: }
41:
42: protected final void fireChangeEvent(Collection changes) {
43: final LabelProviderChangedEvent event = new LabelProviderChangedEvent(
44: this , changes.toArray());
45: ILabelProviderListener[] listenerArray = (ILabelProviderListener[]) listeners
46: .toArray(new ILabelProviderListener[listeners.size()]);
47: for (int i = 0; i < listenerArray.length; i++) {
48: ILabelProviderListener listener = listenerArray[i];
49: try {
50: listener.labelProviderChanged(event);
51: } catch (Exception e) {
52: SWTUtil.logException(e);
53: }
54: }
55: }
56:
57: public final Image getImage(Object element) {
58: ViewerLabel label = new ViewerLabel("", null); //$NON-NLS-1$
59: updateLabel(label, element);
60: return label.getImage();
61: }
62:
63: public final String getText(Object element) {
64: ViewerLabel label = new ViewerLabel("", null); //$NON-NLS-1$
65: updateLabel(label, element);
66: return label.getText();
67: }
68:
69: public void addListener(ILabelProviderListener listener) {
70: listeners.add(listener);
71: }
72:
73: public void dispose() {
74: listeners.clear();
75: }
76:
77: public final boolean isLabelProperty(Object element, String property) {
78: return true;
79: }
80:
81: public void removeListener(ILabelProviderListener listener) {
82: listeners.remove(listener);
83: }
84:
85: }
|