Bug 155873 [PropertiesView] PropertySheetPage Help Integration Does Not Work In a Wizard
I've created a wizard page that uses a PropertySheetPage. If the PSP has focus and I press F1 to open help, a NPE occurs. The NPE occurs in the PropertySheetPage class on line 233 which is this: getSite().getWorkbenchWindow().getWorkbench().getHelpSystem().displayHelp(HELP_CONTEXT_PROPERTY_SHEET_PAGE); getSite() returns null because the PSP is not in a view. From what I can tell, getSite() is only being called to get the help system, which can be done in another way. If the help system was acquired in a different way that didn't involve getting the site I think this would work. Here's an example I tried which works: PlatformUI.getWorkbench().getHelpSystem().displayHelp(HELP_CONTEXT_PROPERTY_SHEET_PAGE); So, I think only a minor change in the eclipse UI is required to resolve the issue I have. I will attach a patch that contains this fix.
bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetPage.java
IPropertySheetEntry entry = (IPropertySheetEntry) selection
                            .getFirstElement();
                    Object helpContextId = entry.getHelpContextIds();
                    if (helpContextId != null) {
                        if (helpContextId instanceof String) {
                            getSite().getWorkbenchWindow().getWorkbench()
									.getHelpSystem().displayHelp(
											(String) helpContextId);
                            return;
                        }
                        
                        
                        
                         
                        
                        Object[] contexts = null;
                        if (helpContextId instanceof IContextComputer) {
                            
                            contexts = ((IContextComputer) helpContextId)
                                    .getLocalContexts(e);
                        } else {
                            contexts = (Object[]) helpContextId;
                        }
                        IWorkbenchHelpSystem help = getSite().getWorkbenchWindow().getWorkbench().getHelpSystem();
                        
                        if (contexts[0] instanceof IContext) {
							help.displayHelp((IContext) contexts[0]);
						} else {
							help.displayHelp((String) contexts[0]);
						}