public static ImageView forNode(Document node) {
        requireNonNull(node);

        final Optional<String> path = Optional.of(node)
            .filter(HasIconPath.class::isInstance)
            .map(HasIconPath.class::cast)
            .map(HasIconPath::getIconPath);

        if (path.isPresent()) {
            final InputStream stream = SpeedmentIcon.class.getResourceAsStream(path.get());
            if (stream != null) {
                return new ImageView(new Image(stream));
            } else {
                LOGGER.error(
                    "Config node '" + node.getClass().getSimpleName()
                    + "' specified a custom icon '" + path.get() + "' that could not be loaded."
                );
            }
        }

        final SpeedmentIcon icon;
        if (node instanceof Table) {
            icon = ((Table) node).isView()
                ? TABLE_LINK : TABLE;
        } else {
            icon = NODE_ICONS.get(
                Optional.of(node)
                    .filter(HasMainInterface.class::isInstance)
                    .map(HasMainInterface.class::cast)
                    .map(HasMainInterface::mainInterface)
                    .orElse(null)
            );
        }

        if (icon != null) {
            return icon.view();
        } else {
            LOGGER.error("Found no predefined icon for node type '" + node.getClass().getSimpleName() + "'.");
            return SpeedmentIcon.HELP.view();
        }
    }
An enumeration of all the icons available in the Speedment Icon Package.

@author Emil Forslund
@since 2.2.0
tool-parent/tool-core/src/main/java/com/speedment/tool/core/resource/SpeedmentIcon.java