### Eclipse Workspace Patch 1.0 #P org.eclipse.gmf.runtime.diagram.core Index: src/org/eclipse/gmf/runtime/diagram/core/DiagramEditingDomainFactory.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.runtime.diagram.core/src/org/eclipse/gmf/runtime/diagram/core/DiagramEditingDomainFactory.java,v retrieving revision 1.3 diff -u -r1.3 DiagramEditingDomainFactory.java --- src/org/eclipse/gmf/runtime/diagram/core/DiagramEditingDomainFactory.java 23 Mar 2006 22:13:35 -0000 1.3 +++ src/org/eclipse/gmf/runtime/diagram/core/DiagramEditingDomainFactory.java 28 Mar 2006 21:51:42 -0000 @@ -17,11 +17,14 @@ import org.eclipse.core.commands.operations.IOperationHistory; import org.eclipse.core.commands.operations.OperationHistoryFactory; +import org.eclipse.emf.common.command.Command; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.transaction.NotificationFilter; import org.eclipse.emf.transaction.ResourceSetChangeEvent; import org.eclipse.emf.transaction.ResourceSetListener; +import org.eclipse.emf.transaction.ResourceSetListenerImpl; import org.eclipse.emf.transaction.RollbackException; import org.eclipse.emf.transaction.Transaction; import org.eclipse.emf.transaction.TransactionalCommandStack; @@ -57,23 +60,54 @@ // while handling a post-commit event. private InternalTransaction originatingTransaction = null; private DiagramEventBroker deb = null; + private ResourceSetListener debWrapper = null; public void addResourceSetListener(ResourceSetListener l) { if (l.getClass() == DiagramEventBroker.class) { assert deb == null; deb = (DiagramEventBroker)l; + debWrapper = new ResourceSetListenerImpl() { + public boolean isAggregatePrecommitListener() { + return deb.isAggregatePrecommitListener(); + } + + public boolean isPrecommitOnly() { + return true; + } + + public Command transactionAboutToCommit(ResourceSetChangeEvent event) + throws RollbackException { + return deb.transactionAboutToCommit(event); + } + + public void resourceSetChanged(ResourceSetChangeEvent event) { + deb.resourceSetChanged(event); + } + + public NotificationFilter getFilter() { + return deb.getFilter(); + } + + public boolean isPostcommitOnly() { + return false; + } + }; + + super.addResourceSetListener(debWrapper); + } else { + super.addResourceSetListener(l); } - - super.addResourceSetListener(l); } public void removeResourceSetListener(ResourceSetListener l) { if (l.getClass() == DiagramEventBroker.class) { assert deb != null; deb = null; + super.removeResourceSetListener(debWrapper); + debWrapper = null; + } else { + super.removeResourceSetListener(l); } - - super.removeResourceSetListener(l); } public DiagramEditingDomain(AdapterFactory adapterFactory, ResourceSet resourceSet) { Index: src/org/eclipse/gmf/runtime/diagram/core/listener/DiagramEventBroker.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.runtime.diagram.core/src/org/eclipse/gmf/runtime/diagram/core/listener/DiagramEventBroker.java,v retrieving revision 1.11 diff -u -r1.11 DiagramEventBroker.java --- src/org/eclipse/gmf/runtime/diagram/core/listener/DiagramEventBroker.java 23 Mar 2006 22:05:22 -0000 1.11 +++ src/org/eclipse/gmf/runtime/diagram/core/listener/DiagramEventBroker.java 28 Mar 2006 21:51:43 -0000 @@ -587,13 +587,6 @@ public boolean isAggregatePrecommitListener() { return true; } - - public boolean isPrecommitOnly() { - // We aren't really a precommit only listener, the DiagramEditingDomain - // has a special case for us to be a special postcommit listener - // that can make changes while responding to batched events. - return true; - } /** * Helper method to add all the listners of the given notifier