Community
Participate
Working Groups
When a page change happens in a wizard, the current page becomes invisible AFTER the next page becomes visible. Since there is no API for catching page-change events, overriding setVisible() seems to be the only way to code actions on page-changes, which is critical for any complex wizard. If the setVisible() methods were called in the natural order (current becomes not visible THEN next page becomes visible), this would be a usable workaround. The change is simple. In updateForPage(IWizardPage page) of WizardDialog: change this: currentPage = page; currentPage.setVisible(true); if(oldPage != null) oldPage.setVisible(false); to this: if(oldPage != null) oldPage.setVisible(false); currentPage = page; currentPage.setVisible(true); Since the method is private, we can't even override the method to make the change. I've make my own version of WizardDialog and this change seems to work fine, although I admit I have not done any extensive testing. Thanks, Chris p.s. I apologize if this is the wrong component...there is no JFace component.
Wouldn't a better implementation be to add an event that has both pages in the event. This would also give you a way, in the wizard, to cancel the event to disallow it from happening if there is some problem with the code that has to know about both pages.
Well, duh. Of course that would be better! I've been wondering why that wasn't there in the first place. The proposed change (bugfix?) shouldn't require a committee to make a decision so I hope it has a good chance of inclusion in a release promptly.
The suggested fix in the original bug report will cause undesirable behavior - see bug 154794#c4 for full explanation. In short, what can happen is you will see a blank page when the back/next buttons are pressed when a wizard page calls IWizardContainer#run in their own implementation of WizardPage#setVisible.
Prakash is now responsible for watching bugs in the [Wizards] component area.
This bug hasn't had any activity in quite some time. Maybe the problem got resolved, was a duplicate of something else, or became less pressing for some reason - or maybe it's still relevant but just hasn't been looked at yet. If you have further information on the current state of the bug, please add it. The information can be, for example, that the problem still occurs, that you still want the feature, that more information is needed, or that the bug is (for whatever reason) no longer relevant.