Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 97780 | Differences between
and this patch

Collapse All | Expand All

(-)BaseWorkbenchContentProvider.java (-16 / +18 lines)
Lines 11-16 Link Here
11
package org.eclipse.ui.model;
11
package org.eclipse.ui.model;
12
12
13
import org.eclipse.core.runtime.IAdaptable;
13
import org.eclipse.core.runtime.IAdaptable;
14
import org.eclipse.core.runtime.Platform;
14
import org.eclipse.jface.viewers.ITreeContentProvider;
15
import org.eclipse.jface.viewers.ITreeContentProvider;
15
import org.eclipse.jface.viewers.Viewer;
16
import org.eclipse.jface.viewers.Viewer;
16
17
Lines 42-67 Link Here
42
    }
43
    }
43
44
44
    /**
45
    /**
45
     * Returns the implementation of IWorkbenchAdapter for the given
46
     * Returns the implementation of <code>IWorkbenchAdapter</code> for the given
46
     * object.  Returns null if the adapter is not defined or the
47
     * object.  Returns <code>null</code> if the adapter is not defined for the
47
     * object is not adaptable.
48
     * object.
48
     * <p>
49
     * </p>
50
     * 
49
     * 
51
     * @param element the element
50
     * @param element the element
52
     * @return the corresponding workbench adapter object
51
     * @return the corresponding workbench adapter object, or <code>null</code>
53
     */
52
     */
54
    protected IWorkbenchAdapter getAdapter(Object element) {
53
    protected IWorkbenchAdapter getAdapter(Object element) {
55
        if (!(element instanceof IAdaptable)) {
54
		IWorkbenchAdapter adapter = null;
56
            return null;
55
		if (element instanceof IAdaptable)
57
        }
56
			adapter = (IWorkbenchAdapter) ((IAdaptable) element)
58
        return (IWorkbenchAdapter) ((IAdaptable) element)
57
					.getAdapter(IWorkbenchAdapter.class);
59
                .getAdapter(IWorkbenchAdapter.class);
58
		if (adapter == null && element != null)
60
    }
59
			adapter = (IWorkbenchAdapter) Platform.getAdapterManager()
61
60
					.loadAdapter(element, IWorkbenchAdapter.class.getName());
62
    /* (non-Javadoc)
61
		return adapter;
63
     * Method declared on ITreeContentProvider.
62
	}
64
     */
63
64
    /*
65
	 * (non-Javadoc) Method declared on ITreeContentProvider.
66
	 */
65
    public Object[] getChildren(Object element) {
67
    public Object[] getChildren(Object element) {
66
        IWorkbenchAdapter adapter = getAdapter(element);
68
        IWorkbenchAdapter adapter = getAdapter(element);
67
        if (adapter != null) {
69
        if (adapter != null) {
(-)WorkbenchLabelProvider.java (-28 / +41 lines)
Lines 11-16 Link Here
11
package org.eclipse.ui.model;
11
package org.eclipse.ui.model;
12
12
13
import org.eclipse.core.runtime.IAdaptable;
13
import org.eclipse.core.runtime.IAdaptable;
14
import org.eclipse.core.runtime.Platform;
14
import org.eclipse.jface.resource.ImageDescriptor;
15
import org.eclipse.jface.resource.ImageDescriptor;
15
import org.eclipse.jface.viewers.DecoratingLabelProvider;
16
import org.eclipse.jface.viewers.DecoratingLabelProvider;
16
import org.eclipse.jface.viewers.IColorProvider;
17
import org.eclipse.jface.viewers.IColorProvider;
Lines 43-49 Link Here
43
     * Returns a workbench label provider that is hooked up to the decorator
44
     * Returns a workbench label provider that is hooked up to the decorator
44
     * mechanism.
45
     * mechanism.
45
     * 
46
     * 
46
     * @return a new <code>DecoratingLabelProvider</code> which wraps a <code>
47
     * @return a new <code>DecoratingLabelProvider</code> which wraps a 
47
     *   new <code>WorkbenchLabelProvider</code>
48
     *   new <code>WorkbenchLabelProvider</code>
48
     */
49
     */
49
    public static ILabelProvider getDecoratingWorkbenchLabelProvider() {
50
    public static ILabelProvider getDecoratingWorkbenchLabelProvider() {
Lines 80-88 Link Here
80
     * Subclasses may reimplement this method to decorate an object's
81
     * Subclasses may reimplement this method to decorate an object's
81
     * image.
82
     * image.
82
     * 
83
     * 
83
     * @param input The base image to decorate.
84
     * @param input the base image to decorate
84
     * @param element The element used to look up decorations.
85
     * @param element the element used to look up decorations
85
     * @return the resuling ImageDescriptor.
86
     * @return the resulting image descriptor
86
     * @see org.eclipse.jface.resource.CompositeImageDescriptor
87
     * @see org.eclipse.jface.resource.CompositeImageDescriptor
87
     */
88
     */
88
    protected ImageDescriptor decorateImage(ImageDescriptor input,
89
    protected ImageDescriptor decorateImage(ImageDescriptor input,
Lines 97-104 Link Here
97
     *
98
     *
98
     * Subclasses may implement this method to decorate an object's
99
     * Subclasses may implement this method to decorate an object's
99
     * label.
100
     * label.
100
     * @param input The base text to decorate.
101
     * @param input the base text to decorate
101
     * @param element The element used to look up decorations.
102
     * @param element the element used to look up decorations
102
     * @return the resulting text
103
     * @return the resulting text
103
     */
104
     */
104
    protected String decorateText(String input, Object element) {
105
    protected String decorateText(String input, Object element) {
Lines 114-146 Link Here
114
    }
115
    }
115
    
116
    
116
    /**
117
    /**
117
     * Returns the implementation of IWorkbenchAdapter for the given
118
     * Returns the implementation of the specified adapter for the 
118
     * object.  
119
     * given object, or <code>null</code> if the object has no such adapter.
119
     * @param o the object to look up.
120
     * 
120
     * @return IWorkbenchAdapter or<code>null</code> if the adapter is not defined or the
121
     * @param element the element
121
     * object is not adaptable. 
122
     * @param clazz the adapter class
123
     * @return the adapter or <code>null</code>
124
     */
125
    private Object getAdapter(Object element, Class clazz) {
126
    	Object adapter = null;
127
		if (element instanceof IAdaptable)
128
			adapter = (IWorkbenchAdapter) ((IAdaptable) element).getAdapter(clazz);
129
		// Use IAdapterManager.loadAdapter if the adapter is not found directly.
130
		// For rationale, see bug 97780 [Model] Make BaseWorkbenchContentProvider and LabelProvider adapter manager friendly
131
        if (adapter == null && element != null) {
132
        	adapter = Platform.getAdapterManager().loadAdapter(element, clazz.getName());
133
        }
134
        return adapter;
135
    }
136
    
137
    /**
138
     * Returns the implementation of <code>IWorkbenchAdapter</code> for the 
139
     * given object, or <code>null</code> if the object has no such adapter.
140
     *   
141
     * @param o the object
142
     * @return the adapter or <code>null</code> 
122
     */
143
     */
123
    protected final IWorkbenchAdapter getAdapter(Object o) {
144
    protected final IWorkbenchAdapter getAdapter(Object o) {
124
        if (!(o instanceof IAdaptable)) {
145
        return (IWorkbenchAdapter) getAdapter(o, IWorkbenchAdapter.class);
125
            return null;
126
        }
127
        return (IWorkbenchAdapter) ((IAdaptable) o)
128
                .getAdapter(IWorkbenchAdapter.class);
129
    }
146
    }
130
147
131
    /**
148
    /**
132
     * Returns the implementation of IWorkbenchAdapter2 for the given
149
     * Returns the implementation of <code>IWorkbenchAdapter2</code> for the given
133
     * object.  
150
     * object, or <code>null</code> if the object has no such adapter.
134
     * @param o the object to look up.
151
     * 
135
     * @return IWorkbenchAdapter2 or<code>null</code> if the adapter is not defined or the
152
     * @param o the object
136
     * object is not adaptable. 
153
     * @return the adapter or <code>null</code>
137
     */
154
     */
138
    protected final IWorkbenchAdapter2 getAdapter2(Object o) {
155
    protected final IWorkbenchAdapter2 getAdapter2(Object o) {
139
        if (!(o instanceof IAdaptable)) {
156
        return (IWorkbenchAdapter2) getAdapter(o, IWorkbenchAdapter2.class);
140
            return null;
141
        }
142
        return (IWorkbenchAdapter2) ((IAdaptable) o)
143
                .getAdapter(IWorkbenchAdapter2.class);
144
    }
157
    }
145
158
146
    /* (non-Javadoc)
159
    /* (non-Javadoc)
Lines 219-230 Link Here
219
        return font;
232
        return font;
220
    }
233
    }
221
234
222
    private Color getColor(Object element, boolean forground) {
235
    private Color getColor(Object element, boolean foreground) {
223
        IWorkbenchAdapter2 adapter = getAdapter2(element);
236
        IWorkbenchAdapter2 adapter = getAdapter2(element);
224
        if (adapter == null) {
237
        if (adapter == null) {
225
            return null;
238
            return null;
226
        }
239
        }
227
        RGB descriptor = forground ? adapter.getForeground(element) : adapter
240
        RGB descriptor = foreground ? adapter.getForeground(element) : adapter
228
                .getBackground(element);
241
                .getBackground(element);
229
        if (descriptor == null) {
242
        if (descriptor == null) {
230
            return null;
243
            return null;

Return to bug 97780