]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.diagram/src/org/simantics/diagram/profile/Updater.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / profile / Updater.java
index f229aa9b0df20a46c5db73bd49b35b328a92ac32..44ec7618e2fee64577f350633c778316428ae144 100644 (file)
@@ -1,92 +1,92 @@
-package org.simantics.diagram.profile;\r
-\r
-import java.util.HashMap;\r
-import java.util.HashSet;\r
-import java.util.Map;\r
-import java.util.concurrent.TimeUnit;\r
-import java.util.concurrent.atomic.AtomicBoolean;\r
-\r
-import org.simantics.diagram.elements.DiagramNodeUtil;\r
-import org.simantics.g2d.canvas.ICanvasContext;\r
-import org.simantics.scenegraph.INode;\r
-import org.simantics.scenegraph.g2d.G2DNode;\r
-import org.simantics.utils.threads.ThreadUtils;\r
-\r
-class Updater implements Runnable {\r
-\r
-       private static Updater INSTANCE;\r
-       \r
-       Map<INode, ICanvasContext> requesters = new HashMap<INode, ICanvasContext>();\r
-       \r
-       AtomicBoolean state = new AtomicBoolean(false);\r
-       \r
-       private static long time = System.nanoTime();\r
-       \r
-       private Updater() {\r
-       }\r
-       \r
-       @Override\r
-       public void run() {\r
-\r
-               // Stop this if nothing is to be done, need synchonization since this is not AWT\r
-               synchronized(requesters) {\r
-                       if(requesters.isEmpty()) {\r
-                               state.set(false);\r
-                               throw new RuntimeException();\r
-                       }\r
-               }\r
-               \r
-               // TODO: in unit tests this should not be AWT\r
-               ThreadUtils.AWT_EDT.execute(new Runnable() {\r
-\r
-                       @Override\r
-                       public void run() {\r
-                               \r
-                               time = System.nanoTime();\r
-                               \r
-                               synchronized(requesters) {\r
-                                       HashSet<ICanvasContext> ctxSet = new HashSet<ICanvasContext>();\r
-                                       for(ICanvasContext ctx : requesters.values()) {\r
-                                               if(ctx != null) {\r
-                                                       if(ctxSet.add(ctx)) ctx.getContentContext().setDirty();\r
-                                               }\r
-                                       }\r
-                               }\r
-                                               \r
-                       }\r
-                       \r
-               });\r
-               \r
-       }\r
-       \r
-       public void register(INode node) {\r
-               // We use ths size of this map to determine whether updates are needed, this is done in AWT thread\r
-               synchronized(requesters) {\r
-                       if(requesters.size() == 0) {\r
-                               if(state.compareAndSet(false, true)) {\r
-                                       ThreadUtils.getNonBlockingWorkExecutor().scheduleAtFixedRate(this, 0, 500, TimeUnit.MILLISECONDS);\r
-                               }\r
-                       }\r
-                       ICanvasContext context = DiagramNodeUtil.getPossibleCanvasContext((G2DNode)node);\r
-                       requesters.put(node, context);\r
-               }\r
-       }\r
-       \r
-       public void unregister(INode node) {\r
-               synchronized(requesters) {\r
-                       requesters.remove(node);\r
-               }\r
-       }\r
-       \r
-       public long getTime() {\r
-               return time;\r
-       }\r
-       \r
-       public static Updater getInstance() {\r
-               if(INSTANCE == null) {\r
-                       INSTANCE = new Updater();\r
-               }\r
-               return INSTANCE;\r
-       }\r
-       \r
+package org.simantics.diagram.profile;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import org.simantics.diagram.elements.DiagramNodeUtil;
+import org.simantics.g2d.canvas.ICanvasContext;
+import org.simantics.scenegraph.INode;
+import org.simantics.scenegraph.g2d.G2DNode;
+import org.simantics.utils.threads.ThreadUtils;
+
+class Updater implements Runnable {
+
+       private static Updater INSTANCE;
+       
+       Map<INode, ICanvasContext> requesters = new HashMap<INode, ICanvasContext>();
+       
+       AtomicBoolean state = new AtomicBoolean(false);
+       
+       private static long time = System.nanoTime();
+       
+       private Updater() {
+       }
+       
+       @Override
+       public void run() {
+
+               // Stop this if nothing is to be done, need synchonization since this is not AWT
+               synchronized(requesters) {
+                       if(requesters.isEmpty()) {
+                               state.set(false);
+                               throw new RuntimeException();
+                       }
+               }
+               
+               // TODO: in unit tests this should not be AWT
+               ThreadUtils.AWT_EDT.execute(new Runnable() {
+
+                       @Override
+                       public void run() {
+                               
+                               time = System.nanoTime();
+                               
+                               synchronized(requesters) {
+                                       HashSet<ICanvasContext> ctxSet = new HashSet<ICanvasContext>();
+                                       for(ICanvasContext ctx : requesters.values()) {
+                                               if(ctx != null) {
+                                                       if(ctxSet.add(ctx)) ctx.getContentContext().setDirty();
+                                               }
+                                       }
+                               }
+                                               
+                       }
+                       
+               });
+               
+       }
+       
+       public void register(INode node) {
+               // We use ths size of this map to determine whether updates are needed, this is done in AWT thread
+               synchronized(requesters) {
+                       if(requesters.size() == 0) {
+                               if(state.compareAndSet(false, true)) {
+                                       ThreadUtils.getNonBlockingWorkExecutor().scheduleAtFixedRate(this, 0, 500, TimeUnit.MILLISECONDS);
+                               }
+                       }
+                       ICanvasContext context = DiagramNodeUtil.getPossibleCanvasContext((G2DNode)node);
+                       requesters.put(node, context);
+               }
+       }
+       
+       public void unregister(INode node) {
+               synchronized(requesters) {
+                       requesters.remove(node);
+               }
+       }
+       
+       public long getTime() {
+               return time;
+       }
+       
+       public static Updater getInstance() {
+               if(INSTANCE == null) {
+                       INSTANCE = new Updater();
+               }
+               return INSTANCE;
+       }
+       
 }
\ No newline at end of file