- for (E e : mod.getKeys()) {
- for (NodeListener l : nodeListeners)
- for (String s : mod.getValues(e))
- l.propertyChanged(e, s);
- }
-
- synchronized (syncMutex) {
- if (added.isEmpty() && removed.isEmpty() && updated.getKeys().size() == 0)
- rangeModified = false;
- }
- }
-
- @SuppressWarnings("unchecked")
- private void listen(INode node) {
- node.addListener(this);
- if (node instanceof ParentNode<?>) {
- ParentNode<INode> parentNode = (ParentNode<INode>)node;
- for (INode n : parentNode.getNodes())
- listen(n);
- }
- }
-
- private void stopListening(INode node) {
- node.removeListener(this);
- if (node instanceof ParentNode<?>) {
- @SuppressWarnings("unchecked")
- ParentNode<INode> parentNode = (ParentNode<INode>)node;
- for (INode n : parentNode.getNodes())
- stopListening(n);
- }
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public void propertyChanged(INode node, String id) {
- //receiveUpdate((E)node, id, graphUpdates);
- receiveUpdate((E)node, id, graphModified.contains(node));
-
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public <T extends INode> void nodeAdded(ParentNode<T> node, INode child,
- String rel) {
- if (DEBUG) System.out.println("Node added " + child + " parent " + node);
- //receiveAdd((E)child, rel ,graphUpdates);
- receiveAdd((E)child, rel ,graphModified.contains(node));
-
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public <T extends INode> void nodeRemoved(ParentNode<T> node, INode child,
- String rel) {
- if (DEBUG) System.out.println("Node removed " + child + " parent " + node);
- //receiveRemove((E)child, rel, graphUpdates);
- receiveRemove((E)child, rel, graphModified.contains(node));
-
- //FIXME : sometimes removed structural models cause ObjMap to add their children again.
- // removing the listener here prevents corruption of visual model, but better fix is needed.
- stopListening(child);
- }
-
- @Override
- public void delete() {
-
- changeTracking = false;
- mapping.removeMappingListener(this);
+ for (E e : mod.getKeys()) {
+ for (NodeListener l : nodeListeners)
+ for (String s : mod.getValues(e))
+ l.propertyChanged(e, s);
+ }
+
+ synchronized (syncMutex) {
+ if (added.isEmpty() && removed.isEmpty() && updated.getKeys().size() == 0)
+ rangeModified = false;
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ private void listen(INode node) {
+ node.addListener(this);
+ if (node instanceof ParentNode<?>) {
+ ParentNode<INode> parentNode = (ParentNode<INode>)node;
+ for (INode n : parentNode.getNodes())
+ listen(n);
+ }
+ }
+
+ private void stopListening(INode node) {
+ node.removeListener(this);
+ if (node instanceof ParentNode<?>) {
+ @SuppressWarnings("unchecked")
+ ParentNode<INode> parentNode = (ParentNode<INode>)node;
+ for (INode n : parentNode.getNodes())
+ stopListening(n);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public void propertyChanged(INode node, String id) {
+ //receiveUpdate((E)node, id, graphUpdates);
+ receiveUpdate((E)node, id, graphModified.contains(node));
+
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends INode> void nodeAdded(ParentNode<T> node, INode child,
+ String rel) {
+ if (DEBUG) System.out.println("Node added " + child + " parent " + node);
+ //receiveAdd((E)child, rel ,graphUpdates);
+ receiveAdd((E)child, rel ,graphModified.contains(node));
+
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends INode> void nodeRemoved(ParentNode<T> node, INode child,
+ String rel) {
+ if (DEBUG) System.out.println("Node removed " + child + " parent " + node);
+ //receiveRemove((E)child, rel, graphUpdates);
+ receiveRemove((E)child, rel, graphModified.contains(node));
+
+ //FIXME : sometimes removed structural models cause ObjMap to add their children again.
+ // removing the listener here prevents corruption of visual model, but better fix is needed.
+ stopListening(child);
+ }
+
+ @Override
+ public void delete() {
+
+ changeTracking = false;
+ mapping.removeMappingListener(this);