diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/RestoreShelvedChange.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/RestoreShelvedChange.java index 19e1e206b47a..1a8d5374f3a0 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/RestoreShelvedChange.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/RestoreShelvedChange.java @@ -6,8 +6,11 @@ import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.project.Project; import com.intellij.openapi.vcs.VcsBundle; +import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; +import java.util.Collection; + public class RestoreShelvedChange extends DumbAwareAction { public RestoreShelvedChange() { super("Restore"); @@ -16,18 +19,19 @@ public class RestoreShelvedChange extends DumbAwareAction { @Override public void update(@NotNull final AnActionEvent e) { final Project project = e.getData(CommonDataKeys.PROJECT); - final ShelvedChangeList[] recycledChanges = e.getData(ShelvedChangesViewManager.SHELVED_RECYCLED_CHANGELIST_KEY); + final Collection recycledChanges = e.getData(ShelvedChangesViewManager.SHELVED_RECYCLED_CHANGELIST_KEY); e.getPresentation().setText(VcsBundle.message("vcs.shelf.action.restore.text")); e.getPresentation().setDescription(VcsBundle.message("vcs.shelf.action.restore.description")); - e.getPresentation().setEnabled((project != null) && ((recycledChanges != null) && (recycledChanges.length == 1))); + e.getPresentation().setEnabled(project != null && recycledChanges != null); } @Override public void actionPerformed(@NotNull final AnActionEvent e) { - final Project project = e.getData(CommonDataKeys.PROJECT); - final ShelvedChangeList[] recycledChanges = e.getData(ShelvedChangesViewManager.SHELVED_RECYCLED_CHANGELIST_KEY); - if (recycledChanges != null && recycledChanges.length == 1) { - ShelveChangesManager.getInstance(project).restoreList(recycledChanges[0]); + final Project project = e.getRequiredData(CommonDataKeys.PROJECT); + final Collection recycledChanges = e.getData(ShelvedChangesViewManager.SHELVED_RECYCLED_CHANGELIST_KEY); + if (recycledChanges != null && recycledChanges.size() == 1) { + //noinspection ConstantConditions + ShelveChangesManager.getInstance(project).restoreList(ContainerUtil.getFirstItem(recycledChanges)); } } } diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ShelvedChangesViewManager.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ShelvedChangesViewManager.java index 26cfdea12281..ecfce3c40662 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ShelvedChangesViewManager.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ShelvedChangesViewManager.java @@ -99,8 +99,10 @@ public class ShelvedChangesViewManager implements Disposable { private final MergingUpdateQueue myUpdateQueue; private final VcsConfiguration myVcsConfiguration; - public static final DataKey SHELVED_CHANGELIST_KEY = DataKey.create("ShelveChangesManager.ShelvedChangeListData"); - public static final DataKey SHELVED_RECYCLED_CHANGELIST_KEY = DataKey.create("ShelveChangesManager.ShelvedRecycledChangeListData"); + public static final DataKey> SHELVED_CHANGELIST_KEY = + DataKey.create("ShelveChangesManager.ShelvedChangeListData"); + public static final DataKey> SHELVED_RECYCLED_CHANGELIST_KEY = + DataKey.create("ShelveChangesManager.ShelvedRecycledChangeListData"); public static final DataKey> SHELVED_CHANGE_KEY = DataKey.create("ShelveChangesManager.ShelvedChange"); public static final DataKey> SHELVED_BINARY_FILE_KEY = DataKey.create("ShelveChangesManager.ShelvedBinaryFile"); private static final Object ROOT_NODE_VALUE = new Object(); @@ -372,18 +374,10 @@ public class ShelvedChangesViewManager implements Disposable { @Override public Object getData(@NotNull @NonNls String dataId) { if (SHELVED_CHANGELIST_KEY.is(dataId)) { - final Set changeLists = getSelectedLists(l -> !l.isRecycled()); - - if (changeLists.size() > 0) { - return changeLists.toArray(new ShelvedChangeList[0]); - } + return nullize(newArrayList(getSelectedLists(l -> !l.isRecycled()))); } else if (SHELVED_RECYCLED_CHANGELIST_KEY.is(dataId)) { - final Set changeLists = getSelectedLists(l -> l.isRecycled()); - - if (changeLists.size() > 0) { - return changeLists.toArray(new ShelvedChangeList[0]); - } + return nullize(newArrayList(getSelectedLists(l -> l.isRecycled()))); } else if (SHELVED_CHANGE_KEY.is(dataId)) { return TreeUtil.collectSelectedObjectsOfType(this, ShelvedChange.class); @@ -465,16 +459,9 @@ public class ShelvedChangesViewManager implements Disposable { @NotNull public static List getShelvedLists(@NotNull final DataContext dataContext) { - final ShelvedChangeList[] shelved = SHELVED_CHANGELIST_KEY.getData(dataContext); - final ShelvedChangeList[] recycled = SHELVED_RECYCLED_CHANGELIST_KEY.getData(dataContext); - if (shelved == null && recycled == null) return Collections.emptyList(); List shelvedChangeLists = newArrayList(); - if (shelved != null) { - addAll(shelvedChangeLists, shelved); - } - if (recycled != null) { - addAll(shelvedChangeLists, recycled); - } + addAll(shelvedChangeLists, notNullize(SHELVED_CHANGELIST_KEY.getData(dataContext))); + addAll(shelvedChangeLists, notNullize(SHELVED_RECYCLED_CHANGELIST_KEY.getData(dataContext))); return shelvedChangeLists; }