Reputation: 1412
Facing NullPointerException
for WorkbenchPage.ShowView(String viewId)
.
stackstrace is as following.
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.ui.workbench". !STACK 0
java.lang.NullPointerException
at org.eclipse.ui.internal.WorkbenchPage.setState(WorkbenchPage.java:4024)
at org.eclipse.ui.internal.WorkbenchPage.toggleZoom(WorkbenchPage.java:4096)
at org.eclipse.ui.internal.WorkbenchIntroManager.setIntroStandby(WorkbenchIntroManager.java:201)
at org.eclipse.ui.internal.WorkbenchPage.checkIntro(WorkbenchPage.java:1202)
at org.eclipse.ui.internal.WorkbenchPage.busyShowView(WorkbenchPage.java:1170)
at org.eclipse.ui.internal.WorkbenchPage.busyShowView(WorkbenchPage.java:1140)
at org.eclipse.ui.internal.WorkbenchPage$20.run(WorkbenchPage.java:3925)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:3922)
at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:3898)
at com.rcp.app.foundation.ui.services.PerspectiveChangeListener.perspectiveActivated(PerspectiveChangeListener.java:60)
at org.eclipse.ui.internal.PerspectiveListenerList$1.run(PerspectiveListenerList.java:74)
I not getting what I am missing exactly. Can anyone help me to find out what exactly I am missing in this flow.
I wrote perspectiveChangeListner as following.
public class PerspectiveChangeListener implements IPerspectiveListener, IPerspectiveListener3
{
/**
* WindowTitleUpdater Object to update the window title based on selected erspectives.
*/
private WindowTitleUpdater windowTitleUpdater = null;
/**
* Constructor.
* @param windowTitleUpdater
*/
public PerspectiveChangeListener( WindowTitleUpdater windowTitleUpdater )
{
this.windowTitleUpdater = windowTitleUpdater;
}
/**
* (non-Javadoc).
* @see org.eclipse.ui.IPerspectiveListener#perspectiveActivated(org.eclipse.ui.IWorkbenchPage,
* org.eclipse.ui.IPerspectiveDescriptor)
*/
@Override
public void perspectiveActivated( IWorkbenchPage page, IPerspectiveDescriptor perspective )
{
windowTitleUpdater.updateTitle( false );
if ( perspective.getId().equals( "com.app.perspective.id" ) )
{
try
{
page.showView( "com.app.view.id" );
}
}
}
Upvotes: 0
Views: 1281
Reputation: 111216
The perspectiveActivated
listener is fired by the WorkbenchPage
, the page seems not expect the listener to call the page showView
method in the listener and gets confused if it does.
Use Display.asyncExec
to run the showView
call. This will run the code after the WorkbenchPage has finished the work it is doing.
Upvotes: 1