All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cdc.ui.swing.SwingUtils Maven / Gradle / Ivy

package cdc.ui.swing;

import java.awt.Font;
import java.awt.Image;
import java.io.IOException;
import java.net.URL;
import java.util.function.BiConsumer;
import java.util.function.Consumer;

import javax.imageio.ImageIO;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import cdc.util.files.Resources;

public final class SwingUtils {
    private static final Logger LOGGER = LogManager.getLogger(SwingUtils.class);
    private static Image applicationImage = null;

    private SwingUtils() {
    }

    public static void setPlainFont(JLabel c) {
        c.setFont(c.getFont().deriveFont(Font.PLAIN));
    }

    public static Image getApplicationImage() {
        if (applicationImage == null) {
            final URL url = Resources.getResource("cdc/ui/images/cdc-32.png");
            if (url != null) {
                try {
                    applicationImage = ImageIO.read(url);
                } catch (final IOException e) {
                    LOGGER.catching(e);
                }
            } else {
                LOGGER.error("Failed to find the application image");
            }
        }
        return applicationImage;
    }

    public static Icon loadIcon(String path) {
        LOGGER.debug("loadIcon({})", path);
        final URL url = Resources.getResource(path);
        if (url != null) {
            return new ImageIcon(url);
        } else {
            LOGGER.warn("loadIcon({}) FAILED", path);
            return null;
        }
    }

    public static void processInEDT(Runnable runnable) {
        if (SwingUtilities.isEventDispatchThread()) {
            runnable.run();
        } else {
            SwingUtilities.invokeLater(runnable::run);
        }
    }

    public static  void processInEDT(Consumer consumer,
                                        T arg) {
        if (SwingUtilities.isEventDispatchThread()) {
            consumer.accept(arg);
        } else {
            SwingUtilities.invokeLater(() -> consumer.accept(arg));
        }
    }

    public static  void processInEDT(BiConsumer consumer,
                                           T arg1,
                                           U arg2) {
        if (SwingUtilities.isEventDispatchThread()) {
            consumer.accept(arg1, arg2);
        } else {
            SwingUtilities.invokeLater(() -> consumer.accept(arg1, arg2));
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy