1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-03 07:05:24 +02:00

[238288] use ImageRegistry to store/retrieve images for RSE label providers

This commit is contained in:
David McKnight 2009-05-06 16:35:51 +00:00
parent 0379d2300e
commit bfa9911a84
3 changed files with 11 additions and 59 deletions

View file

@ -1,49 +0,0 @@
/********************************************************************************
* Copyright (c) 2008 IBM Corporation. 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
*
* Initial Contributors:
* The following IBM employees contributed to the Remote System Explorer
* component that contains this file: David McKnight.
*
* Contributors:
* David McKnight (IBM) - [236505] Remote systems dialog not working
********************************************************************************/
package org.eclipse.rse.internal.ui;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import org.eclipse.swt.graphics.Image;
public class RSEImageMap {
private static Map _imageTable = new Hashtable(100);
public static Image get(Object key) {
if (_imageTable != null){
return (Image)_imageTable.get(key);
}
return null;
}
public static void put(Object key, Image image) {
if (_imageTable == null){
_imageTable = new Hashtable(100);
}
_imageTable.put(key, image);
}
public static final void shutdown() {
if (_imageTable != null) {
for (Iterator i = _imageTable.values().iterator(); i.hasNext();) {
((Image) i.next()).dispose();
}
_imageTable = null;
}
}
}

View file

@ -17,6 +17,7 @@
* Martin Oberhuber (Wind River) - [197550] Fix NPE when refreshing Pending items
* David McKnight (IBM) - [236505] Remote systems dialog not working
* Martin Oberhuber (Wind River) - [238519][api] Support styled label decorations
* David McKnight (IBM) - [238288] use ImageRegistry to store/retrieve images for RSE label providers
********************************************************************************/
package org.eclipse.rse.internal.ui.view;
@ -30,6 +31,7 @@ import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.jface.viewers.AbstractTreeViewer;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
@ -41,7 +43,7 @@ import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelP
import org.eclipse.rse.core.model.ISystemViewInputProvider;
import org.eclipse.rse.core.model.SystemMessageObject;
import org.eclipse.rse.core.subsystems.ISubSystem;
import org.eclipse.rse.internal.ui.RSEImageMap;
import org.eclipse.rse.ui.RSEUIPlugin;
import org.eclipse.rse.ui.SystemBasePlugin;
import org.eclipse.rse.ui.model.ISystemShellProvider;
import org.eclipse.rse.ui.operations.SystemDeferredTreeContentManager;
@ -431,7 +433,6 @@ public class SystemViewLabelAndContentProvider extends LabelProvider
public Image getImage(Object element)
{
ISystemViewElementAdapter adapter = getViewAdapter(element);
//System.out.println("Inside getImage. element = " + element + ", adapter = " + adapter);
if (adapter == null)
return null;
@ -442,12 +443,14 @@ public class SystemViewLabelAndContentProvider extends LabelProvider
//add any annotations to the image descriptor
descriptor = decorateImage(descriptor, element);
ImageRegistry imageRegistry = RSEUIPlugin.getDefault().getImageRegistry();
Image image = imageRegistry.get(descriptor.toString());
//obtain the cached image corresponding to the descriptor
Image image = RSEImageMap.get(descriptor);
if (image == null)
{
image = descriptor.createImage();
RSEImageMap.put(descriptor, image);
if (image == null){
image = descriptor.createImage();
imageRegistry.put(descriptor.toString(), image);
}
return image;

View file

@ -33,6 +33,7 @@
* David Dykstal (IBM) - [197167] adding notification and waiting for RSE model
* David McKnight (IBM) - [225506] [api][breaking] RSE UI leaks non-API types
* David McKnight (IBM) - [236505] Remote systems dialog not working
* David McKnight (IBM) - [238288] use ImageRegistry to store/retrieve images for RSE label providers
********************************************************************************/
package org.eclipse.rse.ui;
@ -54,7 +55,6 @@ import org.eclipse.rse.core.subsystems.ISubSystemConfiguration;
import org.eclipse.rse.core.subsystems.ISubSystemConfigurationProxy;
import org.eclipse.rse.internal.core.model.SystemProfileManager;
import org.eclipse.rse.internal.core.model.SystemRegistry;
import org.eclipse.rse.internal.ui.RSEImageMap;
import org.eclipse.rse.internal.ui.RSESystemTypeAdapterFactory;
import org.eclipse.rse.internal.ui.RSEUIInitJob;
import org.eclipse.rse.internal.ui.subsystems.SubSystemConfigurationProxyAdapterFactory;
@ -502,8 +502,6 @@ public class RSEUIPlugin extends SystemBasePlugin
* @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
*/
public void stop(BundleContext context) throws Exception {
RSEImageMap.shutdown();
// disconnect all active connections
disconnectAll(true);