mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[vcs-log] allow to open new log tab with specific filters set
This commit is contained in:
+1
-4
@@ -92,11 +92,8 @@ public class VcsLogFileHistoryProviderImpl implements VcsLogFileHistoryProvider
|
||||
});
|
||||
boolean firstTime = ui == null;
|
||||
if (firstTime) {
|
||||
ui = VcsProjectLog.getInstance(project).getTabsManager().openAnotherLogTab(logManager, true);
|
||||
VcsLogFilterCollection filters = createFilters(path, hash, root);
|
||||
for (VcsLogFilter f : filters.getFilters()) {
|
||||
ui.getFilterUi().setFilter(f);
|
||||
}
|
||||
ui = VcsProjectLog.getInstance(project).getTabsManager().openAnotherLogTab(logManager, filters);
|
||||
}
|
||||
consumer.accept(ui, firstTime);
|
||||
}
|
||||
|
||||
@@ -14,16 +14,19 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.Consumer;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.MultiMap;
|
||||
import com.intellij.vcs.log.VcsLogFilterCollection;
|
||||
import com.intellij.vcs.log.VcsLogProvider;
|
||||
import com.intellij.vcs.log.VcsLogRefresher;
|
||||
import com.intellij.vcs.log.data.VcsLogData;
|
||||
import com.intellij.vcs.log.data.VcsLogStorage;
|
||||
import com.intellij.vcs.log.data.index.VcsLogModifiableIndex;
|
||||
import com.intellij.vcs.log.graph.PermanentGraph;
|
||||
import com.intellij.vcs.log.ui.AbstractVcsLogUi;
|
||||
import com.intellij.vcs.log.ui.VcsLogColorManagerImpl;
|
||||
import com.intellij.vcs.log.ui.VcsLogUiImpl;
|
||||
import com.intellij.vcs.log.visible.VcsLogFiltererImpl;
|
||||
import com.intellij.vcs.log.visible.VisiblePackRefresherImpl;
|
||||
import com.intellij.vcs.log.visible.filters.VcsLogFilterObject;
|
||||
import org.jetbrains.annotations.CalledInAny;
|
||||
import org.jetbrains.annotations.CalledInAwt;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -100,12 +103,12 @@ public class VcsLogManager implements Disposable {
|
||||
|
||||
@NotNull
|
||||
public VcsLogUiImpl createLogUi(@NotNull String logId, boolean isToolWindowTab) {
|
||||
return createLogUi(getMainLogUiFactory(logId), isToolWindowTab);
|
||||
return createLogUi(getMainLogUiFactory(logId, null), isToolWindowTab);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public VcsLogUiFactory<? extends VcsLogUiImpl> getMainLogUiFactory(@NotNull String logId) {
|
||||
return new MainVcsLogUiFactory(logId);
|
||||
public VcsLogUiFactory<? extends VcsLogUiImpl> getMainLogUiFactory(@NotNull String logId, @Nullable VcsLogFilterCollection filters) {
|
||||
return new MainVcsLogUiFactory(logId, filters);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -225,22 +228,26 @@ public class VcsLogManager implements Disposable {
|
||||
}
|
||||
|
||||
private class MainVcsLogUiFactory implements VcsLogUiFactory<VcsLogUiImpl> {
|
||||
private final String myLogId;
|
||||
@NotNull private final String myLogId;
|
||||
@Nullable private final VcsLogFilterCollection myFilters;
|
||||
|
||||
MainVcsLogUiFactory(@NotNull String logId) {
|
||||
MainVcsLogUiFactory(@NotNull String logId, @Nullable VcsLogFilterCollection filters) {
|
||||
myLogId = logId;
|
||||
myFilters = filters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VcsLogUiImpl createLogUi(@NotNull Project project,
|
||||
@NotNull VcsLogData logData) {
|
||||
MainVcsLogUiProperties properties = myUiProperties.createProperties(myLogId);
|
||||
VisiblePackRefresherImpl refresher =
|
||||
new VisiblePackRefresherImpl(project, logData, properties.get(MainVcsLogUiProperties.BEK_SORT_TYPE),
|
||||
new VcsLogFiltererImpl(logData.getLogProviders(), logData.getStorage(),
|
||||
logData.getTopCommitsCache(),
|
||||
logData.getCommitDetailsGetter(), logData.getIndex()), myLogId);
|
||||
return new VcsLogUiImpl(myLogId, logData, myColorManager, properties, refresher);
|
||||
VcsLogFiltererImpl vcsLogFilterer = new VcsLogFiltererImpl(logData.getLogProviders(), logData.getStorage(),
|
||||
logData.getTopCommitsCache(),
|
||||
logData.getCommitDetailsGetter(), logData.getIndex());
|
||||
PermanentGraph.SortType initialSortType = properties.get(MainVcsLogUiProperties.BEK_SORT_TYPE);
|
||||
VcsLogFilterCollection initialFilters = myFilters == null ? VcsLogFilterObject.collection() : myFilters;
|
||||
VisiblePackRefresherImpl refresher = new VisiblePackRefresherImpl(project, logData, initialFilters, initialSortType,
|
||||
vcsLogFilterer, myLogId);
|
||||
return new VcsLogUiImpl(myLogId, logData, myColorManager, properties, refresher, myFilters);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.intellij.vcs.log.ui.VcsLogUiImpl;
|
||||
import com.intellij.vcs.log.visible.filters.VcsLogFiltersKt;
|
||||
import org.jetbrains.annotations.CalledInAwt;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -45,7 +46,7 @@ public class VcsLogTabsManager {
|
||||
private void createLogTabs(@NotNull VcsLogManager manager) {
|
||||
List<String> tabIds = myUiProperties.getTabs();
|
||||
for (String tabId : tabIds) {
|
||||
openLogTab(manager, tabId, false, false);
|
||||
openLogTab(manager, tabId, false, null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,19 +57,21 @@ public class VcsLogTabsManager {
|
||||
}
|
||||
|
||||
public void openAnotherLogTab(@NotNull VcsLogManager manager) {
|
||||
openAnotherLogTab(manager, false);
|
||||
openAnotherLogTab(manager, null);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public VcsLogUiImpl openAnotherLogTab(@NotNull VcsLogManager manager, boolean resetFilters) {
|
||||
return openLogTab(manager, VcsLogContentUtil.generateTabId(myProject), true, resetFilters);
|
||||
public VcsLogUiImpl openAnotherLogTab(@NotNull VcsLogManager manager, @Nullable VcsLogFilterCollection filters) {
|
||||
return openLogTab(manager, VcsLogContentUtil.generateTabId(myProject), true, filters);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private VcsLogUiImpl openLogTab(@NotNull VcsLogManager manager, @NotNull String tabId, boolean focus, boolean resetFilters) {
|
||||
if (resetFilters) myUiProperties.resetState(tabId);
|
||||
private VcsLogUiImpl openLogTab(@NotNull VcsLogManager manager, @NotNull String tabId, boolean focus,
|
||||
@Nullable VcsLogFilterCollection filters) {
|
||||
if (filters != null) myUiProperties.resetState(tabId);
|
||||
|
||||
VcsLogManager.VcsLogUiFactory<? extends VcsLogUiImpl> factory = new PersistentVcsLogUiFactory(manager.getMainLogUiFactory(tabId));
|
||||
VcsLogManager.VcsLogUiFactory<? extends VcsLogUiImpl> factory =
|
||||
new PersistentVcsLogUiFactory(manager.getMainLogUiFactory(tabId, filters));
|
||||
VcsLogUiImpl ui = VcsLogContentUtil.openLogTab(myProject, manager, VcsLogContentProvider.TAB_NAME, tabId, factory, focus);
|
||||
updateTabName(ui);
|
||||
ui.addFilterListener(() -> updateTabName(ui));
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.intellij.vcs.log.ui.table.GraphTableModel;
|
||||
import com.intellij.vcs.log.ui.table.VcsLogGraphTable;
|
||||
import com.intellij.vcs.log.util.VcsLogUiUtil;
|
||||
import com.intellij.vcs.log.visible.VisiblePackRefresher;
|
||||
import com.intellij.vcs.log.visible.filters.VcsLogFilterObject;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -47,10 +48,11 @@ public class VcsLogUiImpl extends AbstractVcsLogUi {
|
||||
@NotNull VcsLogData logData,
|
||||
@NotNull VcsLogColorManager manager,
|
||||
@NotNull MainVcsLogUiProperties uiProperties,
|
||||
@NotNull VisiblePackRefresher refresher) {
|
||||
@NotNull VisiblePackRefresher refresher,
|
||||
@Nullable VcsLogFilterCollection filters) {
|
||||
super(id, logData, manager, refresher);
|
||||
myUiProperties = uiProperties;
|
||||
myMainFrame = new MainFrame(logData, this, uiProperties, myLog, myVisiblePack);
|
||||
myMainFrame = new MainFrame(logData, this, uiProperties, myLog, myVisiblePack, filters);
|
||||
|
||||
for (VcsLogHighlighterFactory factory : LOG_HIGHLIGHTER_FACTORY_EP.getExtensions(myProject)) {
|
||||
getTable().addHighlighter(factory.createHighlighter(logData, this));
|
||||
@@ -130,7 +132,7 @@ public class VcsLogUiImpl extends AbstractVcsLogUi {
|
||||
runnables.add(new NamedRunnable("View in New Tab") {
|
||||
@Override
|
||||
public void run() {
|
||||
VcsLogUiImpl ui = projectLog.getTabsManager().openAnotherLogTab(logManager, true);
|
||||
VcsLogUiImpl ui = projectLog.getTabsManager().openAnotherLogTab(logManager, VcsLogFilterObject.collection());
|
||||
ui.invokeOnChange(() -> ui.jumpTo(commitId, rowGetter, SettableFuture.create()),
|
||||
pack -> pack.getFilters().isEmpty());
|
||||
}
|
||||
|
||||
@@ -1,24 +1,11 @@
|
||||
/*
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.vcs.log.ui.filter;
|
||||
|
||||
import com.intellij.openapi.util.Computable;
|
||||
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 org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -27,17 +14,29 @@ import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
abstract class FilterModel<Filter extends VcsLogFilter> {
|
||||
@NotNull private final String myName;
|
||||
@NotNull private final VcsLogFilterCollection.FilterKey<? extends Filter> myFilterKey;
|
||||
@NotNull protected final MainVcsLogUiProperties myUiProperties;
|
||||
@NotNull private final Computable<? extends VcsLogDataPack> myDataPackProvider;
|
||||
@NotNull private final Collection<Runnable> mySetFilterListeners = ContainerUtil.newArrayList();
|
||||
|
||||
@Nullable private Filter myFilter;
|
||||
|
||||
FilterModel(@NotNull String name, @NotNull Computable<? extends VcsLogDataPack> provider, @NotNull MainVcsLogUiProperties uiProperties) {
|
||||
myName = name;
|
||||
FilterModel(@NotNull VcsLogFilterCollection.FilterKey<? extends Filter> filterKey,
|
||||
@NotNull Computable<? extends VcsLogDataPack> provider,
|
||||
@NotNull MainVcsLogUiProperties uiProperties,
|
||||
@Nullable VcsLogFilterCollection filters) {
|
||||
myFilterKey = filterKey;
|
||||
myUiProperties = uiProperties;
|
||||
myDataPackProvider = provider;
|
||||
|
||||
if (filters != null) {
|
||||
saveFilter(getFilterFromCollection(filters));
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
protected Filter getFilterFromCollection(@NotNull VcsLogFilterCollection filters) {
|
||||
return filters.get(myFilterKey);
|
||||
}
|
||||
|
||||
void setFilter(@Nullable Filter filter) {
|
||||
@@ -49,7 +48,7 @@ abstract class FilterModel<Filter extends VcsLogFilter> {
|
||||
}
|
||||
|
||||
protected void saveFilter(@Nullable Filter filter) {
|
||||
myUiProperties.saveFilterValues(myName, filter == null ? null : getFilterValues(filter));
|
||||
myUiProperties.saveFilterValues(myFilterKey.getName(), filter == null ? null : getFilterValues(filter));
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -68,7 +67,7 @@ abstract class FilterModel<Filter extends VcsLogFilter> {
|
||||
|
||||
@Nullable
|
||||
protected Filter getLastFilter() {
|
||||
List<String> values = myUiProperties.getFilterValues(myName);
|
||||
List<String> values = myUiProperties.getFilterValues(myFilterKey.getName());
|
||||
if (values != null) {
|
||||
return createFilter(values);
|
||||
}
|
||||
|
||||
+32
-17
@@ -61,18 +61,19 @@ public class VcsLogClassicFilterUi implements VcsLogFilterUi {
|
||||
public VcsLogClassicFilterUi(@NotNull VcsLogUiImpl ui,
|
||||
@NotNull VcsLogData logData,
|
||||
@NotNull MainVcsLogUiProperties uiProperties,
|
||||
@NotNull VcsLogDataPack initialDataPack) {
|
||||
@NotNull VcsLogDataPack initialDataPack,
|
||||
@Nullable VcsLogFilterCollection filters) {
|
||||
myUi = ui;
|
||||
myLogData = logData;
|
||||
myUiProperties = uiProperties;
|
||||
myDataPack = initialDataPack;
|
||||
|
||||
NotNullComputable<VcsLogDataPack> dataPackGetter = () -> myDataPack;
|
||||
myBranchFilterModel = new BranchFilterModel(dataPackGetter, myUiProperties);
|
||||
myUserFilterModel = new UserFilterModel(dataPackGetter, myUiProperties);
|
||||
myDateFilterModel = new DateFilterModel(dataPackGetter, myUiProperties);
|
||||
myStructureFilterModel = new FileFilterModel(dataPackGetter, myLogData.getLogProviders().keySet(), myUiProperties);
|
||||
myTextFilterModel = new TextFilterModel(dataPackGetter, myUiProperties);
|
||||
myBranchFilterModel = new BranchFilterModel(dataPackGetter, myUiProperties, filters);
|
||||
myUserFilterModel = new UserFilterModel(dataPackGetter, myUiProperties, filters);
|
||||
myDateFilterModel = new DateFilterModel(dataPackGetter, myUiProperties, filters);
|
||||
myStructureFilterModel = new FileFilterModel(dataPackGetter, myLogData.getLogProviders().keySet(), myUiProperties, filters);
|
||||
myTextFilterModel = new TextFilterModel(dataPackGetter, myUiProperties, filters);
|
||||
|
||||
updateUiOnFilterChange();
|
||||
myUi.applyFiltersAndUpdateUi(getFilters());
|
||||
@@ -195,8 +196,9 @@ public class VcsLogClassicFilterUi implements VcsLogFilterUi {
|
||||
@Nullable
|
||||
private Collection<VirtualFile> myVisibleRoots;
|
||||
|
||||
BranchFilterModel(@NotNull Computable<? extends VcsLogDataPack> provider, @NotNull MainVcsLogUiProperties properties) {
|
||||
super("branch", provider, properties);
|
||||
BranchFilterModel(@NotNull Computable<? extends VcsLogDataPack> provider, @NotNull MainVcsLogUiProperties properties,
|
||||
@Nullable VcsLogFilterCollection filters) {
|
||||
super(VcsLogFilterCollection.BRANCH_FILTER, provider, properties, filters);
|
||||
}
|
||||
|
||||
public void onStructureFilterChanged(@NotNull Set<VirtualFile> roots, @Nullable VcsLogFileFilter filter) {
|
||||
@@ -230,8 +232,9 @@ public class VcsLogClassicFilterUi implements VcsLogFilterUi {
|
||||
private static class TextFilterModel extends FilterModel<VcsLogTextFilter> {
|
||||
@Nullable private String myText;
|
||||
|
||||
TextFilterModel(NotNullComputable<? extends VcsLogDataPack> dataPackProvider, @NotNull MainVcsLogUiProperties properties) {
|
||||
super("text", dataPackProvider, properties);
|
||||
TextFilterModel(@NotNull NotNullComputable<? extends VcsLogDataPack> dataPackProvider, @NotNull MainVcsLogUiProperties properties,
|
||||
@Nullable VcsLogFilterCollection filters) {
|
||||
super(VcsLogFilterCollection.TEXT_FILTER, dataPackProvider, properties, filters);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -284,13 +287,23 @@ public class VcsLogClassicFilterUi implements VcsLogFilterUi {
|
||||
@NotNull private static final String FILE = "file:";
|
||||
@NotNull private final Set<VirtualFile> myRoots;
|
||||
|
||||
FileFilterModel(NotNullComputable<VcsLogDataPack> dataPackGetter,
|
||||
FileFilterModel(@NotNull NotNullComputable<VcsLogDataPack> dataPackGetter,
|
||||
@NotNull Set<VirtualFile> roots,
|
||||
MainVcsLogUiProperties uiProperties) {
|
||||
super("file", dataPackGetter, uiProperties);
|
||||
@NotNull MainVcsLogUiProperties uiProperties,
|
||||
@Nullable VcsLogFilterCollection filters) {
|
||||
super(VcsLogFileFilter.FILE_FILTER, dataPackGetter, uiProperties, filters);
|
||||
myRoots = roots;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
protected VcsLogFileFilter getFilterFromCollection(@NotNull VcsLogFilterCollection filters) {
|
||||
VcsLogRootFilter rootFilter = filters.get(VcsLogFilterCollection.ROOT_FILTER);
|
||||
VcsLogStructureFilter structureFilter = filters.get(VcsLogFilterCollection.STRUCTURE_FILTER);
|
||||
if (rootFilter == null && structureFilter == null) return null;
|
||||
return new VcsLogFileFilter(structureFilter, rootFilter);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void saveFilter(@Nullable VcsLogFileFilter filter) {
|
||||
if (filter == null) {
|
||||
@@ -377,8 +390,9 @@ public class VcsLogClassicFilterUi implements VcsLogFilterUi {
|
||||
}
|
||||
|
||||
private static class DateFilterModel extends FilterModel<VcsLogDateFilter> {
|
||||
DateFilterModel(NotNullComputable<? extends VcsLogDataPack> dataPackGetter, MainVcsLogUiProperties uiProperties) {
|
||||
super("date", dataPackGetter, uiProperties);
|
||||
DateFilterModel(@NotNull NotNullComputable<? extends VcsLogDataPack> dataPackGetter, @NotNull MainVcsLogUiProperties uiProperties,
|
||||
@Nullable VcsLogFilterCollection filters) {
|
||||
super(VcsLogFilterCollection.DATE_FILTER, dataPackGetter, uiProperties, filters);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -411,8 +425,9 @@ public class VcsLogClassicFilterUi implements VcsLogFilterUi {
|
||||
}
|
||||
|
||||
private class UserFilterModel extends FilterModel<VcsLogUserFilter> {
|
||||
UserFilterModel(NotNullComputable<? extends VcsLogDataPack> dataPackGetter, MainVcsLogUiProperties uiProperties) {
|
||||
super("user", dataPackGetter, uiProperties);
|
||||
UserFilterModel(@NotNull NotNullComputable<? extends VcsLogDataPack> dataPackGetter, @NotNull MainVcsLogUiProperties uiProperties,
|
||||
@Nullable VcsLogFilterCollection filters) {
|
||||
super(VcsLogFilterCollection.USER_FILTER, dataPackGetter, uiProperties, filters);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.vcs.log.ui.frame;
|
||||
|
||||
import com.google.common.primitives.Ints;
|
||||
@@ -23,10 +24,7 @@ import com.intellij.util.ui.JBUI;
|
||||
import com.intellij.util.ui.StatusText;
|
||||
import com.intellij.util.ui.table.ComponentsListFocusTraversalPolicy;
|
||||
import com.intellij.vcs.CommittedChangeListForRevision;
|
||||
import com.intellij.vcs.log.CommitId;
|
||||
import com.intellij.vcs.log.VcsFullCommitDetails;
|
||||
import com.intellij.vcs.log.VcsLog;
|
||||
import com.intellij.vcs.log.VcsLogFilterUi;
|
||||
import com.intellij.vcs.log.*;
|
||||
import com.intellij.vcs.log.data.VcsLogData;
|
||||
import com.intellij.vcs.log.impl.CommonUiProperties;
|
||||
import com.intellij.vcs.log.impl.MainVcsLogUiProperties;
|
||||
@@ -85,14 +83,15 @@ public class MainFrame extends JPanel implements DataProvider, Disposable {
|
||||
@NotNull VcsLogUiImpl ui,
|
||||
@NotNull MainVcsLogUiProperties uiProperties,
|
||||
@NotNull VcsLog log,
|
||||
@NotNull VisiblePack initialDataPack) {
|
||||
@NotNull VisiblePack initialDataPack,
|
||||
@Nullable VcsLogFilterCollection filters) {
|
||||
// collect info
|
||||
myLogData = logData;
|
||||
myUi = ui;
|
||||
myLog = log;
|
||||
myUiProperties = uiProperties;
|
||||
|
||||
myFilterUi = new VcsLogClassicFilterUi(ui, logData, myUiProperties, initialDataPack);
|
||||
myFilterUi = new VcsLogClassicFilterUi(ui, logData, myUiProperties, initialDataPack, filters);
|
||||
|
||||
// initialize components
|
||||
myGraphTable = new MyVcsLogGraphTable(ui, logData, initialDataPack);
|
||||
|
||||
+2
-1
@@ -9,6 +9,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class VcsLogFileFilter implements VcsLogFilter {
|
||||
public static final VcsLogFilterCollection.FilterKey<VcsLogFileFilter> FILE_FILTER = VcsLogFilterCollection.FilterKey.create("file");
|
||||
@Nullable private final VcsLogStructureFilter myStructureFilter;
|
||||
@Nullable private final VcsLogRootFilter myRootFilter;
|
||||
|
||||
@@ -30,7 +31,7 @@ public class VcsLogFileFilter implements VcsLogFilter {
|
||||
@NotNull
|
||||
@Override
|
||||
public VcsLogFilterCollection.FilterKey<?> getKey() {
|
||||
return VcsLogFilterCollection.FilterKey.create("file");
|
||||
return FILE_FILTER;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
Reference in New Issue
Block a user