1 /*******************************************************************************
2 * Copyright (c) 2007, 2010 Association for Decentralized Information Management
4 * All rights reserved. This program and the accompanying materials
5 * are made available under the terms of the Eclipse Public License v1.0
6 * which accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * VTT Technical Research Centre of Finland - initial API and implementation
11 *******************************************************************************/
12 package org.simantics.g2d.diagram.handler.impl;
14 import java.util.Collection;
15 import java.util.HashMap;
18 import org.simantics.g2d.diagram.IDiagram;
19 import org.simantics.g2d.diagram.handler.LifeCycle;
20 import org.simantics.g2d.diagram.handler.TransactionContext;
21 import org.simantics.g2d.element.IElement;
22 import org.simantics.utils.datastructures.ListenerList;
25 * @author Toni Kalajainen
27 public class TransactionContextImpl implements TransactionContext, LifeCycle {
29 Map<IDiagram, ListenerList<TransactionListener>> list =
30 new HashMap<IDiagram, ListenerList<TransactionListener>>();
33 public void addTransactionListener(IDiagram d, TransactionListener l) {
34 ListenerList<TransactionListener> ll = list.get(d);
36 ll = new ListenerList<TransactionListener>(TransactionListener.class);
43 public void removeTransactionListener(IDiagram d, TransactionListener l) {
44 ListenerList<TransactionListener> ll = list.get(d);
50 public void onDiagramDestroyed(IDiagram diagram) {
54 public void onDiagramDisposed(IDiagram diagram) {
59 public void onDiagramCreated(IDiagram diagram) {
63 // public void finishTransaction(IDiagram d, Transaction t, ChangeSet cs) {
64 // ListenerList<TransactionListener> ll = list.get(d);
65 // if (ll==null) return;
66 // for (TransactionListener l : ll.getListeners())
67 // l.transactionFinished(d, t, cs);
71 // public void startTransaction(IDiagram d, Transaction t) {
72 // ListenerList<TransactionListener> ll = list.get(d);
73 // if (ll==null) return;
74 // for (TransactionListener l : ll.getListeners())
75 // l.transactionStarted(d, t);
79 public void onDiagramLoaded(IDiagram diagram, Collection<IElement> initialElements) {
83 public Transaction startTransaction(IDiagram d, TransactionType type) {
84 Transaction t = new Transaction.Impl(type);
85 ListenerList<TransactionListener> ll = list.get(d);
87 for (TransactionListener l : ll.getListeners())
88 l.transactionStarted(d, t);
93 public void finishTransaction(IDiagram d, Transaction t) {
94 ListenerList<TransactionListener> ll = list.get(d);
97 for (TransactionListener l : ll.getListeners())
98 l.transactionFinished(d, t);
102 // public void cancelTransaction(IDiagram d, Transaction t) {
103 // ListenerList<TransactionListener> ll = list.get(d);
106 // for (TransactionListener l : ll.getListeners())
107 // l.transactionCanceled(d, t);