mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[vcs-log] Dispatch PREFER_COMMIT_DATE event from FileHistoryUiProperties
Review ID: IDEA-CR-52657 GitOrigin-RevId: 43351ea2b5a1ac222f4a5ff709060c267e3d6536
This commit is contained in:
committed by
intellij-monorepo-bot
parent
5e3f721e85
commit
7171e99dbd
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user