From 87a3c1ac232f68dee9acf4dc756a3b0cc7a5dfc5 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Mon, 3 Dec 2012 15:04:10 +0800 Subject: [PATCH] minor performance tweak. --- .../src/org/compiere/model/GridTab.java | 2 +- .../src/org/compiere/model/GridTable.java | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/org.adempiere.base/src/org/compiere/model/GridTab.java b/org.adempiere.base/src/org/compiere/model/GridTab.java index 432583695d..7f3ee10bdc 100644 --- a/org.adempiere.base/src/org/compiere/model/GridTab.java +++ b/org.adempiere.base/src/org/compiere/model/GridTab.java @@ -2604,7 +2604,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable { try { - Thread.sleep(100); // .1 sec + m_mTable.waitLoading(100); // .1 sec } catch (Exception e) {} count = m_mTable.getRowCount(); diff --git a/org.adempiere.base/src/org/compiere/model/GridTable.java b/org.adempiere.base/src/org/compiere/model/GridTable.java index 0b488c09c5..ecb4e4909e 100644 --- a/org.adempiere.base/src/org/compiere/model/GridTable.java +++ b/org.adempiere.base/src/org/compiere/model/GridTable.java @@ -35,8 +35,10 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Properties; +import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; import java.util.logging.Level; import javax.swing.event.TableModelListener; @@ -689,6 +691,23 @@ public class GridTable extends AbstractTableModel return false; } // isLoading + /** + * wait for the loading of data + * @param timeout timeout in milisecond. pass 0 or negative value for infinite wait + * @throws InterruptedException + * @throws ExecutionException + * @throws TimeoutException + */ + public void waitLoading(long timeout) throws InterruptedException, ExecutionException, TimeoutException + { + if (m_loaderFuture != null && !m_loaderFuture.isDone()) { + if (timeout > 0) + m_loaderFuture.get(timeout, TimeUnit.MILLISECONDS); + else + m_loaderFuture.get(); + } + } + /** * Is it open? * @return true if opened