Bug 548799 - Replace usage of AbstractUIPlugin#imageDescriptorFromPlugin

Use ResourceLocator#imageDescriptorFromBundle

Change-Id: I4eaddd33c97c696ba66ef5515ff690e88bcb2df2
Signed-off-by: Alexander Fedorov <alexander.fedorov@arsysop.ru>
diff --git a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/WizardNewFolderMainPage.java b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/WizardNewFolderMainPage.java
index c272e86..6be45da 100644
--- a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/WizardNewFolderMainPage.java
+++ b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/WizardNewFolderMainPage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
  *     Leon J. Breedt - Added multiple folder creation support (in WizardNewFolderMainPage)
  *     Lars Vogel <Lars.Vogel@vogella.com> - Bug 430694, 472784
  *     Patrik Suzzi <psuzzi@gmail.com> - Bug 371776
+ *     Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 548799
  *******************************************************************************/
 package org.eclipse.ui.dialogs;
 
@@ -49,6 +50,7 @@
 import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.jface.resource.CompositeImageDescriptor;
 import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ResourceLocator;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.window.Window;
 import org.eclipse.jface.wizard.WizardPage;
@@ -77,7 +79,6 @@
 import org.eclipse.ui.internal.ide.dialogs.ResourceFilterEditDialog;
 import org.eclipse.ui.internal.ide.misc.OverlayIcon;
 import org.eclipse.ui.internal.ide.misc.ResourceAndContainerGroup;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
 
 /**
  * Standard main page for a wizard that creates a folder resource.
@@ -502,15 +503,17 @@
 					.getImageDescriptor(ISharedImages.IMG_OBJ_FOLDER);
 
 			ImageDescriptor[][] linkedResourceOverlayMap = new ImageDescriptor[4][1];
-			linkedResourceOverlayMap[1] = new ImageDescriptor[] { AbstractUIPlugin.imageDescriptorFromPlugin(
-					IDEWorkbenchPlugin.IDE_WORKBENCH, "$nl$/icons/full/ovr16/link_ovr.png") }; //$NON-NLS-1$
+			linkedResourceOverlayMap[1] = new ImageDescriptor[] { ResourceLocator
+					.imageDescriptorFromBundle(IDEWorkbenchPlugin.IDE_WORKBENCH, "$nl$/icons/full/ovr16/link_ovr.png") //$NON-NLS-1$
+					.orElse(null) };
 
 			CompositeImageDescriptor linkedFolderDescriptor = new OverlayIcon(folderDescriptor,
 					linkedResourceOverlayMap, new Point(16, 16));
 
 			ImageDescriptor[][] virtualFolderOverlayMap = new ImageDescriptor[4][1];
-			virtualFolderOverlayMap[1] = new ImageDescriptor[] { AbstractUIPlugin.imageDescriptorFromPlugin(
-					IDEWorkbenchPlugin.IDE_WORKBENCH, "$nl$/icons/full/ovr16/virt_ovr.png") }; //$NON-NLS-1$
+			virtualFolderOverlayMap[1] = new ImageDescriptor[] { ResourceLocator
+					.imageDescriptorFromBundle(IDEWorkbenchPlugin.IDE_WORKBENCH, "$nl$/icons/full/ovr16/virt_ovr.png") //$NON-NLS-1$
+					.orElse(null) };
 
 			CompositeImageDescriptor virtualFolderDescriptor = new OverlayIcon(folderDescriptor,
 					virtualFolderOverlayMap, new Point(16, 16));
@@ -633,7 +636,7 @@
 	 * Initializes this page's controls.
 	 */
 	protected void initializePage() {
-		Iterator it = currentSelection.iterator();
+		Iterator<?> it = currentSelection.iterator();
 		if (it.hasNext()) {
 			Object next = it.next();
 			IResource selectedResource = Adapters.adapt(next, IResource.class);
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDEWorkbenchPlugin.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDEWorkbenchPlugin.java
index db1d3a8..0207dc2 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDEWorkbenchPlugin.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDEWorkbenchPlugin.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2017 IBM Corporation and others.
+ * Copyright (c) 2000, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -11,6 +11,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Patrik Suzzi <psuzzi@gmail.com> - Bug 489250
+ *     Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 548799
  *******************************************************************************/
 
 package org.eclipse.ui.internal.ide;
@@ -32,6 +33,7 @@
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.resource.JFaceResources;
 import org.eclipse.jface.resource.LocalResourceManager;
+import org.eclipse.jface.resource.ResourceLocator;
 import org.eclipse.jface.resource.ResourceManager;
 import org.eclipse.swt.custom.BusyIndicator;
 import org.eclipse.swt.widgets.Display;
@@ -316,7 +318,7 @@
 	 * @return ImageDescriptor
 	 */
 	public static ImageDescriptor getIDEImageDescriptor(String relativePath){
-		return imageDescriptorFromPlugin(IDE_WORKBENCH, ICONS_PATH + relativePath);
+		return ResourceLocator.imageDescriptorFromBundle(IDE_WORKBENCH, ICONS_PATH + relativePath).orElse(null);
 	}
 	/**
 	 * Return the resourceManager used by this plug-in.
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/LinkedResourceDecorator.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/LinkedResourceDecorator.java
index 9e08e9f..b78048c 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/LinkedResourceDecorator.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/LinkedResourceDecorator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -11,19 +11,21 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Lars Vogel <Lars.Vogel@gmail.com> - Bug 430694
+ *     Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 548799
  *******************************************************************************/
 package org.eclipse.ui.internal.ide;
 
 import java.net.URI;
+import java.util.Optional;
 
 import org.eclipse.core.filesystem.IFileInfo;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ResourceLocator;
 import org.eclipse.jface.viewers.IDecoration;
 import org.eclipse.jface.viewers.ILabelProviderListener;
 import org.eclipse.jface.viewers.ILightweightLabelDecorator;
 import org.eclipse.ui.internal.ide.dialogs.IDEResourceInfoUtils;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
 
 /**
  * A LinkedResourceDecorator decorates an element's image with a linked
@@ -32,15 +34,15 @@
  * @since 2.1
  */
 public class LinkedResourceDecorator implements ILightweightLabelDecorator {
-	private static final ImageDescriptor LINK;
+	private static final Optional<ImageDescriptor> LINK;
 
-	private static final ImageDescriptor LINK_WARNING;
+	private static final Optional<ImageDescriptor> LINK_WARNING;
 
 	static {
-		LINK = AbstractUIPlugin.imageDescriptorFromPlugin(
+		LINK = ResourceLocator.imageDescriptorFromBundle(
 				IDEWorkbenchPlugin.IDE_WORKBENCH,
 				"$nl$/icons/full/ovr16/link_ovr.png"); //$NON-NLS-1$
-		LINK_WARNING = AbstractUIPlugin.imageDescriptorFromPlugin(
+		LINK_WARNING = ResourceLocator.imageDescriptorFromBundle(
 				IDEWorkbenchPlugin.IDE_WORKBENCH,
 				"$nl$/icons/full/ovr16/linkwarn_ovr.png"); //$NON-NLS-1$
 	}
@@ -103,9 +105,9 @@
 				fileInfo = IDEResourceInfoUtils.getFileInfo(location);
 			}
 			if (fileInfo != null && fileInfo.exists()) {
-				decoration.addOverlay(LINK);
+				LINK.ifPresent(decoration::addOverlay);
 			} else {
-				decoration.addOverlay(LINK_WARNING);
+				LINK_WARNING.ifPresent(decoration::addOverlay);
 			}
 		}
 
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/SymlinkDecorator.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/SymlinkDecorator.java
index 2de5de8..a954a7f 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/SymlinkDecorator.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/SymlinkDecorator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (C) 2012, 2015 Robin Rosenberg <robin.rosenberg@dewire.com>
+ * Copyright (C) 2012, 2019 Robin Rosenberg <robin.rosenberg@dewire.com> and others.
  *
  *
  * This program and the accompanying materials
@@ -8,20 +8,23 @@
  * https://www.eclipse.org/legal/epl-2.0/
  *
  * SPDX-License-Identifier: EPL-2.0
- *
- * Lars Vogel <Lars.Vogel@gmail.com> - Bug 430694
+ *     Robin Rosenberg <robin.rosenberg@dewire.com> - initial API and implementation
+ *     Lars Vogel <Lars.Vogel@gmail.com> - Bug 430694
+ *     Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 548799
  *******************************************************************************/
 package org.eclipse.ui.internal.ide;
 
+import java.util.Optional;
+
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.ResourceAttributes;
 import org.eclipse.core.resources.mapping.ResourceMapping;
 import org.eclipse.core.runtime.Adapters;
 import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ResourceLocator;
 import org.eclipse.jface.viewers.IDecoration;
 import org.eclipse.jface.viewers.ILabelProviderListener;
 import org.eclipse.jface.viewers.ILightweightLabelDecorator;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
 
 /**
  * Decorate symbolic links
@@ -29,10 +32,10 @@
  */
 public class SymlinkDecorator implements ILightweightLabelDecorator {
 
-	private static ImageDescriptor SYMLINK;
+	private static Optional<ImageDescriptor> SYMLINK;
 
 	static {
-		SYMLINK = AbstractUIPlugin.imageDescriptorFromPlugin(
+		SYMLINK = ResourceLocator.imageDescriptorFromBundle(
 				IDEWorkbenchPlugin.IDE_WORKBENCH,
 				"$nl$/icons/full/ovr16/symlink_ovr.png"); //$NON-NLS-1$
 
@@ -59,14 +62,15 @@
 
 	@Override
 	public void decorate(Object element, IDecoration decoration) {
-		if (element instanceof ResourceMapping)
+		if (element instanceof ResourceMapping) {
 			element = ((ResourceMapping) element).getModelObject();
-
+		}
 		IResource resource = Adapters.adapt(element, IResource.class);
 		if (resource != null) {
 			ResourceAttributes resourceAttributes = resource.getResourceAttributes();
-			if (resourceAttributes != null && resourceAttributes.isSymbolicLink())
-				decoration.addOverlay(SYMLINK);
+			if (resourceAttributes != null && resourceAttributes.isSymbolicLink()) {
+				SYMLINK.ifPresent(decoration::addOverlay);
+			}
 		}
 	}
 }
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/VirtualResourceDecorator.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/VirtualResourceDecorator.java
index f2b94fd..57fc18b 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/VirtualResourceDecorator.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/VirtualResourceDecorator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2015 IBM Corporation and others.
+ * Copyright (c) 2009, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -11,26 +11,29 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Lars Vogel <Lars.Vogel@gmail.com> - Bug 430694
+ *     Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 548799
  *******************************************************************************/
 package org.eclipse.ui.internal.ide;
 
+import java.util.Optional;
+
 import org.eclipse.core.resources.IFolder;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ResourceLocator;
 import org.eclipse.jface.viewers.IDecoration;
 import org.eclipse.jface.viewers.ILabelProviderListener;
 import org.eclipse.jface.viewers.ILightweightLabelDecorator;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
 
 /**
  * A VirtualResourceDecorator replaces an element's image, if it is a virtual
  * resource.
  */
 public class VirtualResourceDecorator implements ILightweightLabelDecorator {
-	private static final ImageDescriptor VIRTUAL_FOLDER;
+	private static final Optional<ImageDescriptor> VIRTUAL_FOLDER;
 
 	static {
-		VIRTUAL_FOLDER = AbstractUIPlugin.imageDescriptorFromPlugin(
+		VIRTUAL_FOLDER = ResourceLocator.imageDescriptorFromBundle(
 				IDEWorkbenchPlugin.IDE_WORKBENCH,
 				"$nl$/icons/full/ovr16/virt_ovr.png"); //$NON-NLS-1$
 	}
@@ -85,7 +88,7 @@
 	@Override
 	public void decorate(Object element, IDecoration decoration) {
 		if (element instanceof IFolder && ((IResource) element).isVirtual()) {
-			decoration.addOverlay(VIRTUAL_FOLDER, IDecoration.BOTTOM_RIGHT);
+			VIRTUAL_FOLDER.ifPresent(o -> decoration.addOverlay(o, IDecoration.BOTTOM_RIGHT));
 		}
 	}
 }
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/PathVariablesGroup.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/PathVariablesGroup.java
index 28ccadf..620415b 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/PathVariablesGroup.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/PathVariablesGroup.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2017 IBM Corporation and others.
+ * Copyright (c) 2000, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -14,6 +14,7 @@
  *     Helena Halperin (IBM) - bug #299212
  *     Lars Vogel <Lars.Vogel@gmail.com> - Bug 430694
  *     Robert Roth <robert.roth.off@gmail.com> - Bug 57371
+ *     Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 548799
  *******************************************************************************/
 package org.eclipse.ui.internal.ide.dialogs;
 
@@ -37,7 +38,7 @@
 import org.eclipse.jface.dialogs.ErrorDialog;
 import org.eclipse.jface.dialogs.IDialogConstants;
 import org.eclipse.jface.layout.TableColumnLayout;
-import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ResourceLocator;
 import org.eclipse.jface.viewers.CellLabelProvider;
 import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
 import org.eclipse.jface.viewers.ColumnWeightData;
@@ -74,7 +75,6 @@
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.internal.ide.IDEWorkbenchMessages;
 import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
 
 import com.ibm.icu.text.Collator;
 
@@ -151,7 +151,7 @@
 	private final Image BUILTIN_IMG = PlatformUI.getWorkbench()
 			.getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER);
 	// unknown (non-existent) image. created locally, dispose locally
-	private Image imageUnkown;
+	private Image imageUnknown;
 
 	// current project for which the variables are being edited.
 	// If null, the workspace variables are being edited instead.
@@ -232,12 +232,10 @@
 	public Control createContents(Composite parent) {
 		Font font = parent.getFont();
 
-		if (imageUnkown == null) {
-			ImageDescriptor descriptor = AbstractUIPlugin
-					.imageDescriptorFromPlugin(
+		if (imageUnknown == null) {
+			ResourceLocator.imageDescriptorFromBundle(
 							IDEWorkbenchPlugin.IDE_WORKBENCH,
-							"$nl$/icons/full/obj16/warning.png"); //$NON-NLS-1$
-			imageUnkown = descriptor.createImage();
+					"$nl$/icons/full/obj16/warning.png").ifPresent(d -> imageUnknown = d.createImage()); //$NON-NLS-1$
 		}
 		initializeDialogUnits(parent);
 		shell = parent.getShell();
@@ -375,7 +373,7 @@
 			IPath resolvedValue = URIUtil.toPath(resolvedURI);
 			IFileInfo file = IDEResourceInfoUtils.getFileInfo(resolvedValue);
 			if (!isBuiltInVariable(varName))
-				cell.setImage(file.exists() ? (file.isDirectory() ? FOLDER_IMG : FILE_IMG) : imageUnkown);
+				cell.setImage(file.exists() ? (file.isDirectory() ? FOLDER_IMG : FILE_IMG) : imageUnknown);
 			else
 				cell.setImage(BUILTIN_IMG);
 		}
@@ -419,9 +417,9 @@
 	 * Disposes the group's resources.
 	 */
 	public void dispose() {
-		if (imageUnkown != null) {
-			imageUnkown.dispose();
-			imageUnkown = null;
+		if (imageUnknown != null) {
+			imageUnknown.dispose();
+			imageUnknown = null;
 		}
 	}
 
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterGroup.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterGroup.java
index f10d2ec..f9f2529 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterGroup.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterGroup.java
@@ -14,6 +14,7 @@
  *     Lars Vogel <Lars.Vogel@gmail.com> - Bug 430694
  *     Mickael Istria (Red Hat Inc.) - Bug 486901
  *                                   - [Cleanup] Avoid useless string instances
+ *     Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 548799
  *******************************************************************************/
 package org.eclipse.ui.internal.ide.dialogs;
 
@@ -58,8 +59,8 @@
 import org.eclipse.jface.dialogs.TrayDialog;
 import org.eclipse.jface.fieldassist.TextContentAdapter;
 import org.eclipse.jface.layout.TreeColumnLayout;
-import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.resource.ResourceLocator;
 import org.eclipse.jface.text.FindReplaceDocumentAdapterContentProposalProvider;
 import org.eclipse.jface.viewers.CellEditor;
 import org.eclipse.jface.viewers.CheckboxCellEditor;
@@ -124,7 +125,6 @@
 import org.eclipse.ui.internal.ide.IIDEHelpContextIds;
 import org.eclipse.ui.internal.ide.misc.FileInfoAttributesMatcher;
 import org.eclipse.ui.internal.ide.misc.StringFileInfoMatcher;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
 
 /**
  * A widget group that displays resource filters. Includes buttons to edit,
@@ -161,41 +161,20 @@
 	 *
 	 */
 	public ResourceFilterGroup() {
-		ImageDescriptor fileIconDescriptor = AbstractUIPlugin
-		.imageDescriptorFromPlugin(IDEWorkbenchPlugin.IDE_WORKBENCH,
-				"$nl$/icons/full/obj16/fileType_filter.png"); //$NON-NLS-1$
-		if (fileIconDescriptor != null)
-			fileIcon = fileIconDescriptor.createImage();
-
-		ImageDescriptor folderIconDescriptor = AbstractUIPlugin.imageDescriptorFromPlugin(
-				IDEWorkbenchPlugin.IDE_WORKBENCH,
-				"$nl$/icons/full/obj16/folderType_filter.png"); //$NON-NLS-1$
-		if (folderIconDescriptor != null)
-			folderIcon = folderIconDescriptor.createImage();
-
-		ImageDescriptor fileFolderIconDescriptor = AbstractUIPlugin.imageDescriptorFromPlugin(
-				IDEWorkbenchPlugin.IDE_WORKBENCH,
-				"$nl$/icons/full/obj16/fileFolderType_filter.png"); //$NON-NLS-1$
-		if (fileFolderIconDescriptor != null)
-			fileFolderIcon = fileFolderIconDescriptor.createImage();
-
-		ImageDescriptor descriptor = AbstractUIPlugin.imageDescriptorFromPlugin(
-				IDEWorkbenchPlugin.IDE_WORKBENCH,
-				"$nl$/icons/full/obj16/includeMode_filter.png"); //$NON-NLS-1$
-		if (descriptor != null)
-			includeIcon = descriptor.createImage();
-
-		descriptor = AbstractUIPlugin.imageDescriptorFromPlugin(
-				IDEWorkbenchPlugin.IDE_WORKBENCH,
-				"$nl$/icons/full/obj16/excludeMode_filter.png"); //$NON-NLS-1$
-		if (descriptor != null)
-			excludeIcon = descriptor.createImage();
-
-		ImageDescriptor inheritableIconDescriptor = AbstractUIPlugin.imageDescriptorFromPlugin(
-				IDEWorkbenchPlugin.IDE_WORKBENCH,
-				"$nl$/icons/full/obj16/inheritable_filter.png"); //$NON-NLS-1$
-		if (inheritableIconDescriptor != null)
-			inheritableIcon = inheritableIconDescriptor.createImage();
+		ResourceLocator.imageDescriptorFromBundle(IDEWorkbenchPlugin.IDE_WORKBENCH,
+				"$nl$/icons/full/obj16/fileType_filter.png").ifPresent(d -> fileIcon = d.createImage()); //$NON-NLS-1$
+		ResourceLocator.imageDescriptorFromBundle(IDEWorkbenchPlugin.IDE_WORKBENCH,
+				"$nl$/icons/full/obj16/folderType_filter.png").ifPresent(d -> folderIcon = d.createImage()); //$NON-NLS-1$
+		ResourceLocator
+				.imageDescriptorFromBundle(IDEWorkbenchPlugin.IDE_WORKBENCH,
+						"$nl$/icons/full/obj16/fileFolderType_filter.png") //$NON-NLS-1$
+				.ifPresent(d -> fileFolderIcon = d.createImage());
+		ResourceLocator.imageDescriptorFromBundle(IDEWorkbenchPlugin.IDE_WORKBENCH,
+				"$nl$/icons/full/obj16/includeMode_filter.png").ifPresent(d -> includeIcon = d.createImage()); //$NON-NLS-1$
+		ResourceLocator.imageDescriptorFromBundle(IDEWorkbenchPlugin.IDE_WORKBENCH,
+				"$nl$/icons/full/obj16/excludeMode_filter.png").ifPresent(d -> excludeIcon = d.createImage()); //$NON-NLS-1$
+		ResourceLocator.imageDescriptorFromBundle(IDEWorkbenchPlugin.IDE_WORKBENCH,
+				"$nl$/icons/full/obj16/inheritable_filter.png").ifPresent(d -> inheritableIcon = d.createImage()); //$NON-NLS-1$
 	}
 
 	Image getImage(String string, int i) {
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/registry/ProjectImageRegistryReader.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/registry/ProjectImageRegistryReader.java
index 4697d20..2517ae7 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/registry/ProjectImageRegistryReader.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/registry/ProjectImageRegistryReader.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -10,14 +10,14 @@
  *
  * Contributors:
  *     IBM Corporation - initial API and implementation
+ *     Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 548799
  *******************************************************************************/
 package org.eclipse.ui.internal.ide.registry;
 
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ResourceLocator;
 import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
 
 /**
  * A strategy to project nature image extensions from the registry.
@@ -60,13 +60,8 @@
 			return true;
 		}
 		String extendingPluginId = element.getContributor().getName();
-		ImageDescriptor image = AbstractUIPlugin.imageDescriptorFromPlugin(
-				extendingPluginId, icon);
-
-		if (image != null) {
-			registry.setNatureImage(natureId, image);
-		}
-
+		ResourceLocator.imageDescriptorFromBundle(extendingPluginId, icon)
+				.ifPresent(d -> registry.setNatureImage(natureId, d));
 		return true;
 	}