1 package be
.nikiroo
.fanfix_swing
.gui
.utils
;
3 import java
.util
.HashMap
;
4 import java
.util
.LinkedList
;
8 import javax
.swing
.SwingWorker
;
10 @SuppressWarnings("rawtypes")
11 public class DelayWorker
{
12 private Map
<String
, SwingWorker
> lazyEnCours
;
13 private Object lazyEnCoursLock
;
15 private Object waiter
;
18 private boolean paused
;
21 public DelayWorker(final int delayMs
) {
22 lazyEnCours
= new HashMap
<String
, SwingWorker
>();
23 lazyEnCoursLock
= new Object();
24 waiter
= new Object();
28 loop
= new Thread(new Runnable() {
33 Thread
.sleep(delayMs
);
34 } catch (InterruptedException e
) {
37 List
<SwingWorker
> workers
;
38 synchronized (lazyEnCoursLock
) {
39 workers
= new LinkedList
<SwingWorker
>(
40 lazyEnCours
.values());
43 for (SwingWorker worker
: workers
) {
47 synchronized (waiter
) {
52 } catch (InterruptedException e
) {
54 } while (cont
&& paused
);
60 loop
.setName("Loop for DelayWorker");
72 public boolean isPaused() {
76 public void resume() {
77 synchronized (waiter
) {
84 synchronized (waiter
) {
91 synchronized (lazyEnCoursLock
) {
96 public <T
, V
> void delay(final String id
, final SwingWorker
<T
, V
> worker
) {
97 synchronized (lazyEnCoursLock
) {
98 lazyEnCours
.put(id
, worker
);
104 private void wakeup() {
105 synchronized (waiter
) {