# HG changeset patch # User Jesse Glick # Date 1485358756 18000 # Parent c3433df82911a021ed020eea5e75f1e64572b9fe Bug #269635: null project icons. diff --git a/maven/src/org/netbeans/modules/maven/nodes/MavenProjectNode.java b/maven/src/org/netbeans/modules/maven/nodes/MavenProjectNode.java --- a/maven/src/org/netbeans/modules/maven/nodes/MavenProjectNode.java +++ b/maven/src/org/netbeans/modules/maven/nodes/MavenProjectNode.java @@ -48,7 +48,10 @@ import java.io.CharConversionException; import java.util.Collection; import java.util.StringTokenizer; +import java.util.logging.Level; +import java.util.logging.Logger; import javax.swing.Action; +import javax.swing.Icon; import javax.swing.SwingUtilities; import org.apache.maven.project.MavenProject; import org.netbeans.api.project.ProjectInformation; @@ -74,6 +77,9 @@ * @author Milos Kleint */ public class MavenProjectNode extends AbstractNode { + + private static final Logger LOGGER = Logger.getLogger(MavenProjectNode.class.getName()); + @Messages("ICON_BrokenProjectBadge=Project loading failed or was not complete") private static final String toolTipBroken = " " + ICON_BrokenProjectBadge(); @@ -141,12 +147,17 @@ @Override public Image getIcon(int param) { - return ImageUtilities.icon2Image(info.getIcon()); + Icon icon = info.getIcon(); + if (icon == null) { + LOGGER.log(Level.WARNING, "no icon in {0}", info); + return super.getIcon(param); + } + return ImageUtilities.icon2Image(icon); } @Override public Image getOpenedIcon(int param) { - return ImageUtilities.icon2Image(info.getIcon()); + return getIcon(param); } public @Override Action[] getActions(boolean param) { diff --git a/maven/src/org/netbeans/modules/maven/queries/Info.java b/maven/src/org/netbeans/modules/maven/queries/Info.java --- a/maven/src/org/netbeans/modules/maven/queries/Info.java +++ b/maven/src/org/netbeans/modules/maven/queries/Info.java @@ -205,7 +205,15 @@ return ImageUtilities.loadImageIcon("org/netbeans/modules/maven/resources/Maven2Icon.gif", true); } SpecialIcon special = project.getLookup().lookup(SpecialIcon.class); - return special != null ? special.getIcon() : ImageUtilities.loadImageIcon("org/netbeans/modules/maven/resources/Maven2Icon.gif", true); + if (special != null) { + Icon icon = special.getIcon(); + if (icon != null) { + return icon; + } else { + LOG.log(Level.WARNING, "No icon provided by {0}", special); + } + } + return ImageUtilities.loadImageIcon("org/netbeans/modules/maven/resources/Maven2Icon.gif", true); } @Override public Project getProject() { diff --git a/openide.util.ui/src/org/openide/util/ImageUtilities.java b/openide.util.ui/src/org/openide/util/ImageUtilities.java --- a/openide.util.ui/src/org/openide/util/ImageUtilities.java +++ b/openide.util.ui/src/org/openide/util/ImageUtilities.java @@ -87,6 +87,9 @@ * @since 7.15 */ public final class ImageUtilities { + + private static final Logger LOGGER = Logger.getLogger(ImageUtilities.class.getName()); + /** separator for individual parts of tool tip text */ static final String TOOLTIP_SEPAR = "
"; // NOI18N /** a value that indicates that the icon does not exists */ @@ -281,6 +284,10 @@ * @param icon {@link javax.swing.Icon} to be converted. */ public static final Image icon2Image(Icon icon) { + if (icon == null) { + LOGGER.log(Level.WARNING, null, new NullPointerException()); + return loadImage("org/openide/nodes/defaultNode.png", true); + } if (icon instanceof ImageIcon) { return ((ImageIcon) icon).getImage(); } else { diff --git a/projectapi.nb/src/org/netbeans/modules/projectapi/nb/NbProjectInformationProvider.java b/projectapi.nb/src/org/netbeans/modules/projectapi/nb/NbProjectInformationProvider.java --- a/projectapi.nb/src/org/netbeans/modules/projectapi/nb/NbProjectInformationProvider.java +++ b/projectapi.nb/src/org/netbeans/modules/projectapi/nb/NbProjectInformationProvider.java @@ -47,7 +47,10 @@ import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; import javax.swing.Icon; +import javax.swing.ImageIcon; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.netbeans.api.annotations.common.NonNull; @@ -69,6 +72,8 @@ @ServiceProvider(service = ProjectInformationProvider.class, position = 100) public final class NbProjectInformationProvider implements ProjectInformationProvider { + private static final Logger LOGGER = Logger.getLogger(NbProjectInformationProvider.class.getName()); + @Override @NonNull public ProjectInformation getProjectInformation(Project project) { @@ -183,6 +188,7 @@ Icon original = pinfo.getIcon(); if (original == null) { // Forbidden generally but common in tests. + LOGGER.log(Level.WARNING, "no icon for {0}", pinfo); return; } Image _icon = ImageUtilities.icon2Image(original);