Bug 149631 - [Preferences] java.lang.NullPointerException : performOk which is method of PreferencePage execute on null object.
Summary: [Preferences] java.lang.NullPointerException : performOk which is method of ...
Status: RESOLVED WONTFIX
Alias: None
Product: Platform
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 3.2   Edit
Hardware: PC Windows 2000
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Duong Nguyen CLA
QA Contact:
URL:
Whiteboard:
Keywords: helpwanted
Depends on:
Blocks:
 
Reported: 2006-07-05 02:53 EDT by lizheng CLA
Modified: 2007-06-13 16:20 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description lizheng CLA 2006-07-05 02:53:55 EDT
when I use SWT/JFace alone with my application,PreferenceDialog reports exception:

java.lang.NullPointerException
	at cn.yusens.eatery.ui.system.PreferencePageCard.performOk(PreferencePageCard.java:84)
	at org.eclipse.jface.preference.PreferenceDialog$11.run(PreferenceDialog.java:889)
	at org.eclipse.jface.util.SafeRunnable$1.run(SafeRunnable.java:113)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:149)
	at org.eclipse.jface.preference.PreferenceDialog.okPressed(PreferenceDialog.java:869)
	at org.eclipse.jface.preference.PreferenceDialog.buttonPressed(PreferenceDialog.java:230)
	at org.eclipse.jface.dialogs.Dialog$3.widgetSelected(Dialog.java:660)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:90)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:928)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3348)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2968)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:820)
	at org.eclipse.jface.window.Window.open(Window.java:796)
	at cn.yusens.eatery.ui.system.SystemManage.doSystemPreference(SystemManage.java:80)
	at cn.yusens.eatery.ui.system.SystemManage$2.widgetSelected(SystemManage.java:63)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:90)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:928)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:952)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:937)
	at org.eclipse.swt.widgets.Link.WM_LBUTTONUP(Link.java:785)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3280)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025)
	at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1923)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2966)
	at cn.yusens.eatery.ui.UIStartup.run(UIStartup.java:386)
	at cn.yusens.eatery.ui.UIStartup.main(UIStartup.java:409)
        ....

PreferencePageCard's method performOk is:
        IPreferenceStore preference=this.getPreferenceStore();
	preference.setValue(FILLSHORTCUT,txtFillShortcut.getText());   //line 84
        ....

I use these code to populate page of preference:
 ...
 PreferenceNode card=new PreferenceNode("card", new PreferencePageCard());
 pmg.addToRoot(card);
 PreferenceNode acc=new PreferenceNode("account", new PreferencePageAccount());
 pmg.addToRoot(acc);
 ...
 
 It's surprise that no exception occur when preference's dialog show at first.      


 look at code segment of PreferenceDialog(method okPressed ):
	...
        if (page != null) {
	   if (!page.performOk()){
		hasFailedOK = true;
		return;
	   }
         }
        ...
 I think it's not enough: page!=null.

 so I had to change my code (PreferencePage's method ):

	public boolean performOk() {
		IPreferenceStore preference=this.getPreferenceStore();
		if (preference==null){
			return true;
		}
        ...
Comment 1 Tod Creasey CLA 2007-06-13 16:20:14 EDT
There are currently no plans to work on this however I would be happy to look over a contribution