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

net.sourceforge.squirrel_sql.client.gui.util.ThreadCheckingRepaintManager Maven / Gradle / Ivy

package net.sourceforge.squirrel_sql.client.gui.util;

import java.awt.Component;

import javax.swing.JComponent;
import javax.swing.RepaintManager;
import javax.swing.SwingUtilities;

import net.sourceforge.squirrel_sql.fw.util.StringManager;
import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;
import net.sourceforge.squirrel_sql.fw.util.log.ILogger;
import net.sourceforge.squirrel_sql.fw.util.log.LoggerController;

public class ThreadCheckingRepaintManager extends RepaintManager
{
	/** Logger for this class. */
	private static final ILogger s_log =
		LoggerController.createLogger(ThreadCheckingRepaintManager.class);

    /** Internationalized strings for this class. */
    private static final StringManager s_stringMgr =
        StringManagerFactory.getStringManager(ThreadCheckingRepaintManager.class);
    
	public synchronized void addInvalidComponent(JComponent comp)
	{
		try
		{
			checkThread(comp);
		}
		catch (Exception ex)
		{
            // i18n[ThreadCheckingRepaintManager.workinwrongthread=GUI work done in wrong thread]
			s_log.debug(s_stringMgr.getString("ThreadCheckingRepaintManager.workinwrongthread"), ex);
		}
		super.addInvalidComponent(comp);
	}

	private void checkThread(JComponent comp) throws Exception
	{
		if (comp.isVisible())
		{
			final Component root = comp.getRootPane();
			if (root != null && root.isVisible())
			{
				if (!SwingUtilities.isEventDispatchThread())
				{
                    // i18n[ThreadCheckingRepaintManager.workinwrongthread=GUI work done in wrong thread]
					//throw new Exception(s_stringMgr.getString("ThreadCheckingRepaintManager.workinwrongthread"));
				}
			}
		}
	}

	public synchronized void addDirtyRegion(JComponent comp, int i, int i1,
												int i2, int i3)
	{
		try
		{
			checkThread(comp);
		}
		catch (Exception ex)
		{
            // i18n[ThreadCheckingRepaintManager.workinwrongthread=GUI work done in wrong thread]
			s_log.debug(s_stringMgr.getString("ThreadCheckingRepaintManager.workinwrongthread"), ex);
		}
		super.addDirtyRegion(comp, i, i1, i2, i3);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy