]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.g2d/src/org/simantics/g2d/diagram/handler/impl/TransactionContextImpl.java
Made spatial picking optimization optional for now
[simantics/platform.git] / bundles / org.simantics.g2d / src / org / simantics / g2d / diagram / handler / impl / TransactionContextImpl.java
1 /*******************************************************************************
2  * Copyright (c) 2007, 2010 Association for Decentralized Information Management
3  * in Industry THTH ry.
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
8  *
9  * Contributors:
10  *     VTT Technical Research Centre of Finland - initial API and implementation
11  *******************************************************************************/
12 package org.simantics.g2d.diagram.handler.impl;
13
14 import java.util.Collection;
15 import java.util.HashMap;
16 import java.util.Map;
17
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;
23
24 /**
25  * @author Toni Kalajainen
26  */
27 public class TransactionContextImpl implements TransactionContext, LifeCycle {
28
29     Map<IDiagram, ListenerList<TransactionListener>> list =
30         new HashMap<IDiagram, ListenerList<TransactionListener>>();
31
32     @Override
33     public void addTransactionListener(IDiagram d, TransactionListener l) {
34         ListenerList<TransactionListener> ll = list.get(d);
35         if (ll==null) {
36             ll = new ListenerList<TransactionListener>(TransactionListener.class);
37             list.put(d, ll);
38         }
39         ll.add(l);
40     }
41
42     @Override
43     public void removeTransactionListener(IDiagram d, TransactionListener l) {
44         ListenerList<TransactionListener> ll = list.get(d);
45         if (ll==null) return;
46         ll.remove(l);
47     }
48
49     @Override
50     public void onDiagramDestroyed(IDiagram diagram) {
51     }
52
53     @Override
54     public void onDiagramDisposed(IDiagram diagram) {
55         list.remove(diagram);
56     }
57
58     @Override
59     public void onDiagramCreated(IDiagram diagram) {
60     }
61
62 //      @Override
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);
68 //      }
69
70 //      @Override
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);
76 //      }
77
78     @Override
79     public void onDiagramLoaded(IDiagram diagram, Collection<IElement> initialElements) {
80     }
81
82     @Override
83     public Transaction startTransaction(IDiagram d, TransactionType type) {
84         Transaction t = new Transaction.Impl(type);
85         ListenerList<TransactionListener> ll = list.get(d);
86         if (ll != null)
87             for (TransactionListener l : ll.getListeners())
88                 l.transactionStarted(d, t);
89         return t;
90     }
91
92     @Override
93     public void finishTransaction(IDiagram d, Transaction t) {
94         ListenerList<TransactionListener> ll = list.get(d);
95         if (ll == null)
96             return;
97         for (TransactionListener l : ll.getListeners())
98             l.transactionFinished(d, t);
99     }
100
101 //    @Override
102 //    public void cancelTransaction(IDiagram d, Transaction t) {
103 //        ListenerList<TransactionListener> ll = list.get(d);
104 //        if (ll == null)
105 //            return;
106 //        for (TransactionListener l : ll.getListeners())
107 //            l.transactionCanceled(d, t);
108 //    }
109
110 }