--- /dev/null
+/*******************************************************************************\r
+ * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
+ * in Industry THTH ry.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ * VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
+package org.simantics.g2d.diagram.handler.impl;\r
+\r
+import java.util.Collection;\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+\r
+import org.simantics.g2d.diagram.IDiagram;\r
+import org.simantics.g2d.diagram.handler.LifeCycle;\r
+import org.simantics.g2d.diagram.handler.TransactionContext;\r
+import org.simantics.g2d.element.IElement;\r
+import org.simantics.utils.datastructures.ListenerList;\r
+\r
+/**\r
+ * @author Toni Kalajainen\r
+ */\r
+public class TransactionContextImpl implements TransactionContext, LifeCycle {\r
+\r
+ Map<IDiagram, ListenerList<TransactionListener>> list =\r
+ new HashMap<IDiagram, ListenerList<TransactionListener>>();\r
+\r
+ @Override\r
+ public void addTransactionListener(IDiagram d, TransactionListener l) {\r
+ ListenerList<TransactionListener> ll = list.get(d);\r
+ if (ll==null) {\r
+ ll = new ListenerList<TransactionListener>(TransactionListener.class);\r
+ list.put(d, ll);\r
+ }\r
+ ll.add(l);\r
+ }\r
+\r
+ @Override\r
+ public void removeTransactionListener(IDiagram d, TransactionListener l) {\r
+ ListenerList<TransactionListener> ll = list.get(d);\r
+ if (ll==null) return;\r
+ ll.remove(l);\r
+ }\r
+\r
+ @Override\r
+ public void onDiagramDestroyed(IDiagram diagram) {\r
+ }\r
+\r
+ @Override\r
+ public void onDiagramDisposed(IDiagram diagram) {\r
+ list.remove(diagram);\r
+ }\r
+\r
+ @Override\r
+ public void onDiagramCreated(IDiagram diagram) {\r
+ }\r
+\r
+// @Override\r
+// public void finishTransaction(IDiagram d, Transaction t, ChangeSet cs) {\r
+// ListenerList<TransactionListener> ll = list.get(d);\r
+// if (ll==null) return;\r
+// for (TransactionListener l : ll.getListeners())\r
+// l.transactionFinished(d, t, cs);\r
+// }\r
+\r
+// @Override\r
+// public void startTransaction(IDiagram d, Transaction t) {\r
+// ListenerList<TransactionListener> ll = list.get(d);\r
+// if (ll==null) return;\r
+// for (TransactionListener l : ll.getListeners())\r
+// l.transactionStarted(d, t);\r
+// }\r
+\r
+ @Override\r
+ public void onDiagramLoaded(IDiagram diagram, Collection<IElement> initialElements) {\r
+ }\r
+\r
+ @Override\r
+ public Transaction startTransaction(IDiagram d, TransactionType type) {\r
+ Transaction t = new Transaction.Impl(type);\r
+ ListenerList<TransactionListener> ll = list.get(d);\r
+ if (ll != null)\r
+ for (TransactionListener l : ll.getListeners())\r
+ l.transactionStarted(d, t);\r
+ return t;\r
+ }\r
+\r
+ @Override\r
+ public void finishTransaction(IDiagram d, Transaction t) {\r
+ ListenerList<TransactionListener> ll = list.get(d);\r
+ if (ll == null)\r
+ return;\r
+ for (TransactionListener l : ll.getListeners())\r
+ l.transactionFinished(d, t);\r
+ }\r
+\r
+// @Override\r
+// public void cancelTransaction(IDiagram d, Transaction t) {\r
+// ListenerList<TransactionListener> ll = list.get(d);\r
+// if (ll == null)\r
+// return;\r
+// for (TransactionListener l : ll.getListeners())\r
+// l.transactionCanceled(d, t);\r
+// }\r
+\r
+}\r