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
public void selectionChanged(IWorkbenchPart part, ISelection selection) {
        if (viewer == null) {
			return;
		}
        if (sourcePart != null) {
        	sourcePart.getSite().getPage().removePartListener(partListener);
        	sourcePart = null;
        }
        
        
        if (selection instanceof IStructuredSelection) {
        	sourcePart = part;
            viewer.setInput(((IStructuredSelection) selection).toArray());
        }
        if (sourcePart != null) {
        	sourcePart.getSite().getPage().addPartListener(partListener);
        }
    }
    /**
     * The <code>PropertySheetPage</code> implementation of this <code>IPage</code> method
     * calls <code>makeContributions</code> for backwards compatibility with
     * previous versions of <code>IPage</code>. 
     * <p>
     * Subclasses may reimplement.
     * </p>
     */
    public void setActionBars(IActionBars actionBars) {
        super.setActionBars(actionBars);
        cellEditorActionHandler = new CellEditorActionHandler(actionBars);
        cellEditorActionHandler.setCopyAction(copyAction);