BlinkNode bc = (BlinkNode) blinkNodeMap.get(value);
if (bc != null) {
if (flag ) {
setForeground(bc.color1);
}
else {
setForeground(bc.color2);
}
}
return this;
}
}
private static class BlinkNode {
Color color1, color2;
long blinkCount;
public BlinkNode(int blinkCount, Color color1, Color color2) {
this.blinkCount = (long)blinkCount*2;
this.color1 = color1;
this.color2 = color2;
}
}
public void blink(TreeNode node, int blinkCount, Color color1, Color color2) {
synchronized (blinkNodeMap) {
blinkNodeMap.put(node, new BlinkNode(blinkCount, color1, color2));
blinkNodeMap.notifyAll();
}
}
private class BlinkThread extends Thread {
public void run() {
while (true) {
synchronized (blinkNodeMap) {
while (blinkNodeMap.isEmpty()) {
try {
blinkNodeMap.wait();
} catch (InterruptedException e) {}
}
flag = ! flag;
Iterator iter = blinkNodeMap.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
TreeNode treeNode = (TreeNode) entry.getKey();
BlinkNode bc = (BlinkNode) entry.getValue();