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(); }