diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/SpecificFilesViewDialog.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/SpecificFilesViewDialog.java index c23137e7b436..5b5e0c22d7fd 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/SpecificFilesViewDialog.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/SpecificFilesViewDialog.java @@ -4,7 +4,10 @@ package com.intellij.openapi.vcs.changes; import com.intellij.ide.CommonActionsManager; import com.intellij.ide.TreeExpander; import com.intellij.ide.util.treeView.TreeState; -import com.intellij.openapi.actionSystem.*; +import com.intellij.openapi.actionSystem.ActionManager; +import com.intellij.openapi.actionSystem.ActionToolbar; +import com.intellij.openapi.actionSystem.DataKey; +import com.intellij.openapi.actionSystem.DefaultActionGroup; import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; @@ -20,6 +23,7 @@ import com.intellij.util.EditSourceOnEnterKeyHandler; import com.intellij.util.ui.JBDimension; import com.intellij.util.ui.tree.TreeUtil; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import javax.swing.*; import javax.swing.tree.DefaultTreeModel; @@ -47,12 +51,13 @@ abstract class SpecificFilesViewDialog extends DialogWrapper { myProject = project; final Runnable closer = () -> this.close(0); myView = new ChangesListView(project) { + @Nullable @Override - public void calcData(DataKey key, DataSink sink) { - super.calcData(key, sink); - if (shownDataKey.is(key.getName())) { - sink.put(shownDataKey, getSelectedVirtualFiles(null)); + public Object getData(String dataId) { + if (shownDataKey.is(dataId)) { + return getSelectedVirtualFiles(null); } + return super.getData(dataId); } @Override diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesListView.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesListView.java index 31e9cf4edc41..9eaec2eb24d4 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesListView.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesListView.java @@ -48,7 +48,7 @@ import static com.intellij.util.containers.UtilKt.stream; import static java.util.stream.Collectors.toList; // TODO: Check if we could extend DnDAwareTree here instead of directly implementing DnDAware -public class ChangesListView extends Tree implements TypeSafeDataProvider, DnDAware { +public class ChangesListView extends Tree implements DataProvider, DnDAware { private final Project myProject; private final CopyProvider myCopyProvider; @NotNull private final ChangesGroupingSupport myGroupingSupport; @@ -139,73 +139,73 @@ public class ChangesListView extends Tree implements TypeSafeDataProvider, DnDAw expandPath(new TreePath(new Object[]{root, defaultListNode})); } + @Nullable @Override - public void calcData(DataKey key, DataSink sink) { - if (key == DATA_KEY) { - sink.put(DATA_KEY, this); + public Object getData(String dataId) { + if (DATA_KEY.is(dataId)) { + return this; } - else if (key == VcsDataKeys.CHANGES) { - sink.put(VcsDataKeys.CHANGES, getSelectedChanges().toArray(Change[]::new)); + if (VcsDataKeys.CHANGES.is(dataId)) { + return getSelectedChanges().toArray(Change[]::new); } - else if (key == VcsDataKeys.CHANGE_LEAD_SELECTION) { - sink.put(VcsDataKeys.CHANGE_LEAD_SELECTION, getLeadSelection().toArray(Change[]::new)); + if (VcsDataKeys.CHANGE_LEAD_SELECTION.is(dataId)) { + return getLeadSelection().toArray(Change[]::new); } - else if (key == VcsDataKeys.CHANGE_LISTS) { - sink.put(VcsDataKeys.CHANGE_LISTS, getSelectedChangeLists().toArray(ChangeList[]::new)); + if (VcsDataKeys.CHANGE_LISTS.is(dataId)) { + return getSelectedChangeLists().toArray(ChangeList[]::new); } - else if (key == CommonDataKeys.VIRTUAL_FILE_ARRAY) { - sink.put(CommonDataKeys.VIRTUAL_FILE_ARRAY, getSelectedFiles().toArray(VirtualFile[]::new)); + if (CommonDataKeys.VIRTUAL_FILE_ARRAY.is(dataId)) { + return getSelectedFiles().toArray(VirtualFile[]::new); } - else if (key == VcsDataKeys.VIRTUAL_FILE_STREAM) { - sink.put(VcsDataKeys.VIRTUAL_FILE_STREAM, getSelectedFiles()); + if (VcsDataKeys.VIRTUAL_FILE_STREAM.is(dataId)) { + return getSelectedFiles(); } - else if (key == CommonDataKeys.NAVIGATABLE) { + if (CommonDataKeys.NAVIGATABLE.is(dataId)) { VirtualFile file = getIfSingle(getNavigatableFiles()); - if (file != null && !file.isDirectory()) { - sink.put(CommonDataKeys.NAVIGATABLE, new OpenFileDescriptor(myProject, file, 0)); - } + return file != null && !file.isDirectory() ? new OpenFileDescriptor(myProject, file, 0) : null; } - else if (key == CommonDataKeys.NAVIGATABLE_ARRAY) { - sink.put(CommonDataKeys.NAVIGATABLE_ARRAY, ChangesUtil.getNavigatableArray(myProject, getNavigatableFiles())); + if (CommonDataKeys.NAVIGATABLE_ARRAY.is(dataId)) { + return ChangesUtil.getNavigatableArray(myProject, getNavigatableFiles()); } - else if (key == PlatformDataKeys.DELETE_ELEMENT_PROVIDER) { - if (getSelectionObjectsStream().anyMatch(userObject -> !(userObject instanceof ChangeList))) { - sink.put(PlatformDataKeys.DELETE_ELEMENT_PROVIDER, new VirtualFileDeleteProvider()); - } + if (PlatformDataKeys.DELETE_ELEMENT_PROVIDER.is(dataId)) { + return getSelectionObjectsStream().anyMatch(userObject -> !(userObject instanceof ChangeList)) + ? new VirtualFileDeleteProvider() + : null; } - else if (key == PlatformDataKeys.COPY_PROVIDER) { - sink.put(PlatformDataKeys.COPY_PROVIDER, myCopyProvider); + if (PlatformDataKeys.COPY_PROVIDER.is(dataId)) { + return myCopyProvider; } - else if (key == UNVERSIONED_FILES_DATA_KEY) { - sink.put(UNVERSIONED_FILES_DATA_KEY, getSelectedUnversionedFiles()); + if (UNVERSIONED_FILES_DATA_KEY.is(dataId)) { + return getSelectedUnversionedFiles(); } - else if (key == IGNORED_FILES_DATA_KEY) { - sink.put(IGNORED_FILES_DATA_KEY, getSelectedIgnoredFiles()); + if (IGNORED_FILES_DATA_KEY.is(dataId)) { + return getSelectedIgnoredFiles(); } - else if (key == VcsDataKeys.MODIFIED_WITHOUT_EDITING_DATA_KEY) { - sink.put(VcsDataKeys.MODIFIED_WITHOUT_EDITING_DATA_KEY, getSelectedModifiedWithoutEditing().collect(toList())); + if (VcsDataKeys.MODIFIED_WITHOUT_EDITING_DATA_KEY.is(dataId)) { + return getSelectedModifiedWithoutEditing().collect(toList()); } - else if (key == LOCALLY_DELETED_CHANGES) { - sink.put(LOCALLY_DELETED_CHANGES, getSelectedLocallyDeletedChanges().collect(toList())); + if (LOCALLY_DELETED_CHANGES.is(dataId)) { + return getSelectedLocallyDeletedChanges().collect(toList()); } - else if (key == MISSING_FILES_DATA_KEY) { - sink.put(MISSING_FILES_DATA_KEY, getSelectedMissingFiles().collect(toList())); + if (MISSING_FILES_DATA_KEY.is(dataId)) { + return getSelectedMissingFiles().collect(toList()); } - else if (VcsDataKeys.HAVE_LOCALLY_DELETED == key) { - sink.put(VcsDataKeys.HAVE_LOCALLY_DELETED, getSelectedMissingFiles().findAny().isPresent()); + if (VcsDataKeys.HAVE_LOCALLY_DELETED.is(dataId)) { + return getSelectedMissingFiles().findAny().isPresent(); } - else if (VcsDataKeys.HAVE_MODIFIED_WITHOUT_EDITING == key) { - sink.put(VcsDataKeys.HAVE_MODIFIED_WITHOUT_EDITING, getSelectedModifiedWithoutEditing().findAny().isPresent()); + if (VcsDataKeys.HAVE_MODIFIED_WITHOUT_EDITING.is(dataId)) { + return getSelectedModifiedWithoutEditing().findAny().isPresent(); } - else if (VcsDataKeys.HAVE_SELECTED_CHANGES == key) { - sink.put(VcsDataKeys.HAVE_SELECTED_CHANGES, haveSelectedChanges()); + if (VcsDataKeys.HAVE_SELECTED_CHANGES.is(dataId)) { + return haveSelectedChanges(); } - else if (key == PlatformDataKeys.HELP_ID) { - sink.put(PlatformDataKeys.HELP_ID, HELP_ID); + if (PlatformDataKeys.HELP_ID.is(dataId)) { + return HELP_ID; } - else if (key == ChangesGroupingSupport.KEY) { - sink.put(ChangesGroupingSupport.KEY, myGroupingSupport); + if (ChangesGroupingSupport.KEY.is(dataId)) { + return myGroupingSupport; } + return null; } @NotNull