forked from Coded/SIPRP
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.
78 lines
1.4 KiB
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();
|
|
|
|
}
|