Bug 130276 [Acceptance][Regression]SWTException when undo delete action on a grouped table
Description: SWTException when undo delete action on a grouped table. Steps to reproduce: 1. New a report,insert a table, add a group. 2. Delete the table and undo it. Result: org.eclipse.swt.SWTException: Widget is disposed at org.eclipse.swt.SWT.error(SWT.java:3349) at org.eclipse.swt.SWT.error(SWT.java:3272) at org.eclipse.swt.SWT.error(SWT.java:3243) at org.eclipse.swt.widgets.Widget.error(Widget.java:432) at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:327) at org.eclipse.swt.widgets.Table.setSelection(Table.java:3388) at org.eclipse.jface.viewers.TableViewer.setSelectionToWidget(TableViewer.java:1116) at org.eclipse.jface.viewers.StructuredViewer.setSelectionToWidget(StructuredViewer.java:1554) at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1268) at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1322) at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1281) at org.eclipse.birt.report.designer.internal.ui.views.attributes.page.FormPage.elementChanged(FormPage.java:667) at org.eclipse.birt.report.model.core.DesignElement.broadcast(DesignElement.java:784) at org.eclipse.birt.report.model.activity.NotificationRecordTask.doTask(NotificationRecordTask.java:199) at org.eclipse.birt.report.model.activity.FilterEventsCompoundRecord.performPostTasks(FilterEventsCompoundRecord.java:76) at org.eclipse.birt.report.model.activity.CompoundRecord.undo(CompoundRecord.java:127) at org.eclipse.birt.report.model.activity.ActivityStack.undo(ActivityStack.java:397) at org.eclipse.birt.report.designer.internal.ui.command.WrapperCommandStack.undo(WrapperCommandStack.java:59) at org.eclipse.gef.ui.actions.UndoAction.run(UndoAction.java:93) at org.eclipse.jface.action.Action.runWithEvent(Action.java:492) at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:530) at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:480) at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:392) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:925) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3287) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2907) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1899) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1863) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:417) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:106) at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:99) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:374) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:169) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.core.launcher.Main.invokeFramework(Main.java:338) at org.eclipse.core.launcher.Main.basicRun(Main.java:282) at org.eclipse.core.launcher.Main.run(Main.java:977) at org.eclipse.core.launcher.Main.main(Main.java:952)
model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/command/ContentRecord.java
*            the container element
	 * @param theSlot
	 *            the slotID in which to put the content
	 * @param contentObj
	 *            the content object to add or remove
	 * @param newPos
	 *            the position index at which the new content is to be inserted
	 * @param isAdd
	 *            whether to add or remove the item
	 */
	private void init( DesignElement containerObj, int theSlot,
			DesignElement contentObj, int newPos, boolean isAdd )
	{
		container = containerObj;
		slotID = theSlot;
		content = contentObj;
		add = isAdd;
		
		assert newPos >= -1;
		assert container != null;
		assert content != null;
		assert isAdd && content.getContainer( ) == null || !isAdd
				&& content.getContainer( ) != null;
		assert container.getDefn( ).getSlot( slotID ).canContain( content );
		ContainerSlot slot = container.getSlot( slotID );
		assert slot != null;
		if ( isAdd )
		{
			oldPosn = ( newPos == -1 || slot.getCount( ) < newPos ) ? slot
					.getCount( ) : newPos;