diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/impl/PostponableLogRefresher.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/impl/PostponableLogRefresher.java index d532498db80c..90689fe6f8ae 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/impl/PostponableLogRefresher.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/impl/PostponableLogRefresher.java @@ -44,8 +44,8 @@ public class PostponableLogRefresher implements VcsLogRefresher { } @NotNull - public Disposable addLogWindow(@NotNull VisiblePackRefresher refresher) { - return addLogWindow(new VcsLogWindow(refresher)); + public Disposable addLogWindow(@NotNull String id, @NotNull VisiblePackRefresher refresher) { + return addLogWindow(new VcsLogWindow(id, refresher)); } public static boolean keepUpToDate() { @@ -109,9 +109,11 @@ public class PostponableLogRefresher implements VcsLogRefresher { } public static class VcsLogWindow { + @NotNull private final String myId; @NotNull private final VisiblePackRefresher myRefresher; - public VcsLogWindow(@NotNull VisiblePackRefresher refresher) { + public VcsLogWindow(@NotNull String id, @NotNull VisiblePackRefresher refresher) { + myId = id; myRefresher = refresher; } @@ -124,9 +126,14 @@ public class PostponableLogRefresher implements VcsLogRefresher { return true; } + @NotNull + public String getId() { + return myId; + } + @Override public String toString() { - return "VcsLogWindow '" + myRefresher + "'"; + return "VcsLogWindow '" + myId + "'"; } } } diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/impl/VcsLogManager.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/impl/VcsLogManager.java index a8e84479f4e1..025856bf6a10 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/impl/VcsLogManager.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/impl/VcsLogManager.java @@ -134,7 +134,7 @@ public class VcsLogManager implements Disposable { disposable = myTabsLogRefresher.addTabToWatch(ui.getId(), ui.getRefresher(), isClosedOnDispose); } else { - disposable = myPostponableRefresher.addLogWindow(ui.getRefresher()); + disposable = myPostponableRefresher.addLogWindow(ui.getId(), ui.getRefresher()); } Disposer.register(ui, disposable); return ui; diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/impl/VcsLogTabsWatcher.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/impl/VcsLogTabsWatcher.java index e3ad623b6d9c..6fd180ee11d4 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/impl/VcsLogTabsWatcher.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/impl/VcsLogTabsWatcher.java @@ -46,7 +46,7 @@ public class VcsLogTabsWatcher implements Disposable { @NotNull public Disposable addTabToWatch(@NotNull String tabId, @NotNull VisiblePackRefresher refresher, boolean isClosedOnDispose) { - return myRefresher.addLogWindow(new VcsLogTab(refresher, tabId, isClosedOnDispose)); + return myRefresher.addLogWindow(new VcsLogTab(tabId, refresher, isClosedOnDispose)); } private void installContentListeners() { @@ -78,7 +78,7 @@ public class VcsLogTabsWatcher implements Disposable { return StreamEx.of(myRefresher.getLogWindows()) .select(VcsLogTab.class) .filter(VcsLogTab::isClosedOnDispose) - .map(VcsLogTab::getTabId) + .map(VcsLogTab::getId) .toList(); } @@ -117,34 +117,22 @@ public class VcsLogTabsWatcher implements Disposable { } private class VcsLogTab extends VcsLogWindow { - @NotNull private final String myTabId; private final boolean myIsClosedOnDispose; - private VcsLogTab(@NotNull VisiblePackRefresher refresher, @NotNull String tabId, boolean isClosedOnDispose) { - super(refresher); - myTabId = tabId; + private VcsLogTab(@NotNull String tabId, @NotNull VisiblePackRefresher refresher, boolean isClosedOnDispose) { + super(tabId, refresher); myIsClosedOnDispose = isClosedOnDispose; } @Override public boolean isVisible() { String selectedTab = getSelectedTabId(getToolWindow()); - return selectedTab != null && myTabId.equals(selectedTab); - } - - @NotNull - public String getTabId() { - return myTabId; + return selectedTab != null && getId().equals(selectedTab); } public boolean isClosedOnDispose() { return myIsClosedOnDispose; } - - @Override - public String toString() { - return "VcsLogTab '" + myTabId + '\''; - } } private class MyToolWindowManagerListener implements ToolWindowManagerListener { @@ -170,8 +158,7 @@ public class VcsLogTabsWatcher implements Disposable { @Override protected void selectionChanged(@NotNull String tabId) { - VcsLogWindow logWindow = ContainerUtil.find(myRefresher.getLogWindows(), - window -> window instanceof VcsLogTab && ((VcsLogTab)window).myTabId.equals(tabId)); + VcsLogWindow logWindow = ContainerUtil.find(myRefresher.getLogWindows(), window -> window.getId().equals(tabId)); if (logWindow != null) { LOG.debug("Selected log window '" + logWindow + "'"); VcsLogUsageTriggerCollector.triggerUsage(VcsLogUsageTriggerCollector.VcsLogEvent.TAB_NAVIGATED, null);