[Ltk-Buildpaths] Adapt label provider to DecoratedElementImageDescriptor

Change-Id: I41546d1e26c14a72372c6562f2f1625b7fb9e2f0
diff --git a/ltk/org.eclipse.statet.ltk.buildpath.ui/META-INF/MANIFEST.MF b/ltk/org.eclipse.statet.ltk.buildpath.ui/META-INF/MANIFEST.MF
index 07f4935..5731b0e 100644
--- a/ltk/org.eclipse.statet.ltk.buildpath.ui/META-INF/MANIFEST.MF
+++ b/ltk/org.eclipse.statet.ltk.buildpath.ui/META-INF/MANIFEST.MF
@@ -17,6 +17,7 @@
  org.eclipse.statet.ltk.buildpath.core;bundle-version="[4.5.0,4.6.0)";visibility:=reexport,
  org.eclipse.statet.ecommons.uimisc;bundle-version="[4.5.0,4.6.0)"
 Import-Package: org.eclipse.statet.jcommons.collections;version="4.5.0",
- org.eclipse.statet.jcommons.lang;version="4.5.0"
+ org.eclipse.statet.jcommons.lang;version="4.5.0",
+ org.eclipse.statet.ltk.ui.util
 Export-Package: org.eclipse.statet.ltk.buildpath.ui,
  org.eclipse.statet.ltk.buildpath.ui.wizards
diff --git a/ltk/org.eclipse.statet.ltk.buildpath.ui/icons/ovr_16/ignore_optional_problems.png b/ltk/org.eclipse.statet.ltk.buildpath.ui/icons/ovr_16/ignore_optional_problems.png
deleted file mode 100644
index 485e329..0000000
--- a/ltk/org.eclipse.statet.ltk.buildpath.ui/icons/ovr_16/ignore_optional_problems.png
+++ /dev/null
Binary files differ
diff --git a/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/internal/ltk/buildpath/ui/BuildpathElementImageDescriptor.java b/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/internal/ltk/buildpath/ui/BuildpathElementImageDescriptor.java
deleted file mode 100644
index d2f4a18..0000000
--- a/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/internal/ltk/buildpath/ui/BuildpathElementImageDescriptor.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*=============================================================================#
- # Copyright (c) 2000, 2021 IBM Corporation and others.
- # 
- # This program and the accompanying materials are made available under the
- # terms of the Eclipse Public License 2.0 which is available at
- # https://www.eclipse.org/legal/epl-2.0.
- # 
- # SPDX-License-Identifier: EPL-2.0
- # 
- # Contributors:
- #     IBM Corporation - org.eclipse.jdt: initial API and implementation
- #     Stephan Wahlbrink <sw@wahlbrink.eu> - initial API and implementation
- #=============================================================================*/
-
-package org.eclipse.statet.internal.ltk.buildpath.ui;
-
-import static org.eclipse.statet.jcommons.lang.ObjectUtils.nonNullAssert;
-
-import org.eclipse.jface.resource.CompositeImageDescriptor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.graphics.Point;
-
-import org.eclipse.statet.jcommons.lang.NonNullByDefault;
-import org.eclipse.statet.jcommons.lang.Nullable;
-
-import org.eclipse.statet.ecommons.ui.SharedUIResources;
-
-import org.eclipse.statet.ltk.buildpath.ui.BuildpathsUIResources;
-
-
-@NonNullByDefault
-public class BuildpathElementImageDescriptor extends CompositeImageDescriptor {
-	
-	
-	/** Flag to render the info adornment. */
-	public final static int INFO=                           0b0_0000_0000_0001;
-	
-	/** Flag to render the warning adornment. */
-	public final static int WARNING=                        0b0_0000_0000_0010;
-	
-	/** Flag to render the error adornment. */
-	public final static int ERROR=                          0b0_0000_0000_0100;
-	
-	
-	/**
-	 * Flag to render the 'deprecated' adornment.
-	 */
-	public final static int DEPRECATED=                     0b0_0000_0001_0000;
-	
-	/**
-	 * Flag to render the 'ignore optional compile problems' adornment.
-	 */
-	public final static int IGNORE_OPTIONAL_PROBLEMS=       0b0_0001_0000_0000;
-	
-	
-	private final ImageDescriptor baseImage;
-	private final int flags;
-	
-	private @Nullable Point size;
-	
-	
-	/**
-	 * Creates a new JavaElementImageDescriptor.
-	 *
-	 * @param baseImage an image descriptor used as the base image
-	 * @param flags flags indicating which adornments are to be rendered. See {@link #setAdornments(int)}
-	 * 	for valid values.
-	 * @param size the size of the resulting image
-	 */
-	public BuildpathElementImageDescriptor(final ImageDescriptor baseImage, final int flags) {
-		this.baseImage= nonNullAssert(baseImage);
-		this.flags= flags;
-	}
-	
-	
-	protected final ImageDescriptor getBaseImage() {
-		return this.baseImage;
-	}
-	
-	protected final int getFlags() {
-		return this.flags;
-	}
-	
-	@Override
-	protected final Point getSize() {
-		var size= this.size;
-		if (size == null) {
-			final var data= createCachedImageDataProvider(getBaseImage());
-			size= new Point(data.getWidth(), data.getHeight());
-			this.size= size;
-		}
-		return size;
-	}
-	
-	
-	@Override
-	protected void drawCompositeImage(final int width, final int height) {
-		if ((this.flags & DEPRECATED) != 0) { // draw *behind* the full image
-			final Point size= getSize();
-			final var data= createCachedImageDataProvider(SharedUIResources.INSTANCE.getImageDescriptor(
-					SharedUIResources.OVR_DEPRECATED_IMAGE_ID ));
-			drawImage(data, 0, size.y - data.getHeight());
-		}
-		
-		{	final var data= createCachedImageDataProvider(getBaseImage());
-			drawImage(data, 0, 0);
-		}
-		
-		drawTopRight();
-		drawBottomRight();
-		drawBottomLeft();
-	}
-	
-	private void addTopRightImage(final ImageDescriptor desc, final Point pos) {
-		final var data= createCachedImageDataProvider(desc);
-		final int x= pos.x - data.getWidth();
-		if (x >= 0) {
-			drawImage(data, x, pos.y);
-			pos.x= x;
-		}
-	}
-	
-	private void addBottomRightImage(final ImageDescriptor desc, final Point pos) {
-		final var data= createCachedImageDataProvider(desc);
-		final int x= pos.x - data.getWidth();
-		final int y= pos.y - data.getHeight();
-		if (x >= 0 && y >= 0) {
-			drawImage(data, x, y);
-			pos.x= x;
-		}
-	}
-	
-	private void addBottomLeftImage(final ImageDescriptor desc, final Point pos) {
-		final var data= createCachedImageDataProvider(desc);
-		final int x= pos.x;
-		final int y= pos.y - data.getHeight();
-		final int xEnd= x + data.getWidth();
-		if (xEnd < getSize().x && y >= 0) {
-			drawImage(data, x, y);
-			pos.x= xEnd;
-		}
-	}
-	
-	
-	private void drawTopRight() {
-	}
-	
-	private void drawBottomRight() {
-	}
-	
-	private void drawBottomLeft() {
-		final Point pos= new Point(0, getSize().y);
-		if ((this.flags & INFO) != 0) {
-			addBottomLeftImage(SharedUIResources.INSTANCE.getImageDescriptor(
-					SharedUIResources.OVR_INFO_IMAGE_ID ), pos );
-		}
-		if ((this.flags & WARNING) != 0) {
-			addBottomLeftImage(SharedUIResources.INSTANCE.getImageDescriptor(
-					SharedUIResources.OVR_WARNING_IMAGE_ID ), pos );
-		}
-		if ((this.flags & ERROR) != 0) {
-			addBottomLeftImage(SharedUIResources.INSTANCE.getImageDescriptor(
-					SharedUIResources.OVR_WARNING_IMAGE_ID ), pos );
-		}
-		if ((this.flags & IGNORE_OPTIONAL_PROBLEMS) != 0) {
-			addBottomLeftImage(BuildpathsUIResources.INSTANCE.getImageDescriptor(
-					BuildpathsUIPlugin.OVR_IGNORE_OPTIONAL_PROBLEMS_IMAGE_ID ), pos );
-		}
-	}
-	
-	
-	@Override
-	public int hashCode() {
-		return (this.baseImage.hashCode() ^ this.flags);
-	}
-	
-	@Override
-	public boolean equals(final @Nullable Object obj) {
-		if (this == obj) {
-			return true;
-		}
-		if (obj != null && getClass().equals(obj.getClass())) {
-			final BuildpathElementImageDescriptor other= (BuildpathElementImageDescriptor)obj;
-			return (this.baseImage.equals(other.baseImage)
-					&& this.flags == other.flags );
-		}
-		return false;
-	}
-	
-}
diff --git a/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/internal/ltk/buildpath/ui/BuildpathsUIPlugin.java b/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/internal/ltk/buildpath/ui/BuildpathsUIPlugin.java
index 8a6eb1d..7649f63 100644
--- a/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/internal/ltk/buildpath/ui/BuildpathsUIPlugin.java
+++ b/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/internal/ltk/buildpath/ui/BuildpathsUIPlugin.java
@@ -29,12 +29,6 @@
 public class BuildpathsUIPlugin extends AbstractUIPlugin {
 	
 	
-	public static final String BUNDLE_ID= "org.eclipse.statet.ltk.buildpath.ui"; //$NON-NLS-1$
-	
-	
-	public static final String OVR_IGNORE_OPTIONAL_PROBLEMS_IMAGE_ID= BUNDLE_ID + "/image/ovr/ignore_optional_problems"; //$NON-NLS-1$
-	
-	
 	private static BuildpathsUIPlugin instance;
 	
 	/**
@@ -102,9 +96,6 @@
 				ImageRegistryUtil.T_OBJ, "exclusion_filter.png" ); //$NON-NLS-1$
 		util.register(BuildpathsUIResources.OBJ_OUTPUT_FOLDER_ATTRIBUTE_IMAGE_ID,
 				ImageRegistryUtil.T_OBJ, "output_folder.png" ); //$NON-NLS-1$
-		
-		util.register(OVR_IGNORE_OPTIONAL_PROBLEMS_IMAGE_ID,
-				ImageRegistryUtil.T_OVR, "ignore_optional_problems.png" ); //$NON-NLS-1$
 	}
 	
 }
diff --git a/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/internal/ltk/buildpath/ui/ExclusionInclusionComponent.java b/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/internal/ltk/buildpath/ui/ExclusionInclusionComponent.java
index fddf70c..1b8a3a1 100644
--- a/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/internal/ltk/buildpath/ui/ExclusionInclusionComponent.java
+++ b/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/internal/ltk/buildpath/ui/ExclusionInclusionComponent.java
@@ -55,6 +55,7 @@
 
 import org.eclipse.statet.ltk.buildpath.core.BuildpathAttribute;
 import org.eclipse.statet.ltk.buildpath.ui.BuildpathListElement;
+import org.eclipse.statet.ltk.buildpath.ui.BuildpathsUI;
 import org.eclipse.statet.ltk.buildpath.ui.BuildpathsUIDescription;
 import org.eclipse.statet.ltk.buildpath.ui.BuildpathsUIResources;
 
@@ -67,7 +68,7 @@
 		private final Image elementImage;
 		
 		public ExclusionInclusionLabelProvider(final String imgKey) {
-			this.elementImage= BuildpathsUIResources.INSTANCE.getImage(imgKey);
+			this.elementImage= BuildpathsUI.getUIResources().getImage(imgKey);
 		}
 		
 		@Override
diff --git a/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/internal/ltk/buildpath/ui/Messages.java b/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/internal/ltk/buildpath/ui/Messages.java
index af3e1a7..b77ad0f 100644
--- a/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/internal/ltk/buildpath/ui/Messages.java
+++ b/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/internal/ltk/buildpath/ui/Messages.java
@@ -16,7 +16,11 @@
 
 import org.eclipse.osgi.util.NLS;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 
+
+@NonNullByDefault
+@SuppressWarnings("null")
 public class Messages {
 	
 	
diff --git a/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/ltk/buildpath/ui/BuildpathListElementComparator.java b/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/ltk/buildpath/ui/BuildpathListElementComparator.java
index 99601e7..205f645 100644
--- a/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/ltk/buildpath/ui/BuildpathListElementComparator.java
+++ b/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/ltk/buildpath/ui/BuildpathListElementComparator.java
@@ -20,9 +20,13 @@
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.jface.viewers.ViewerComparator;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
 import org.eclipse.statet.ltk.buildpath.core.BuildpathElement;
 
 
+@NonNullByDefault
 public class BuildpathListElementComparator extends ViewerComparator {
 	
 	
@@ -77,7 +81,7 @@
 	}
 	
 	@Override
-	public int compare(final Viewer viewer, final Object e1, final Object e2) {
+	public int compare(final @Nullable Viewer viewer, final Object e1, final Object e2) {
 		final int cat1= category(e1);
 		final int cat2= category(e2);
 		
diff --git a/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/ltk/buildpath/ui/BuildpathListLabelProvider.java b/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/ltk/buildpath/ui/BuildpathListLabelProvider.java
index 9dcb3f3..81153e5 100644
--- a/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/ltk/buildpath/ui/BuildpathListLabelProvider.java
+++ b/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/ltk/buildpath/ui/BuildpathListLabelProvider.java
@@ -14,6 +14,8 @@
 
 package org.eclipse.statet.ltk.buildpath.ui;
 
+import static org.eclipse.statet.jcommons.lang.ObjectUtils.nonNullAssert;
+
 import java.util.List;
 
 import org.eclipse.core.resources.IResource;
@@ -26,61 +28,62 @@
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.ide.IDE;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
 import org.eclipse.statet.ecommons.ui.SharedUIResources;
-import org.eclipse.statet.ecommons.ui.jface.resource.ImageDescriptorRegistry;
 import org.eclipse.statet.ecommons.ui.util.MessageUtils;
 
-import org.eclipse.statet.internal.ltk.buildpath.ui.BuildpathElementImageDescriptor;
 import org.eclipse.statet.internal.ltk.buildpath.ui.Messages;
 import org.eclipse.statet.ltk.buildpath.core.BuildpathAttribute;
 import org.eclipse.statet.ltk.buildpath.core.BuildpathElement;
 import org.eclipse.statet.ltk.buildpath.core.BuildpathInitializer;
+import org.eclipse.statet.ltk.ui.util.DecoratedElementImageDescriptor;
 
 
+@NonNullByDefault
 public class BuildpathListLabelProvider extends LabelProvider {
 	
 	
-	private final BuildpathsUIResources uiResources;
+	private final BuildpathsUIResources buildpathsResources;
+	private final SharedUIResources sharedResources;
 	private final ISharedImages workbenchImages;
 	
-	private final ImageDescriptorRegistry imageDescriptorRegistry;
-	
 	
 	public BuildpathListLabelProvider() {
-		this.uiResources= BuildpathsUIResources.INSTANCE;
+		this.buildpathsResources= BuildpathsUI.getUIResources();
+		this.sharedResources= SharedUIResources.getInstance();
 		this.workbenchImages= PlatformUI.getWorkbench().getSharedImages();
-		
-		this.imageDescriptorRegistry= SharedUIResources.getInstance().getImageDescriptorRegistry();
 	}
 	
 	
 	@Override
-	public Image getImage(final Object element) {
+	public @Nullable Image getImage(final @Nullable Object element) {
 		if (element instanceof BuildpathListElement) {
-			final BuildpathListElement listElement= (BuildpathListElement) element;
+			final BuildpathListElement listElement= (BuildpathListElement)element;
 			ImageDescriptor imageDescriptor= getListElementBaseImage(listElement);
 			if (imageDescriptor != null) {
 				if (listElement.isMissing() || listElement.hasMissingChildren()) {
-					imageDescriptor= new BuildpathElementImageDescriptor(imageDescriptor,
-							BuildpathElementImageDescriptor.ERROR );
+					imageDescriptor= new DecoratedElementImageDescriptor(imageDescriptor,
+							DecoratedElementImageDescriptor.ERROR );
 				}
-				return this.imageDescriptorRegistry.get(imageDescriptor);
+				return this.sharedResources.getImageDescriptorRegistry().get(imageDescriptor);
 			}
 		}
 		else if (element instanceof BuildpathListElementAttribute) {
-			final BuildpathListElementAttribute attribute= (BuildpathListElementAttribute) element;
+			final BuildpathListElementAttribute attribute= (BuildpathListElementAttribute)element;
 			switch (attribute.getName()) {
 			case BuildpathAttribute.SOURCE_ATTACHMENT:
-				return this.uiResources.getImage(
+				return this.buildpathsResources.getImage(
 						BuildpathsUIResources.OBJ_SOURCE_ATTACHMENT_ATTRIBUTE_IMAGE_ID );
 			case BuildpathAttribute.FILTER_INCLUSIONS:
-				return this.uiResources.getImage(
+				return this.buildpathsResources.getImage(
 						BuildpathsUIResources.OBJ_INCLUSION_FILTER_ATTRIBUTE_IMAGE_ID );
 			case BuildpathAttribute.FILTER_EXCLUSIONS:
-				return this.uiResources.getImage(
+				return this.buildpathsResources.getImage(
 						BuildpathsUIResources.OBJ_EXCLUSION_FILTER_ATTRIBUTE_IMAGE_ID );
 			case BuildpathAttribute.OUTPUT:
-				return this.uiResources.getImage(
+				return this.buildpathsResources.getImage(
 						BuildpathsUIResources.OBJ_OUTPUT_FOLDER_ATTRIBUTE_IMAGE_ID );
 			default:
 				break;
@@ -90,12 +93,12 @@
 	}
 	
 	@Override
-	public String getText(final Object element) {
+	public String getText(final @Nullable Object element) {
 		if (element instanceof BuildpathListElement) {
-			return getListElementText((BuildpathListElement) element);
+			return getListElementText((BuildpathListElement)element);
 		}
 		if (element instanceof BuildpathListElementAttribute) {
-			final BuildpathListElementAttribute attribute= (BuildpathListElementAttribute) element;
+			final BuildpathListElementAttribute attribute= (BuildpathListElementAttribute)element;
 			final String text= getListElementAttributeText(attribute);
 			if (attribute.getStatus().getCode() == BuildpathInitializer.READ_ONLY) {
 				return NLS.bind(Messages.ListLabel_Attribute_NonModifiable_label, text);
@@ -106,7 +109,7 @@
 	}
 	
 	
-	private ImageDescriptor getListElementBaseImage(final BuildpathListElement listElement) {
+	private @Nullable ImageDescriptor getListElementBaseImage(final BuildpathListElement listElement) {
 		switch (listElement.getType().getName()) {
 		case BuildpathElement.PROJECT:
 			return this.workbenchImages.getImageDescriptor(
@@ -129,9 +132,9 @@
 		final IPath path= element.getPath();
 		switch (element.getType().getName()) {
 		case BuildpathElement.PROJECT:
-			String label= path.lastSegment();
+			String label= nonNullAssert(path.lastSegment());
 			if (element.isMissing()) {
-				label= label + ' ' + Messages.ListLabel_Deco_Missing_label;
+				label+= ' ' + Messages.ListLabel_Deco_Missing_label;
 			}
 			return label;
 		case BuildpathElement.SOURCE: {
@@ -169,7 +172,7 @@
 		switch (key) {
 		case BuildpathAttribute.SOURCE_ATTACHMENT: {
 				final String detail;
-				final IPath path= (IPath) attribute.getValue();
+				final IPath path= (IPath)attribute.getValue();
 				if (path != null && !path.isEmpty()) {
 					if (attribute.getParent().getType().getName() == BuildpathElement.VARIABLE) {
 						detail= getVariableString(path);
@@ -185,7 +188,7 @@
 			}
 		case BuildpathAttribute.FILTER_INCLUSIONS: {
 				final String detail;
-				final List<? extends IPath> patterns= (List<? extends IPath>) attribute.getValue();
+				final var patterns= (List<? extends IPath>)attribute.getValue();
 				if (patterns != null && !patterns.isEmpty()) {
 					final StringBuilder sb= new StringBuilder();
 					final int patternsCount= appendPatternList(patterns, sb);
@@ -203,7 +206,7 @@
 			}
 		case BuildpathAttribute.FILTER_EXCLUSIONS: {
 				final String detail;
-				final List<? extends IPath> patterns= (List<? extends IPath>) attribute.getValue();
+				final var patterns= (List<? extends IPath>)attribute.getValue();
 				if (patterns != null && !patterns.isEmpty()) {
 					final StringBuilder sb= new StringBuilder();
 					final int patternsCount= appendPatternList(patterns, sb);
@@ -221,7 +224,7 @@
 			}
 		case BuildpathAttribute.OUTPUT: {
 				final String detail;
-				final IPath path= (IPath) attribute.getValue();
+				final IPath path= (IPath)attribute.getValue();
 				if (path != null) {
 					detail= MessageUtils.processPath(path.toString());
 				}
@@ -238,7 +241,7 @@
 //					final String valueLabel= config.getValueLabel(access); // should be LTR marked
 //					return Messages.format(Messages.ListLabel_Provider_attribute_label, new String[] { nameLabel, valueLabel });
 //				}
-				String value= (String) attribute.getValue();
+				String value= (String)attribute.getValue();
 				if (value == null) {
 					value= Messages.ListLabel_Value_None_label;
 				}
diff --git a/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/ltk/buildpath/ui/BuildpathsUI.java b/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/ltk/buildpath/ui/BuildpathsUI.java
new file mode 100644
index 0000000..f6a5967
--- /dev/null
+++ b/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/ltk/buildpath/ui/BuildpathsUI.java
@@ -0,0 +1,35 @@
+/*=============================================================================#
+ # Copyright (c) 2021 Stephan Wahlbrink and others.
+ # 
+ # This program and the accompanying materials are made available under the
+ # terms of the Eclipse Public License 2.0 which is available at
+ # https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
+ # which is available at https://www.apache.org/licenses/LICENSE-2.0.
+ # 
+ # SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
+ # 
+ # Contributors:
+ #     Stephan Wahlbrink <sw@wahlbrink.eu> - initial API and implementation
+ #=============================================================================*/
+
+package org.eclipse.statet.ltk.buildpath.ui;
+
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
+
+@NonNullByDefault
+public class BuildpathsUI {
+	
+	
+	public static final String BUNDLE_ID= "org.eclipse.statet.ltk.buildpath.ui"; //$NON-NLS-1$
+	
+	
+	public static BuildpathsUIResources getUIResources() {
+		return BuildpathsUIResources.INSTANCE;
+	}
+	
+	
+	private BuildpathsUI() {
+	}
+	
+}
diff --git a/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/ltk/buildpath/ui/BuildpathsUIResources.java b/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/ltk/buildpath/ui/BuildpathsUIResources.java
index b39d07f..784c4d2 100644
--- a/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/ltk/buildpath/ui/BuildpathsUIResources.java
+++ b/ltk/org.eclipse.statet.ltk.buildpath.ui/src/org/eclipse/statet/ltk/buildpath/ui/BuildpathsUIResources.java
@@ -34,7 +34,7 @@
 	public static final String OBJ_OUTPUT_FOLDER_ATTRIBUTE_IMAGE_ID= NS + "/image/obj/attribute-output_folder"; //$NON-NLS-1$
 	
 	
-	public static final BuildpathsUIResources INSTANCE= new BuildpathsUIResources();
+	static final BuildpathsUIResources INSTANCE= new BuildpathsUIResources();
 	
 	
 	private BuildpathsUIResources() {