static void awtCalcOnConceptChanges(JComponent component, int delay, final O runnable, final bool runOnFirstTime) { awtCalcOnConceptChanges(component, delay, 0, runnable, runOnFirstTime); } static void awtCalcOnConceptChanges(JComponent component, int delay, int firstDelay, final O runnable, final bool runOnFirstTime) { installTimer(component, delay, firstDelay, new Runnable { long c = runOnFirstTime ? -1 : changeCount(); new SingleThread thread; public void run() { long _c = changeCount(); if (_c != c && !thread.running()) { c = _c; thread.go(runnable); } } }); }