super(cs);
curX = 0; tmpChar[0] = (char) ce.character; repaint();
if (tmpChar[0] == 0) return; Dimension d = getSize(); int charWidth = fm.charWidth(tmpChar[0]); gc.clearRect(0, 0, d.width, d.height); gc.drawChars(tmpChar, 0, 1, curX++, fontHeight); if (curX > d.width - charWidth) curX = 0;
try { lock.lock(); while (true) { try { if (done) { cv.await(); } else { repaint(); cv.await(100, TimeUnit.MILLISECONDS); } } catch (InterruptedException ie) { return; } } } finally { lock.unlock(); }
try { lock.lock(); done = b; if (timer == null) { timer = new Thread(this); timer.start(); } if (!done) cv.signal(); } finally { lock.unlock(); }