Bug 195152 [KeyBindings] NPE when opening Keys preference page
N20070702-0010 Step: try to open Keys preference page !ENTRY org.eclipse.jface 4 2 2007-07-02 17:45:10.046 !MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jface". !STACK 0 java.lang.NullPointerException at org.eclipse.ui.internal.keys.NewKeysPreferencePage$17.updateControl(NewKeysPreferencePage.java:1679) at org.eclipse.jface.internal.databinding.provisional.swt.ControlUpdater$1.run(ControlUpdater.java:106) at org.eclipse.core.databinding.observable.ObservableTracker.runAndMonitor(ObservableTracker.java:102) at org.eclipse.jface.internal.databinding.provisional.swt.ControlUpdater.updateIfNecessary(ControlUpdater.java:130) at org.eclipse.jface.internal.databinding.provisional.swt.ControlUpdater.<init>(ControlUpdater.java:125) at org.eclipse.ui.internal.keys.NewKeysPreferencePage$17.<init>(NewKeysPreferencePage.java:1677) at org.eclipse.ui.internal.keys.NewKeysPreferencePage.createTreeControls(NewKeysPreferencePage.java:1677) at org.eclipse.ui.internal.keys.NewKeysPreferencePage.createContents(NewKeysPreferencePage.java:1274) at org.eclipse.jface.preference.PreferencePage.createControl(PreferencePage.java:235) at org.eclipse.jface.preference.PreferenceDialog.createPageControl(PreferenceDialog.java:1456) at org.eclipse.jface.preference.PreferenceDialog$13.run(PreferenceDialog.java:1213) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.core.runtime.Platform.run(Platform.java:857) at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46) at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:193) at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:1207) at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.showPage(FilteredPreferenceDialog.java:433) at org.eclipse.jface.preference.PreferenceDialog$9.selectionChanged(PreferenceDialog.java:698) at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:842) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.core.runtime.Platform.run(Platform.java:857) at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46) at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:193) at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:840) at org.eclipse.jface.viewers.StructuredViewer.handlePostSelect(StructuredViewer.java:1153) at org.eclipse.jface.viewers.StructuredViewer$5.widgetSelected(StructuredViewer.java:1178) at org.eclipse.jface.util.OpenStrategy.firePostSelectionEvent(OpenStrategy.java:250) at org.eclipse.jface.util.OpenStrategy.access$4(OpenStrategy.java:244) at org.eclipse.jface.util.OpenStrategy$3.run(OpenStrategy.java:418) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:123) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3658) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3295) at org.eclipse.jface.window.Window.runEventLoop(Window.java:825) at org.eclipse.jface.window.Window.open(Window.java:801) at org.eclipse.ui.internal.OpenPreferencesAction.run(OpenPreferencesAction.java:65) at org.eclipse.jface.action.Action.runWithEvent(Action.java:498) at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:545) at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490) at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3681) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3292) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219) at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:153) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:504) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:443) at org.eclipse.equinox.launcher.Main.run(Main.java:1169) at org.eclipse.equinox.launcher.Main.main(Main.java:1144)
bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/provisional/swt/ControlUpdater.java
observable.removeChangeListener(privateInterface);
		}
	}
	/**
	 * Updates the control. This method will be invoked once after the
	 * updator is created, and once before any repaint during which the 
	 * control is visible and dirty.
	 *  
	 * <p>
	 * Subclasses should overload this method to provide any code that 
	 * changes the appearance of the widget.
	 * </p>
	 */
	protected abstract void updateControl();
	
	/**
	 * Marks this updator as dirty. Causes the updateControl method to
	 * be invoked before the next time the control is repainted.
	 */
	protected final void makeDirty() {
		if (!dirty) {
			dirty = true;
			stopListening();
			SWTUtil.runOnce(theControl.getDisplay(), privateInterface);
		}
	}
	
}