Bug 188837 Modify the datetime type dimension's level in cube will lead NPE when show and hide level in crosstab[1102]
Description: Modify the datetime type dimension's level in cube will lead NPE when show and hide level in crosstab[1102] Build number: 2.2.0.v20070524-0630 Steps to reproduce: 1, New a cube with a dimension d1: year->quarter->month->week-of-month 2, New a crosstab using the cube and levels 3, Show all the levels in crosstab 4, Modify the d1 to: quarter->month 5, Turn to crosstab and modify the show/hide levels Expected result: The level can be modified without exceptions Actual result: NPE occurs and crosstab can not be deleted Errors log: java.lang.NullPointerException at org.eclipse.birt.report.item.crosstab.internal.ui.editors.action.AddLevelHandleAction.run(AddLevelHandleAction.java:84) 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:3673) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3284)
xtab/org.eclipse.birt.report.item.crosstab.ui/src/org/eclipse/birt/report/item/crosstab/internal/ui/editors/action/AddLevelHandleAction.java
Image image = CrosstabUIHelper.getImage( CrosstabUIHelper.SHOW_HIDE_LECEL );
		setImageDescriptor( ImageDescriptor.createFromImage( image ) );
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.jface.action.Action#run()
	 */
	public void run( )
	{
		transStar( NAME );
		try
		{
			LevelViewDialog dialog = new LevelViewDialog(UIUtil.getDefaultShell( ));
			List showLevels = new ArrayList();
			int viewCount = viewHandle.getLevelCount( );
			for (int i=0; i<viewCount; i++)
			{
				LevelViewHandle levelHandle = viewHandle.getLevel( i );
				showLevels.add( levelHandle.getCubeLevel( ) );
			}
			dialog.setInput( viewHandle.getCubeDimension( ), showLevels );
			if ( dialog.open( ) == Window.OK )
			{
				List result = (List)dialog.getResult( );
				processor( showLevels, result  );
			}
		}
		catch ( SemanticException e )