Support preloading keywords for improved performance

This commit is contained in:
drdev
2015-09-07 21:13:12 +00:00
parent b707d03c1e
commit 1ce62b1bb8
4 changed files with 55 additions and 3 deletions

View File

@@ -9,11 +9,14 @@ import com.google.common.base.Predicates;
import forge.FThreads;
import forge.Forge;
import forge.game.keyword.Keyword;
import forge.item.InventoryItem;
import forge.itemmanager.AdvancedSearch;
import forge.itemmanager.ItemManager;
import forge.itemmanager.AdvancedSearch.FilterOption;
import forge.menu.FTooltip;
import forge.screens.FScreen;
import forge.screens.LoadingOverlay;
import forge.toolbox.FContainer;
import forge.toolbox.FDisplayObject;
import forge.toolbox.FEvent;
@@ -338,6 +341,13 @@ public class AdvancedSearchFilter<T extends InventoryItem> extends ItemFilter<T>
else {
btnFilter.setText(emptyFilterText);
}
if (filter.getOption() == FilterOption.CARD_KEYWORDS) {
//the first time the user selects keywords, preload keywords for all cards
Runnable preloadTask = Keyword.getPreloadTask();
if (preloadTask != null) {
LoadingOverlay.runBackgroundTask("Loading keywords...", preloadTask);
}
}
}
});
}

View File

@@ -38,6 +38,23 @@ public class LoadingOverlay extends FOverlay {
});
}
public static void runBackgroundTask(String caption0, final Runnable task) {
final LoadingOverlay loader = new LoadingOverlay(caption0);
loader.show();
FThreads.invokeInBackgroundThread(new Runnable() {
@Override
public void run() {
task.run();
FThreads.invokeInEdtLater(new Runnable() {
@Override
public void run() {
loader.hide();
}
});
}
});
}
private String caption;
public LoadingOverlay(String caption0) {