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
import org.eclipse.birt.report.model.api.activity.SemanticException;
import org.eclipse.birt.report.model.api.elements.structures.ComputedColumn;
import org.eclipse.birt.report.model.api.olap.LevelHandle;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.graphics.Image;
/**
 * Add the level handle to the dimension handle.
 */
public class AddLevelHandleAction extends AbstractCrosstabAction
{
	DimensionViewHandle viewHandle = null;
	
	private static final String ID = "add_levelViewhandle";
	
	private static final String NAME = Messages.getString( "AddLevelHandleAction_TransName" );
	private static final String TEXT = Messages.getString( "AddLevelHandleAction_Displayname" );
	/**
	 * Constructor
	 * 
	 * @param handle
	 */
	public AddLevelHandleAction( DesignElementHandle handle )
	{
		super( handle );
		setId( ID );
		setText( TEXT );
		ExtendedItemHandle extendedHandle =CrosstabAdaptUtil. getExtendedItemHandle( handle );
		setHandle( extendedHandle );
		viewHandle = CrosstabAdaptUtil.getDimensionViewHandle( extendedHandle );