r3765 - trunk/lima-swing/src/main/java/org/chorem/lima/ui/accountsreports
Author: dcosse Date: 2014-03-17 10:21:37 +0100 (Mon, 17 Mar 2014) New Revision: 3765 Url: http://forge.chorem.org/projects/lima/repository/revisions/3765 Log: fixes #993 refactoring Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/accountsreports/AccountComboBox.java Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/accountsreports/AccountComboBox.java =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/accountsreports/AccountComboBox.java 2014-03-17 08:36:38 UTC (rev 3764) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/accountsreports/AccountComboBox.java 2014-03-17 09:21:37 UTC (rev 3765) @@ -53,8 +53,6 @@ protected Timer timer; - protected AtomicBoolean scheduledTask = new AtomicBoolean(false); - public AccountComboBox() { AutoCompleteDecorator.decorate(this, AccountToString.getInstance()); getEditor().getEditorComponent().addKeyListener(this); @@ -84,36 +82,37 @@ @Override public void keyReleased(KeyEvent e) { - if (scheduledTask.get() == false) { - Timer timer = getTimer(); + Timer timer = getTimer(); + if(timer != null) { + // if task were scheduled, they are canceled. + timer.cancel(); + resetTimer(); + } else { + // a new task is scheduled. + timer = initTimer(); TimerTaskKeyEvent task = new TimerTaskKeyEvent(); task.setE(e); - timer.schedule(task, 2000); - scheduledTask.set(true); } } @Override public void keyTyped(KeyEvent e) { - Timer timer = getTimer(); - if (scheduledTask.get() == true){ - timer.cancel(); - scheduledTask.set(false); - resetTimer(); - } - } - protected void resetTimer(){ + } + + + synchronized void resetTimer(){ this.timer = null; } - protected Timer getTimer() { - if (timer == null) { - timer = new Timer(); - } + synchronized Timer initTimer() { + timer = new Timer(); return this.timer; } + synchronized Timer getTimer(){ + return this.timer; + } public class TimerTaskKeyEvent extends TimerTask { @@ -131,7 +130,8 @@ if (e.getKeyChar() == KeyEvent.VK_ENTER) { firePopupMenuCanceled(); } - scheduledTask.compareAndSet(true, false); + // the timer is closed. + resetTimer(); } public void setE(KeyEvent e) {
participants (1)
-
dcosse@users.chorem.org