[vcs-log] Dispatch PREFER_COMMIT_DATE event from FileHistoryUiProperties

Review ID: IDEA-CR-52657

GitOrigin-RevId: 43351ea2b5a1ac222f4a5ff709060c267e3d6536
This commit is contained in:
Tagir Valeev
2019-09-30 05:31:39 +00:00
committed by intellij-monorepo-bot
parent 5e3f721e85
commit 7171e99dbd
4 changed files with 31 additions and 22 deletions
@@ -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();
}
}
}
@@ -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 <T> void onApplicationSettingChange(VcsLogUiProperty<T> property) {
if (PREFER_COMMIT_DATE.equals(property)) {
myListeners.forEach(l -> l.onPropertyChanged(property));
}
}
@SuppressWarnings("unchecked")
@Override
public <T> void set(@NotNull VcsLogUiProperty<T> 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);
}
}
}
@@ -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<VcsLogListener> 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 <T> void onPropertyChange(@NotNull VcsLogUiProperties.VcsLogUiProperty<T> 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);
}
}
@@ -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();
}
}