From 82a93b820171333f53f8575470db3d3b2bebf18d Mon Sep 17 00:00:00 2001 From: Kirill Likhodedov Date: Sun, 27 Oct 2013 16:41:27 +0400 Subject: [PATCH] [log] Disable loading more details for filtering * It looks like Git is able to filter faster on its own, than return us details. * It is one step less, therefore if there are not many details, user will wait less time. * It consumes less memory, since we don't expand the cache by extra n commits. The code which handles "load more" is kept in the VcsLogDataHolder by now: maybe this decision will be changed or somehow modified. --- .../intellij/vcs/log/data/VcsLogFilterer.java | 7 ++--- .../vcs/log/ui/tables/NoGraphTableModel.java | 26 +++++-------------- 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogFilterer.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogFilterer.java index 715eb4f05410..d0a2b5103b22 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogFilterer.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogFilterer.java @@ -55,7 +55,7 @@ public class VcsLogFilterer { AbstractVcsLogTableModel model; if (!detailsFilters.isEmpty()) { List filteredCommits = filterByDetails(graphModel, detailsFilters); - model = new NoGraphTableModel(myLogDataHolder, myUI, filteredCommits, myLogDataHolder.getDataPack().getRefsModel(), true); + model = new NoGraphTableModel(myUI, filteredCommits, myLogDataHolder.getDataPack().getRefsModel(), true); } else { model = new GraphTableModel(myLogDataHolder, myUI); @@ -69,12 +69,13 @@ public class VcsLogFilterer { } } - public void requestVcs(@NotNull Collection filters) { + public void requestVcs(@NotNull Collection filters, final Runnable onSuccess) { myLogDataHolder.getFilteredDetailsFromTheVcs(filters, new Consumer>() { @Override public void consume(List details) { - myUI.setModel(new NoGraphTableModel(myLogDataHolder, myUI, details, myLogDataHolder.getDataPack().getRefsModel(), false)); + myUI.setModel(new NoGraphTableModel(myUI, details, myLogDataHolder.getDataPack().getRefsModel(), false)); myUI.updateUI(); + onSuccess.run(); } }); } diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/tables/NoGraphTableModel.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/tables/NoGraphTableModel.java index 87731c93831c..1d4c10fac244 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/tables/NoGraphTableModel.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/tables/NoGraphTableModel.java @@ -8,7 +8,6 @@ import com.intellij.vcs.log.VcsFullCommitDetails; import com.intellij.vcs.log.VcsRef; import com.intellij.vcs.log.VcsShortCommitDetails; import com.intellij.vcs.log.data.RefsModel; -import com.intellij.vcs.log.data.VcsLogDataHolder; import com.intellij.vcs.log.graph.render.CommitCell; import com.intellij.vcs.log.ui.VcsLogUI; import org.jetbrains.annotations.NotNull; @@ -20,15 +19,13 @@ public class NoGraphTableModel extends AbstractVcsLogTableModel { private static final Logger LOG = Logger.getInstance(NoGraphTableModel.class); - @NotNull private final VcsLogDataHolder myLogDataHolder; @NotNull private final VcsLogUI myUi; @NotNull private final List myCommits; @NotNull private final RefsModel myRefsModel; - private final boolean myAllowLoadingMoreRequest; + private boolean myAllowLoadingMoreRequest; - public NoGraphTableModel(@NotNull VcsLogDataHolder logDataHolder, @NotNull VcsLogUI UI, - @NotNull List commits, @NotNull RefsModel refsModel, boolean allowLoadingMoreRequest) { - myLogDataHolder = logDataHolder; + public NoGraphTableModel(@NotNull VcsLogUI UI, @NotNull List commits, @NotNull RefsModel refsModel, + boolean allowLoadingMoreRequest) { myUi = UI; myCommits = commits; myRefsModel = refsModel; @@ -56,23 +53,14 @@ public class NoGraphTableModel extends AbstractVcsLogTableModel { return; } - Runnable success = new Runnable() { + myUi.getTable().setPaintBusy(true); + myUi.getFilterer().requestVcs(myUi.collectFilters(), new Runnable() { @Override public void run() { - myUi.applyFiltersAndUpdateUi(); myUi.getTable().setPaintBusy(false); } - }; - VcsLogDataHolder.LoadingState state = myLogDataHolder.loadMoreDetails(success); - if (state == VcsLogDataHolder.LoadingState.LOADING) { - myUi.getTable().setPaintBusy(true); - } - else if (state == VcsLogDataHolder.LoadingState.LIMIT_REACHED) { - myUi.getFilterer().requestVcs(myUi.collectFilters()); - } - else { - myUi.getTable().setPaintBusy(false); - } + }); + myAllowLoadingMoreRequest = false; // Don't send the request to VCS twice } @Nullable