|
|
@@ -10,7 +10,21 @@ import java.util.TimerTask;
|
|
|
import javax.swing.SwingUtilities;
|
|
|
|
|
|
/**
|
|
|
- *
|
|
|
+ * Użycie:
|
|
|
+ * <pre>
|
|
|
+ * {@code LazyInvoker action = new LazyInvoker(true, 1000) {
|
|
|
+ * public void run() {
|
|
|
+ * // action ...
|
|
|
+ * }
|
|
|
+ * };}</pre>
|
|
|
+ * Następnie np w "onKeyPress" kolejkujemy wykonanie:
|
|
|
+ * <pre>
|
|
|
+ * {@code action.runLazy() }</pre>
|
|
|
+ *
|
|
|
+ * Mimo, że {@link #runLazy} może być wywoływane wielokrotnie w odstępach
|
|
|
+ * {@code t<1000}, to {@link #run} uruchomi się tylko raz, {@code 1000}ms
|
|
|
+ * po ostatnim wywołaniu {@link #runLazy}.
|
|
|
+ *
|
|
|
* @author ranides
|
|
|
*/
|
|
|
public abstract class LazyInvoker implements Runnable {
|
|
|
@@ -28,18 +42,7 @@ public abstract class LazyInvoker implements Runnable {
|
|
|
if (task != null) {
|
|
|
task.cancel();
|
|
|
}
|
|
|
- if(awt) {
|
|
|
- task = TimeUtils.runAfter(delay, new Runnable(){
|
|
|
-
|
|
|
- @Override
|
|
|
- public void run() {
|
|
|
- SwingUtilities.invokeLater(LazyInvoker.this);
|
|
|
- }
|
|
|
-
|
|
|
- });
|
|
|
- } else {
|
|
|
- task = TimeUtils.runAfter(delay, this);
|
|
|
- }
|
|
|
+ task = awt ? TimeUtils.runAfterUI(delay, this) : TimeUtils.runAfter(delay, this);
|
|
|
}
|
|
|
|
|
|
}
|