]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/diagramEditor/DisposingPolicy.java
Externalize strings
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / diagramEditor / DisposingPolicy.java
index 9e9b7418bce5cbf069e6d512fa2c9c0a1402e481..db7e2571dde5b8e8bd0cc28e5b55e2be11a8d04a 100644 (file)
@@ -15,10 +15,9 @@ public class DisposingPolicy {
     public static final long DISPOSE_TIME = 30000L; // ms
     public static final long MIN_DELAY = 200L; // ms
 
-    private final int maxQueueLength;
-    private ArrayDeque<Runnable> disposerQueue = new ArrayDeque<Runnable>(MAX_QUEUE_LENGTH);
-    private TObjectLongHashMap<Runnable> disposeTime =
-            new TObjectLongHashMap<Runnable>(MAX_QUEUE_LENGTH);
+    private volatile int maxQueueLength;
+    private ArrayDeque<Runnable> disposerQueue;
+    private TObjectLongHashMap<Runnable> disposeTime;
     private Runnable currentlyScheduled = null;
 
     private Runnable disposeOne = () -> {
@@ -28,18 +27,24 @@ public class DisposingPolicy {
             currentlyScheduled = null;
             runnable.run();
             if(DEBUG)
-                System.out.println("Executed disposer " + runnable);
+                System.out.println("Executed disposer " + runnable); //$NON-NLS-1$
             if(!disposerQueue.isEmpty())
                 scheduleDispose();
         }
     };
 
     public DisposingPolicy() {
-       this(MAX_QUEUE_LENGTH);
+        this(MAX_QUEUE_LENGTH);
     }
 
     public DisposingPolicy(int maxQueueLength) {
         this.maxQueueLength = maxQueueLength;
+        this.disposerQueue = new ArrayDeque<>(maxQueueLength);
+        this.disposeTime = new TObjectLongHashMap<>(maxQueueLength);
+    }
+
+    public void setMaxQueueLength(int maxQueueLength) {
+        this.maxQueueLength = maxQueueLength;
     }
 
     private void scheduleDispose() {
@@ -49,7 +54,7 @@ public class DisposingPolicy {
                 MIN_DELAY);
         Display.getCurrent().timerExec((int)delay, disposeOne);
         if(DEBUG)
-            System.out.println("Scheduled disposer " + currentlyScheduled + " in " + delay + " ms");
+            System.out.println("Scheduled disposer " + currentlyScheduled + " in " + delay + " ms"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
     }
 
     /**
@@ -60,7 +65,7 @@ public class DisposingPolicy {
      */
     public void addDisposer(Runnable disposer) {
         if(DEBUG)
-            System.out.println("Added disposer " + disposer);
+            System.out.println("Added disposer " + disposer); //$NON-NLS-1$
         if(disposeTime.contains(disposer))
             return;
         if(disposerQueue.size() >= maxQueueLength)
@@ -77,7 +82,7 @@ public class DisposingPolicy {
      */
     public void removeDisposer(Runnable disposer) {
         if(DEBUG)
-            System.out.println("Removed disposer " + disposer);
+            System.out.println("Removed disposer " + disposer); //$NON-NLS-1$
         disposerQueue.remove(disposer);
         disposeTime.remove(disposer);
         if(disposer == currentlyScheduled) {