Hi all,
When my model changed i want to delete its childs from diagram and emf so i write;
/**
* @not generated
*/
@Override
public void handleNotificationEvent(Notification notification) {
if (notification.getNotifier() instanceof Grid)
switch (notification.getFeatureID(Grid.class)) {
case FormPackage.GRID__CONTENT_FIELD:
Grid grid = (Grid) notification.getNotifier();
if (grid.getColumns() != null && !grid.getColumns().isEmpty()) {
CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(
getEditingDomain(), null);
cmd.setTransactionNestingEnabled(false);
for (int i = 0; i < grid.getColumns().size(); i++) {
GridColumn column = (GridColumn) grid.getColumns().get(
i);
DestroyElementRequest request = new DestroyElementRequest
(column, false);
cmd.add(new DestroyElementCommand(request));
}
getDiagramEditDomain().getDiagramCommandStack().execute(new ICommandProxy(cmd));
}
refreshVisuals();
break;
}
super.handleNotificationEvent(notification);
}
this handleNotificationEvent but i always get error but dont understand why this code don't work. Anyone can help me ?
Caused by: java.lang.IllegalStateException: Transaction is already closed
at org.eclipse.emf.transaction.impl.TransactionImpl.rollback(TransactionImpl.java:533)
at org.eclipse.gmf.runtime.diagram.core.DiagramEditingDomainFactory$DiagramEditingDomain.postcommit(DiagramEditingDomainFactory.java:223)
at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.deactivate(TransactionalEditingDomainImpl.java:543)
at org.eclipse.emf.transaction.impl.TransactionImpl.close(TransactionImpl.java:712)
at org.eclipse.emf.transaction.impl.TransactionImpl.commit(TransactionImpl.java:474)
at org.eclipse.emf.workspace.AbstractEMFOperation.execute(AbstractEMFOperation.java:155)
at org.eclipse.core.commands.operations.TriggeredOperations.execute(TriggeredOperations.java:166)
at org.eclipse.core.commands.operations.DefaultOperationHistory.execute(DefaultOperationHistory.java:513) ...
Regards
[Updated on: Thu, 14 November 2013 23:51]
Report message to a moderator