You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
SIPRP/trunk/SIPRPSoft/src/siprp/higiene/gestao/SIPRPLazyLoadedPanel.java

78 lines
1.4 KiB

package siprp.higiene.gestao;
import java.awt.Cursor;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import com.evolute.swing.frame.EvoFrame;
import com.evolute.utils.error.ErrorLogger;
public abstract class SIPRPLazyLoadedPanel extends JPanel
{
private static final long serialVersionUID = 1L;
private boolean inited = false;
public synchronized final void doRefresh( )
{
Runnable run = new Runnable()
{
@Override
public void run()
{
try
{
inited = true;
EvoFrame window = EvoFrame.findParentEvoFrame( SIPRPLazyLoadedPanel.this );
if( window != null )
{
window.runAsynchronously( new Runnable()
{
@Override
public void run()
{
long start = System.currentTimeMillis();
refresh();
System.out.println("\n\t" + SIPRPLazyLoadedPanel.this.getClass() + ": took " + ( System.currentTimeMillis() - start ) );
}
} );
}
else
{
try
{
setCursor( new Cursor( Cursor.WAIT_CURSOR ) );
refresh();
}
finally
{
setCursor( new Cursor( Cursor.DEFAULT_CURSOR ) );
}
}
}
catch( Exception e )
{
ErrorLogger.logException( e );
}
}
};
SwingUtilities.invokeLater( run );
}
public final void init()
{
if( !inited )
{
doRefresh();
}
}
protected abstract void refresh();
}