vcs: fix "Preview Diff" state in Local Changes

* remove unnecessary inner state, that could differ from the real one
This commit is contained in:
Aleksey Pivovarov
2017-06-05 12:17:29 +03:00
parent e74959a991
commit 1ffac15ddf
3 changed files with 24 additions and 30 deletions
@@ -73,7 +73,6 @@ import java.awt.event.KeyEvent;
import java.util.Collection;
import java.util.List;
import static com.intellij.util.ObjectUtils.assertNotNull;
import static java.util.stream.Collectors.toList;
@State(
@@ -83,7 +82,7 @@ import static java.util.stream.Collectors.toList;
public class ChangesViewManager implements ChangesViewI, ProjectComponent, PersistentStateComponent<ChangesViewManager.State> {
private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.vcs.changes.ChangesViewManager");
public static final String CHANGES_VIEW_PREVIEW_SPLITTER_PROPORTION = "ChangesViewManager.DETAILS_SPLITTER_PROPORTION";
private static final String CHANGES_VIEW_PREVIEW_SPLITTER_PROPORTION = "ChangesViewManager.DETAILS_SPLITTER_PROPORTION";
@NotNull private final ChangesListView myView;
private JPanel myProgressLabel;
@@ -478,10 +477,14 @@ public class ChangesViewManager implements ChangesViewI, ProjectComponent, Persi
private class ToggleDetailsAction extends ShowDiffPreviewAction {
@Override
public void setSelected(AnActionEvent e, boolean state) {
super.setSelected(e, state);
assertNotNull(mySplitterComponent).setDetailsOn(state);
mySplitterComponent.setDetailsOn(state);
VcsConfiguration.getInstance(myProject).LOCAL_CHANGES_DETAILS_PREVIEW_SHOWN = state;
}
@Override
public boolean isSelected(AnActionEvent e) {
return VcsConfiguration.getInstance(myProject).LOCAL_CHANGES_DETAILS_PREVIEW_SHOWN;
}
}
private class MyChangeProcessor extends ChangeViewDiffRequestProcessor {
@@ -16,24 +16,11 @@
package com.intellij.openapi.vcs.changes.actions;
import com.intellij.icons.AllIcons;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.ToggleAction;
import com.intellij.openapi.project.DumbAware;
public abstract class ShowDiffPreviewAction extends ToggleAction implements DumbAware {
private boolean myState;
public ShowDiffPreviewAction() {
super("Preview Diff", null, AllIcons.Actions.DiffPreview);
}
@Override
public boolean isSelected(AnActionEvent e) {
return myState;
}
@Override
public void setSelected(AnActionEvent e, boolean state) {
myState = state;
}
}
@@ -108,6 +108,7 @@ public class ShelvedChangesViewManager implements ProjectComponent {
private static final Logger LOG = Logger.getInstance(ShelvedChangesViewManager.class);
@NonNls static final String SHELF_CONTEXT_MENU = "Vcs.Shelf.ContextMenu";
private static final String SHELVE_PREVIEW_SPLITTER_PROPORTION = "ShelvedChangesViewManager.DETAILS_SPLITTER_PROPORTION";
private final ChangesViewContentManager myContentManager;
private final ShelveChangesManager myShelveChangesManager;
@@ -247,21 +248,11 @@ public class ShelvedChangesViewManager implements ProjectComponent {
DefaultActionGroup actionGroup = new DefaultActionGroup();
actionGroup.addAll((ActionGroup)ActionManager.getInstance().getAction("ShelvedChangesToolbar"));
ShowDiffPreviewAction diffPreviewAction = new ShowDiffPreviewAction() {
@Override
public void setSelected(AnActionEvent e, boolean state) {
super.setSelected(e, state);
assertNotNull(mySplitterComponent).setDetailsOn(state);
VcsConfiguration.getInstance(myProject).SHELVE_DETAILS_PREVIEW_SHOWN = state;
}
};
actionGroup.add(diffPreviewAction, new Constraints(AFTER, "ShelvedChanges.ShowHideDeleted"));
actionGroup.add(new MyToggleDetailsAction(), new Constraints(AFTER, "ShelvedChanges.ShowHideDeleted"));
MyShelvedPreviewProcessor changeProcessor = new MyShelvedPreviewProcessor(myProject);
mySplitterComponent =
new PreviewDiffSplitterComponent(pane, changeProcessor, "ShelvedChangesViewManager.DETAILS_SPLITTER_PROPORTION",
VcsConfiguration.getInstance(myProject).SHELVE_DETAILS_PREVIEW_SHOWN);
diffPreviewAction.setSelected(null, mySplitterComponent.isDetailsOn());
mySplitterComponent = new PreviewDiffSplitterComponent(pane, changeProcessor, SHELVE_PREVIEW_SPLITTER_PROPORTION,
VcsConfiguration.getInstance(myProject).SHELVE_DETAILS_PREVIEW_SHOWN);
ActionToolbar toolbar = ActionManager.getInstance().createActionToolbar("ShelvedChanges", actionGroup, false);
JPanel rootPanel = new JPanel(new BorderLayout());
@@ -742,6 +733,19 @@ public class ShelvedChangesViewManager implements ProjectComponent {
return new DnDImage(image, new Point(-image.getWidth(null), -image.getHeight(null)));
}
private class MyToggleDetailsAction extends ShowDiffPreviewAction {
@Override
public void setSelected(AnActionEvent e, boolean state) {
mySplitterComponent.setDetailsOn(state);
VcsConfiguration.getInstance(myProject).SHELVE_DETAILS_PREVIEW_SHOWN = state;
}
@Override
public boolean isSelected(AnActionEvent e) {
return VcsConfiguration.getInstance(myProject).SHELVE_DETAILS_PREVIEW_SHOWN;
}
}
private class MyShelvedPreviewProcessor extends CacheDiffRequestProcessor<ShelvedWrapper> implements DiffPreviewUpdateProcessor {
@NotNull private final DiffShelvedChangesActionProvider.PatchesPreloader myPreloader;