package com.activequant.trading; import java.util.concurrent.ConcurrentHashMap; import javax.swing.Timer; import com.activequant.trading.datamodel.AQTableDataBase; public abstract class AQTableDataBaseAlpha extends AQTableDataBase { /** * */ private static final long serialVersionUID = 1L; private ConcurrentHashMap<String, Integer> alphaList = new ConcurrentHashMap<String, Integer>(); private boolean enableBlinking; // Sleep time private int sleepTime = 50; Timer time = null; public AQTableDataBaseAlpha() { super(); setEnableBlinking(false); } public AQTableDataBaseAlpha(AbstractTSBase abstractTSBase) { super(abstractTSBase); setEnableBlinking(false); /* * Timer timer = new Timer(sleepTime, this); * timer.setInitialDelay(sleepTime); timer.start(); */ Thread t = new Thread(new Runnable() { public void run() { try { while (true) { synchronized (alphaList) { for (String t : alphaList.keySet()) { if ((Integer) alphaList.get(t) == 0) { alphaList.remove(t); } else { int newAlpha = alphaList.get(t) - 10; alphaList.put(t, newAlpha); } } } Thread.sleep((long) (sleepTime)); signalUpdate(); } } catch (InterruptedException e) { e.printStackTrace(); } } }); t.setDaemon(true); t.start(); } public void setValueAt(Object value, int row, int col) { super.setValueAt(value, row, col); if (!enableBlinking) { return; } synchronized (alphaList) { alphaList.put("" + row + ":" + col, 100); } } public int getAlpha(int row, int col) { if (!enableBlinking) { return 0; } synchronized (alphaList) { if (alphaList.get(""+row+":"+col) == null) { return 0; } else { return alphaList.get(""+row+":"+col); } } } public void setAlpha(int row, int col, int alpha) { if (!enableBlinking) { return; } synchronized (alphaList) { alphaList.put(""+row+":"+col, alpha); } } public boolean isEnableBlinking() { return enableBlinking; } public void setEnableBlinking(boolean enableBlinking) { this.enableBlinking = enableBlinking; } }