Bug 564084 - Use deferred image descriptor

Change-Id: I17cc24a4fd5ed006e1f6694d6cedb2de0d7e505e
Signed-off-by: Alex Blewitt <alex.blewitt@gmail.com>
diff --git a/org.eclipse.jdt.debug.ui/META-INF/MANIFEST.MF b/org.eclipse.jdt.debug.ui/META-INF/MANIFEST.MF
index 072c492..4a7d4f3 100644
--- a/org.eclipse.jdt.debug.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.jdt.debug.ui/META-INF/MANIFEST.MF
@@ -30,6 +30,7 @@
  org.eclipse.jdt.internal.debug.ui.threadgroups;x-internal:=true,
  org.eclipse.jdt.internal.debug.ui.variables;x-internal:=true
 Require-Bundle: org.eclipse.ui.ide;bundle-version="[3.5.0,4.0.0)",
+ org.eclipse.jface;bundle-version="[3.21.0,4.0.0)",
  org.eclipse.jface.text;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.ui.workbench.texteditor;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.ui.editors;bundle-version="[3.5.0,4.0.0)",
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaDebugImages.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaDebugImages.java
index 3be8d8f..50f3d04 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaDebugImages.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaDebugImages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2018 IBM Corporation and others.
+ * Copyright (c) 2000, 2020 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -13,15 +13,13 @@
  *******************************************************************************/
 package org.eclipse.jdt.internal.debug.ui;
 
-import java.net.URL;
-
 import org.eclipse.core.runtime.FileLocator;
 import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.resource.ImageRegistry;
 import org.eclipse.swt.graphics.Image;
 import org.osgi.framework.Bundle;
+import org.osgi.framework.FrameworkUtil;
 
 /**
  * Bundle of most images used by the Java debug plug-in.
@@ -239,15 +237,11 @@
      *              this plugin class is found (i.e. typically the packages directory)
      */
     private final static void declareRegistryImage(String key, String path) {
-        ImageDescriptor desc = ImageDescriptor.getMissingImageDescriptor();
-        Bundle bundle = Platform.getBundle(JDIDebugUIPlugin.getUniqueIdentifier());
-        URL url = null;
-        if (bundle != null){
-            url = FileLocator.find(bundle, new Path(path), null);
-            if(url != null) {
-            	desc = ImageDescriptor.createFromURL(url);
-            }
-        }
-        fgImageRegistry.put(key, desc);
+		Bundle bundle = FrameworkUtil.getBundle(JavaDebugImages.class);
+		if (bundle == null) {
+			fgImageRegistry.put(key, ImageDescriptor.getMissingImageDescriptor());
+		} else {
+			fgImageRegistry.put(key, ImageDescriptor.createFromURLSupplier(true, () -> FileLocator.find(bundle, new Path(path), null)));
+		}
     }
 }