Display wait cursor when 'Next' clicked - Netbeans WizardDescriptor

297 Views Asked by At

I have a Wizard Iterator with a few PanelDescriptors. I'm trying to display a Wait Cursor when 'Next' is clicked on one PanelDescriptor which implements WizardDescriptor.ValidatingPanel. The validate() method in that takes time execute.

So far I've tried few ways, non of them works for me.

  1. http://dev.platform.netbeans.narkive.com/ofiffInN/finally-a-waitcursor-routine-that-works-in-netbeans
  2. http://netbeans-org.1045718.n5.nabble.com/Setting-wait-cursor-td3026613.html#a3026614

    private static void changeCursorWaitStatus(final boolean isWaiting) {
        Mutex.EVENT.writeAccess(new Runnable() {
            public void run() {
                try {
                    JFrame mainFrame = (JFrame) WindowManager.getDefault().getMainWindow();
                    Component glassPane = mainFrame.getGlassPane();
                    if (isWaiting) {
                        glassPane.setVisible(true);
                        glassPane.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
                    } else {
                        glassPane.setVisible(false);
                        glassPane.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
                    }
                } catch (Exception e) {
                    // probably not worth handling 
                }
            }
        });
    }
    
  3. https://community.oracle.com/message/5322657#5322657

    try {            
        TopComponent.getRegistry().getActivated().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
        doBusyStuff();
    } finally {
        TopComponent.getRegistry().getActivated().setCursor(Cursor.getDefaultCursor());
    }
    

Any hint to point me in the right direction would appreciated.

1

There are 1 best solutions below

1
Tamil On

Try this

    private static final java.awt.event.MouseAdapter mouseAdapter = new java.awt.event.MouseAdapter() {

    };

    protected static final Cursor READY_CSR = new Cursor(Cursor.DEFAULT_CURSOR);
    protected static final Cursor WAIT_CSR  = new Cursor(Cursor.WAIT_CURSOR);

    public void setBusy(boolean busy) {

        if(busy) {
            setCursor(WAIT_CSR);
            frame.getGlassPane().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
            frame.getGlassPane().addMouseListener(mouseAdapter);
            frame.getGlassPane().setVisible(true);
        }else {
            setCursor(READY_CSR);
            frame.getGlassPane().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
            frame.getGlassPane().removeMouseListener(mouseAdapter);
            frame.getGlassPane().setVisible(false);
        }
    }