From 7171e99dbd8cd3004d8003bb8e772c072508eeee Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Fri, 27 Sep 2019 10:53:29 +0700 Subject: [PATCH] [vcs-log] Dispatch PREFER_COMMIT_DATE event from FileHistoryUiProperties Review ID: IDEA-CR-52657 GitOrigin-RevId: 43351ea2b5a1ac222f4a5ff709060c267e3d6536 --- .../vcs/log/history/FileHistoryUi.java | 6 +++++- .../log/history/FileHistoryUiProperties.java | 15 +++++++++++++++ .../intellij/vcs/log/ui/AbstractVcsLogUi.java | 14 -------------- .../com/intellij/vcs/log/ui/VcsLogUiImpl.java | 18 +++++++++++------- 4 files changed, 31 insertions(+), 22 deletions(-) diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/history/FileHistoryUi.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/history/FileHistoryUi.java index d134c19ea29c..ab665c132529 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/history/FileHistoryUi.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/history/FileHistoryUi.java @@ -28,6 +28,7 @@ import com.intellij.vcs.log.ui.highlighters.CurrentBranchHighlighter; import com.intellij.vcs.log.ui.highlighters.MyCommitsHighlighter; import com.intellij.vcs.log.ui.highlighters.VcsLogHighlighterFactory; import com.intellij.vcs.log.ui.table.GraphTableModel; +import com.intellij.vcs.log.ui.table.VcsLogColumn; import com.intellij.vcs.log.ui.table.VcsLogGraphTable; import com.intellij.vcs.log.util.VcsLogUiUtil; import com.intellij.vcs.log.visible.VisiblePack; @@ -278,7 +279,10 @@ public class FileHistoryUi extends AbstractVcsLogUi { myFileHistoryPanel.showDiffPreview(myUiProperties.get(CommonUiProperties.SHOW_DIFF_PREVIEW)); } else if (CommonUiProperties.SHOW_ROOT_NAMES.equals(property)) { - myFileHistoryPanel.getGraphTable().rootColumnUpdated(); + getTable().rootColumnUpdated(); + } + else if (property.equals(CommonUiProperties.PREFER_COMMIT_DATE) && getTable().getTableColumn(VcsLogColumn.DATE) != null) { + getTable().repaint(); } } } diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/history/FileHistoryUiProperties.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/history/FileHistoryUiProperties.java index 022d2313c6f5..d5cdbad722bb 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/history/FileHistoryUiProperties.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/history/FileHistoryUiProperties.java @@ -24,6 +24,7 @@ public class FileHistoryUiProperties implements VcsLogUiProperties, PersistentSt private final VcsLogApplicationSettings myLogSettings = ApplicationManager.getApplication().getService(VcsLogApplicationSettings.class); private State myState = new State(); + private final PropertiesChangeListener myApplicationSettingsListener = this::onApplicationSettingChange; public static class State { public boolean SHOW_DETAILS = false; @@ -69,6 +70,12 @@ public class FileHistoryUiProperties implements VcsLogUiProperties, PersistentSt throw new UnsupportedOperationException("Unknown property " + property); } + private void onApplicationSettingChange(VcsLogUiProperty property) { + if (PREFER_COMMIT_DATE.equals(property)) { + myListeners.forEach(l -> l.onPropertyChanged(property)); + } + } + @SuppressWarnings("unchecked") @Override public void set(@NotNull VcsLogUiProperty property, @NotNull T value) { @@ -92,6 +99,8 @@ public class FileHistoryUiProperties implements VcsLogUiProperties, PersistentSt } else if (PREFER_COMMIT_DATE.equals(property)) { myLogSettings.set(property, value); + // listeners will be triggered via onApplicationSettingChange + return; } else { throw new UnsupportedOperationException("Unknown property " + property); @@ -123,11 +132,17 @@ public class FileHistoryUiProperties implements VcsLogUiProperties, PersistentSt @Override public void addChangeListener(@NotNull PropertiesChangeListener listener) { + if (myListeners.isEmpty()) { + myLogSettings.addChangeListener(myApplicationSettingsListener); + } myListeners.add(listener); } @Override public void removeChangeListener(@NotNull PropertiesChangeListener listener) { myListeners.remove(listener); + if (myListeners.isEmpty()) { + myLogSettings.removeChangeListener(myApplicationSettingsListener); + } } } diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/AbstractVcsLogUi.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/AbstractVcsLogUi.java index 6220e313d2e6..3e98826d12ba 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/AbstractVcsLogUi.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/AbstractVcsLogUi.java @@ -23,13 +23,10 @@ import com.intellij.util.ui.UIUtil; import com.intellij.vcs.log.*; import com.intellij.vcs.log.data.VcsLogData; import com.intellij.vcs.log.history.ReachableNodesUtilKt; -import com.intellij.vcs.log.impl.CommonUiProperties; -import com.intellij.vcs.log.impl.VcsLogApplicationSettings; import com.intellij.vcs.log.impl.VcsLogImpl; import com.intellij.vcs.log.impl.VcsLogUiProperties; import com.intellij.vcs.log.ui.highlighters.VcsLogHighlighterFactory; import com.intellij.vcs.log.ui.table.GraphTableModel; -import com.intellij.vcs.log.ui.table.VcsLogColumn; import com.intellij.vcs.log.ui.table.VcsLogGraphTable; import com.intellij.vcs.log.util.VcsLogUtil; import com.intellij.vcs.log.visible.VisiblePack; @@ -55,7 +52,6 @@ public abstract class AbstractVcsLogUi implements VcsLogUi, Disposable { @NotNull protected final Collection myLogListeners = ContainerUtil.createLockFreeCopyOnWriteList(); @NotNull protected final VisiblePackChangeListener myVisiblePackChangeListener; - @NotNull private final VcsLogUiProperties.PropertiesChangeListener myLogApplicationSettingsListener = this::onPropertyChange; @NotNull protected VisiblePack myVisiblePack; @@ -80,14 +76,6 @@ public abstract class AbstractVcsLogUi implements VcsLogUi, Disposable { } }); myRefresher.addVisiblePackChangeListener(myVisiblePackChangeListener); - VcsLogApplicationSettings settings = ApplicationManager.getApplication().getService(VcsLogApplicationSettings.class); - settings.addChangeListener(myLogApplicationSettingsListener); - } - - private void onPropertyChange(@NotNull VcsLogUiProperties.VcsLogUiProperty property) { - if (property.equals(CommonUiProperties.PREFER_COMMIT_DATE) && getTable().getTableColumn(VcsLogColumn.DATE) != null) { - getTable().repaint(); - } } @NotNull @@ -306,7 +294,5 @@ public abstract class AbstractVcsLogUi implements VcsLogUi, Disposable { myRefresher.removeVisiblePackChangeListener(myVisiblePackChangeListener); getTable().removeAllHighlighters(); myVisiblePack = VisiblePack.EMPTY; - VcsLogApplicationSettings settings = ApplicationManager.getApplication().getService(VcsLogApplicationSettings.class); - settings.removeChangeListener(myLogApplicationSettingsListener); } } diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/VcsLogUiImpl.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/VcsLogUiImpl.java index 6669366ed20e..69ee5d689f89 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/VcsLogUiImpl.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/VcsLogUiImpl.java @@ -24,6 +24,7 @@ import com.intellij.vcs.log.ui.filter.VcsLogFilterUiEx; import com.intellij.vcs.log.ui.frame.MainFrame; import com.intellij.vcs.log.ui.highlighters.VcsLogHighlighterFactory; import com.intellij.vcs.log.ui.table.GraphTableModel; +import com.intellij.vcs.log.ui.table.VcsLogColumn; import com.intellij.vcs.log.ui.table.VcsLogGraphTable; import com.intellij.vcs.log.util.VcsLogUiUtil; import com.intellij.vcs.log.visible.VisiblePackRefresher; @@ -235,28 +236,31 @@ public class VcsLogUiImpl extends AbstractVcsLogUi { onShowLongEdgesChanged(); } else if (CommonUiProperties.SHOW_ROOT_NAMES.equals(property)) { - myMainFrame.getGraphTable().rootColumnUpdated(); + getTable().rootColumnUpdated(); } else if (MainVcsLogUiProperties.COMPACT_REFERENCES_VIEW.equals(property)) { - myMainFrame.getGraphTable().setCompactReferencesView(myUiProperties.get(MainVcsLogUiProperties.COMPACT_REFERENCES_VIEW)); + getTable().setCompactReferencesView(myUiProperties.get(MainVcsLogUiProperties.COMPACT_REFERENCES_VIEW)); } else if (MainVcsLogUiProperties.SHOW_TAG_NAMES.equals(property)) { - myMainFrame.getGraphTable().setShowTagNames(myUiProperties.get(MainVcsLogUiProperties.SHOW_TAG_NAMES)); + getTable().setShowTagNames(myUiProperties.get(MainVcsLogUiProperties.SHOW_TAG_NAMES)); } else if (MainVcsLogUiProperties.LABELS_LEFT_ALIGNED.equals(property)) { - myMainFrame.getGraphTable().setLabelsLeftAligned(myUiProperties.get(MainVcsLogUiProperties.LABELS_LEFT_ALIGNED)); + getTable().setLabelsLeftAligned(myUiProperties.get(MainVcsLogUiProperties.LABELS_LEFT_ALIGNED)); } else if (MainVcsLogUiProperties.BEK_SORT_TYPE.equals(property)) { myRefresher.onSortTypeChange(myUiProperties.get(MainVcsLogUiProperties.BEK_SORT_TYPE)); } else if (CommonUiProperties.COLUMN_ORDER.equals(property)) { - myMainFrame.getGraphTable().onColumnOrderSettingChanged(); + getTable().onColumnOrderSettingChanged(); } else if (property instanceof VcsLogHighlighterProperty) { - myMainFrame.getGraphTable().repaint(); + getTable().repaint(); } else if (property instanceof CommonUiProperties.TableColumnProperty) { - myMainFrame.getGraphTable().forceReLayout(((CommonUiProperties.TableColumnProperty)property).getColumn()); + getTable().forceReLayout(((CommonUiProperties.TableColumnProperty)property).getColumn()); + } + else if (property.equals(CommonUiProperties.PREFER_COMMIT_DATE) && getTable().getTableColumn(VcsLogColumn.DATE) != null) { + getTable().repaint(); } }