Commit 70b0e51c authored by Julia Beliaeva's avatar Julia Beliaeva
Browse files

[vcs-log] add usages triggers for setting filters

parent 3f67db66
Branches unavailable Tags unavailable
Showing with 32 additions and 0 deletions
+32 -0
......@@ -2,17 +2,21 @@
package com.intellij.vcs.log.ui.filter;
import com.intellij.openapi.util.Computable;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.vcs.log.VcsLogDataPack;
import com.intellij.vcs.log.VcsLogFilter;
import com.intellij.vcs.log.VcsLogFilterCollection;
import com.intellij.vcs.log.impl.MainVcsLogUiProperties;
import com.intellij.vcs.log.statistics.VcsLogUsageTriggerCollector;
import com.intellij.vcs.log.visible.filters.FilterPair;
import org.apache.commons.lang.ObjectUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Collection;
import java.util.List;
import java.util.function.Function;
abstract class FilterModel<Filter> {
@NotNull protected final MainVcsLogUiProperties myUiProperties;
......@@ -61,6 +65,10 @@ abstract class FilterModel<Filter> {
mySetFilterListeners.add(runnable);
}
protected static void triggerFilterSet(@NotNull String name) {
VcsLogUsageTriggerCollector.triggerUsage(StringUtil.capitalize(name) + "FilterSet", false);
}
public static abstract class SingleFilterModel<Filter extends VcsLogFilter> extends FilterModel<Filter> {
@NotNull private final VcsLogFilterCollection.FilterKey<? extends Filter> myFilterKey;
......@@ -76,6 +84,13 @@ abstract class FilterModel<Filter> {
}
}
@Override
void setFilter(@Nullable Filter filter) {
super.setFilter(filter);
if (filter != null) triggerFilterSet(myFilterKey.getName());
}
@Nullable
protected abstract Filter createFilter(@NotNull List<String> values);
......@@ -120,6 +135,23 @@ abstract class FilterModel<Filter> {
}
}
@Override
void setFilter(@Nullable FilterPair<Filter1, Filter2> filter) {
triggerFilterSet(filter, FilterPair::getFilter1, myFilterKey1.getName());
triggerFilterSet(filter, FilterPair::getFilter2, myFilterKey2.getName());
super.setFilter(filter);
}
private <F> void triggerFilterSet(@Nullable FilterPair<Filter1, Filter2> filter,
@NotNull Function<FilterPair<Filter1, Filter2>, F> getter, @NotNull String name) {
F oldFilter = myFilter == null ? null : getter.apply(myFilter);
F newFilter = filter == null ? null : getter.apply(filter);
if (!ObjectUtils.equals(oldFilter, newFilter) && newFilter != null) {
triggerFilterSet(name);
}
}
@Override
protected void saveFilterToProperties(@Nullable FilterPair<Filter1, Filter2> filter) {
if (filter == null || filter.getFilter1() == null) {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment