package org.netbeans.gradle.project;
import java.awt.Image;
import java.beans.BeanInfo;
import java.util.logging.Logger;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.UIManager;
import org.netbeans.api.annotations.common.StaticResource;
import org.openide.awt.NotificationDisplayer;
import org.openide.filesystems.FileUtil;
import org.openide.loaders.DataFolder;
import org.openide.nodes.Node;
import org.openide.util.ImageUtilities;
public final class NbIcons {
private static final Logger LOGGER = Logger.getLogger(NbIcons.class.getName());
@StaticResource
public static final String PROJECT_ICON_PATH = "org/netbeans/gradle/project/resources/gradle.png";
@StaticResource
private static final String TASK_ICON_PATH = "org/netbeans/gradle/project/resources/task.gif";
@StaticResource
private static final String LIBRARIES_BADGE_ICON_PATH = "org/netbeans/gradle/project/resources/libraries-badge.png";
@StaticResource
private static final String PACKAGE_BADGE_ICON_PATH = "org/netbeans/gradle/project/resources/package-badge.png";
@StaticResource
private static final String LIBRARY_ICON_PATH = "org/netbeans/gradle/project/resources/libraries.png";
@StaticResource
private static final String WARNING_BADGE_ICON_PATH = "org/netbeans/gradle/project/resources/warning-badge.png";
public static Image getGradleIcon() {
return ImageUtilities.loadImage(PROJECT_ICON_PATH);
}
public static Icon getGradleIconAsIcon() {
return ImageUtilities.loadImageIcon(PROJECT_ICON_PATH, true);
}
public static Image getTaskIcon() {
return ImageUtilities.loadImage(TASK_ICON_PATH);
}
public static Image getLibraryIcon() {
return ImageUtilities.loadImage(LIBRARY_ICON_PATH);
}
public static Image getPackageBadge() {
return ImageUtilities.loadImage(PACKAGE_BADGE_ICON_PATH);
}
public static Image getLibrariesBadge() {
return ImageUtilities.loadImage(LIBRARIES_BADGE_ICON_PATH);
}
public static Image getWarningBadge() {
return ImageUtilities.loadImage(WARNING_BADGE_ICON_PATH);
}
public static Icon getPriorityHighIcon() {
return NotificationDisplayer.Priority.HIGH.getIcon();
}
public static Icon getUIQuestionIcon() {
return UIManager.getIcon("OptionPane.questionIcon");
}
public static Icon getUIWarningIcon() {
return UIManager.getIcon("OptionPane.warningIcon");
}
public static Icon getUIErrorIcon() {
return UIManager.getIcon("OptionPane.errorIcon");
}
private static class OpenFolderIconHolder {
public static final Image IMAGE = loadIcon();
private static Image loadIcon() {
Node n = DataFolder.findFolder(FileUtil.getConfigRoot()).getNodeDelegate();
ImageIcon original = new ImageIcon(n.getOpenedIcon(BeanInfo.ICON_COLOR_16x16));
Image result = original.getImage();
if (result == null) {
LOGGER.warning("Failed to load the open folder icon.");
}
return result;
}
}
private static class FolderIconHolder {
public static final Image IMAGE = loadIcon();
private static Image loadIcon() {
Node n = DataFolder.findFolder(FileUtil.getConfigRoot()).getNodeDelegate();
ImageIcon original = new ImageIcon(n.getIcon(BeanInfo.ICON_COLOR_16x16));
Image result = original.getImage();
if (result == null) {
LOGGER.warning("Failed to load the folder icon.");
}
return result;
}
}
public static Image getOpenFolderIcon() {
return OpenFolderIconHolder.IMAGE;
}
public static Image getFolderIcon() {
return FolderIconHolder.IMAGE;
}
private static class PackageIconHolder {
public static final Image IMAGE = loadIcon();
private static Image loadIcon() {
return mergeFolderWithBadge(false, getPackageBadge());
}
}
private static class OpenPackageIconHolder {
public static final Image IMAGE = loadIcon();
private static Image loadIcon() {
return mergeFolderWithBadge(true, getPackageBadge());
}
}
public static Image getOpenPackageIcon() {
return OpenPackageIconHolder.IMAGE;
}
public static Image getPackageIcon() {
return PackageIconHolder.IMAGE;
}
private static class LibrariesIconHolder {
public static final Image IMAGE = loadIcon();
private static Image loadIcon() {
return mergeFolderWithBadge(false, getLibrariesBadge());
}
}
private static class OpenLibrariesIconHolder {
public static final Image IMAGE = loadIcon();
private static Image loadIcon() {
return mergeFolderWithBadge(true, getLibrariesBadge());
}
}
private static Image mergeFolderWithBadge(boolean opened, Image badge) {
Image folderIcon = opened ? getOpenFolderIcon() : getFolderIcon();
if (folderIcon != null && badge != null) {
return ImageUtilities.mergeImages(folderIcon, badge, 7, 7);
}
else {
return null;
}
}
public static Image getOpenLibrariesIcon() {
return OpenLibrariesIconHolder.IMAGE;
}
public static Image getLibrariesIcon() {
return LibrariesIconHolder.IMAGE;
}
private NbIcons() {
throw new AssertionError();
}
}