1 31 32 package org.antlr.xjlib.appkit.gview.timer; 33 34 import org.antlr.xjlib.appkit.gview.object.GElement; 35 36 import javax.swing.*; 37 import java.awt.event.ActionEvent ; 38 import java.awt.event.ActionListener ; 39 import java.util.ArrayList ; 40 import java.util.List ; 41 42 public class GTimer { 43 44 protected List <GElement> elements = new ArrayList <GElement>(); 45 46 protected Timer timer = null; 47 protected GTimerDelegate delegate = null; 48 protected int delay = 50; 49 50 public GTimer(GTimerDelegate delegate) { 51 this.delegate = delegate; 52 } 53 54 public GTimer(GTimerDelegate delegate, int delay) { 55 this.delegate = delegate; 56 this.delay = delay; 57 } 58 59 public void setDelay(int delay) { 60 this.delay = delay; 61 } 62 63 public void refresh() { 64 if(elements.isEmpty()) 65 stop(); 66 else 67 start(); 68 } 69 70 public void start() { 71 if(timer == null) { 72 timer = new Timer(delay, new ActionListener () { 73 public void actionPerformed(ActionEvent e) { 74 delegate.timerFired(GTimer.this); 75 } 76 }); 77 timer.start(); 78 } else if(!timer.isRunning()) { 79 timer.start(); 80 } 81 } 82 83 public void stop() { 84 if(timer == null) 85 return; 86 87 if(timer.isRunning()) 88 timer.stop(); 89 } 90 91 public synchronized void add(GElement element) { 92 if(elements.contains(element)) 93 return; 94 95 elements.add(element); 96 refresh(); 97 } 98 99 public synchronized void remove(GElement element) { 100 elements.remove(element); 101 refresh(); 102 } 103 104 public synchronized void clear() { 105 elements.clear(); 106 refresh(); 107 } 108 109 public synchronized boolean contains(GElement element) { 110 return elements.contains(element); 111 } 112 113 public List <GElement> getElements() { 114 return elements; 115 } 116 } 117 | Popular Tags |