Methods Summary |
---|
public void | newCharacter(CharacterEvent ce)
try {
scoreLock.lock();
charLock.lock();
// Previous character not typed correctly - 1 point penalty
if (ce.source == generator) {
if (char2type != -1) {
score--;
setScore();
}
char2type = ce.character;
}
// If character is extraneous - 1 point penalty
// If character does not match - 1 point penalty
else {
if (char2type != ce.character) {
score--;
} else {
score++;
char2type = -1;
}
setScore();
}
} finally {
scoreLock.unlock();
charLock.unlock();
}
|
public void | resetGenerator(CharacterSource newGenerator)
try {
adminLock.lock();
if (generator != null)
generator.removeCharacterListener(this);
generator = newGenerator;
if (generator != null)
generator.addCharacterListener(this);
} finally {
adminLock.unlock();
}
|
public void | resetScore()
try {
charLock.lock();
scoreLock.lock();
score = 0;
char2type = -1;
setScore();
} finally {
charLock.unlock();
scoreLock.unlock();
}
|
public void | resetTypist(CharacterSource newTypist)
try {
adminLock.lock();
if (typist != null)
typist.removeCharacterListener(this);
typist = newTypist;
if (typist != null)
typist.addCharacterListener(this);
} finally {
adminLock.unlock();
}
|
private void | setScore()
// This method will be explained later in chapter 7
SwingUtilities.invokeLater(new Runnable() {
public void run() {
setText(Integer.toString(score));
}
});
|