diff --git a/platform/vcs-log/impl/src/META-INF/vcs-log.xml b/platform/vcs-log/impl/src/META-INF/vcs-log.xml index 0e2fd901cf0b..6d6dd9e78f02 100644 --- a/platform/vcs-log/impl/src/META-INF/vcs-log.xml +++ b/platform/vcs-log/impl/src/META-INF/vcs-log.xml @@ -67,6 +67,7 @@ + @@ -128,6 +129,7 @@ + @@ -176,6 +178,7 @@ + diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/impl/CommonUiProperties.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/impl/CommonUiProperties.java index c928f0c4325f..62dc908c4b4d 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/impl/CommonUiProperties.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/impl/CommonUiProperties.java @@ -25,6 +25,7 @@ import java.util.Map; public class CommonUiProperties { public static final VcsLogUiProperty SHOW_DETAILS = new VcsLogUiProperty<>("Window.ShowDetails"); + public static final VcsLogUiProperty SHOW_DIFF_PREVIEW = new VcsLogUiProperty<>("Window.ShowDiffPreview"); public static final Map> COLUMN_WIDTH = ContainerUtil.newHashMap(); public static final VcsLogUiProperty> COLUMN_ORDER = new VcsLogUiProperty<>("Table.ColumnOrder"); public static final VcsLogUiProperty SHOW_ROOT_NAMES = new VcsLogUiProperty<>("Table.ShowRootNames"); diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/impl/VcsLogApplicationSettings.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/impl/VcsLogApplicationSettings.java index ec12c1777ce3..17457e10600f 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/impl/VcsLogApplicationSettings.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/impl/VcsLogApplicationSettings.java @@ -10,6 +10,7 @@ import org.jetbrains.annotations.Nullable; import java.util.Set; +import static com.intellij.vcs.log.impl.CommonUiProperties.SHOW_DIFF_PREVIEW; import static com.intellij.vcs.log.impl.MainVcsLogUiProperties.*; @State(name = "Vcs.Log.App.Settings", storages = {@Storage("vcs.xml")}) @@ -27,7 +28,7 @@ public class VcsLogApplicationSettings implements PersistentStateComponent boolean exists(@NotNull VcsLogUiProperty property) { return COMPACT_REFERENCES_VIEW.equals(property) || SHOW_TAG_NAMES.equals(property) || - SHOW_CHANGES_FROM_PARENTS.equals(property); + SHOW_CHANGES_FROM_PARENTS.equals(property) || SHOW_DIFF_PREVIEW.equals(property); } public void addChangeListener(@NotNull VcsLogUiProperties.PropertiesChangeListener listener) { @@ -79,5 +86,6 @@ public class VcsLogApplicationSettings implements PersistentStateComponent getProperty() { + return CommonUiProperties.SHOW_DIFF_PREVIEW; + } +} diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/MainFrame.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/MainFrame.java index 36ec984f2fca..51a497147897 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/MainFrame.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/MainFrame.java @@ -7,14 +7,11 @@ import com.intellij.openapi.actionSystem.ex.ActionUtil; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.keymap.KeymapUtil; import com.intellij.openapi.progress.util.ProgressWindow; -import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Splitter; import com.intellij.openapi.util.Disposer; -import com.intellij.openapi.vcs.VcsConfiguration; import com.intellij.openapi.vcs.VcsDataKeys; import com.intellij.openapi.vcs.changes.Change; import com.intellij.openapi.vcs.changes.PreviewDiffSplitterComponent; -import com.intellij.openapi.vcs.changes.actions.ShowDiffPreviewAction; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.OnePixelSplitter; import com.intellij.ui.PopupHandler; @@ -68,7 +65,6 @@ public class MainFrame extends JPanel implements DataProvider, Disposable { @NotNull private final AbstractVcsLogUi myUi; @NotNull private final VcsLog myLog; @NotNull private final VcsLogClassicFilterUi myFilterUi; - @NotNull private final VcsConfiguration myVcsConfiguration; @NotNull private final JBLoadingPanel myChangesLoadingPane; @NotNull private final VcsLogGraphTable myGraphTable; @@ -93,9 +89,6 @@ public class MainFrame extends JPanel implements DataProvider, Disposable { myLog = log; myUiProperties = uiProperties; - Project project = logData.getProject(); - myVcsConfiguration = VcsConfiguration.getInstance(project); - myFilterUi = new VcsLogClassicFilterUi(ui, logData, myUiProperties, initialDataPack); // initialize components @@ -110,12 +103,11 @@ public class MainFrame extends JPanel implements DataProvider, Disposable { } }; - myChangesBrowser = new VcsLogChangesBrowser(project, myUiProperties, (commitId) -> { + myChangesBrowser = new VcsLogChangesBrowser(logData.getProject(), myUiProperties, (commitId) -> { int index = myLogData.getCommitIndex(commitId.getHash(), commitId.getRoot()); return myLogData.getMiniDetailsGetter().getCommitData(index, Collections.singleton(index)); }, this); myChangesBrowser.getDiffAction().registerCustomShortcutSet(myChangesBrowser.getDiffAction().getShortcutSet(), getGraphTable()); - myChangesBrowser.addToolbarAction(new MyToggleDetailsAction()); myChangesLoadingPane = new JBLoadingPanel(new BorderLayout(), this, ProgressWindow.DEFAULT_PROGRESS_DIALOG_POSTPONE_TIME_MILLIS); myChangesLoadingPane.add(myChangesBrowser); @@ -124,9 +116,9 @@ public class MainFrame extends JPanel implements DataProvider, Disposable { setupDetailsSplitter(myUiProperties.get(CommonUiProperties.SHOW_DETAILS)); - VcsLogChangeProcessor changeProcessor = new VcsLogChangeProcessor(project, myChangesBrowser, this); + VcsLogChangeProcessor changeProcessor = new VcsLogChangeProcessor(logData.getProject(), myChangesBrowser, this); myPreviewDiffSplitter = new PreviewDiffSplitterComponent(myDetailsSplitter, changeProcessor, PREVIEW_DIFF_SPLITTER_PROPORTION, - myVcsConfiguration.VCS_LOG_DETAILS_PREVIEW_SHOWN); + myUiProperties.get(CommonUiProperties.SHOW_DIFF_PREVIEW)); Runnable changesListener = () -> { ApplicationManager.getApplication().invokeLater(() -> { @@ -288,6 +280,10 @@ public class MainFrame extends JPanel implements DataProvider, Disposable { myDetailsSplitter.setSecondComponent(state ? myDetailsPanel : null); } + public void showDiffPreview(boolean state) { + myPreviewDiffSplitter.setDetailsOn(state); + } + @Override public void dispose() { myGraphTable.getSelectionModel().removeListSelectionListener(mySelectionListenerForDiff); @@ -370,17 +366,4 @@ public class MainFrame extends JPanel implements DataProvider, Disposable { } } } - - private class MyToggleDetailsAction extends ShowDiffPreviewAction { - @Override - public void setSelected(AnActionEvent e, boolean state) { - myPreviewDiffSplitter.setDetailsOn(state); - myVcsConfiguration.VCS_LOG_DETAILS_PREVIEW_SHOWN = state; - } - - @Override - public boolean isSelected(AnActionEvent e) { - return myVcsConfiguration.VCS_LOG_DETAILS_PREVIEW_SHOWN; - } - } }