From b9d1e88402e31b938d5ab47ca5207b2e7eddded2 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Fri, 11 Dec 2020 23:00:35 +0100 Subject: [PATCH] [platform] ignoring invalid files in "reload from disk" action (EA-247223); simpler texts GitOrigin-RevId: cf5303941eca489c30fdeff3445ed9483d65d50e --- .../actions/SynchronizeCurrentFileAction.java | 35 +++++-------------- .../resources/messages/IdeBundle.properties | 4 +-- .../IdeDeprecatedMessagesBundle.properties | 2 ++ 3 files changed, 12 insertions(+), 29 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/actions/SynchronizeCurrentFileAction.java b/platform/lang-impl/src/com/intellij/ide/actions/SynchronizeCurrentFileAction.java index 11cab0c2f6d4..2da36beefb6b 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/SynchronizeCurrentFileAction.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/SynchronizeCurrentFileAction.java @@ -11,39 +11,24 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.newvfs.NewVirtualFile; import com.intellij.openapi.vfs.newvfs.RefreshQueue; -import com.intellij.openapi.vfs.newvfs.VfsPresentationUtil; import com.intellij.openapi.wm.StatusBar; import com.intellij.openapi.wm.WindowManager; -import com.intellij.util.containers.JBIterable; import org.jetbrains.annotations.NotNull; import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; public class SynchronizeCurrentFileAction extends AnAction implements DumbAware { @Override public void update(@NotNull AnActionEvent e) { - List files = getFiles(e).take(2).toList(); - Project project = e.getProject(); - if (project == null || files.isEmpty()) { - e.getPresentation().setEnabledAndVisible(false); - } - else { - e.getPresentation().setEnabledAndVisible(true); - } - } - - @NotNull - private static String getMessage(@NotNull Project project, @NotNull List files) { - VirtualFile single = files.size() == 1 ? files.get(0) : null; - return single != null ? - IdeBundle.message("action.synchronize.file", VfsPresentationUtil.getPresentableNameForAction(project, single)) : - IdeBundle.message("action.synchronize.selected.files"); + e.getPresentation().setEnabledAndVisible(e.getProject() != null && localFiles(e).findAny().isPresent()); } @Override public void actionPerformed(@NotNull AnActionEvent e) { Project project = getEventProject(e); - List files = getFiles(e).toList(); + List files = localFiles(e).collect(Collectors.toList()); if (project == null || files.isEmpty()) return; for (VirtualFile file : files) { @@ -57,17 +42,15 @@ public class SynchronizeCurrentFileAction extends AnAction implements DumbAware RefreshQueue.getInstance().refresh(true, true, () -> postRefresh(project, files), files); } - private static void postRefresh(Project project, List files) { + private static void postRefresh(Project project, List files) { VcsFacade.getInstance().markFilesDirty(project, files); StatusBar statusBar = WindowManager.getInstance().getStatusBar(project); if (statusBar != null) { - statusBar.setInfo(IdeBundle.message("action.sync.completed.successfully", getMessage(project, files))); + statusBar.setInfo(IdeBundle.message("action.sync.completed.successfully")); } } - @NotNull - private static JBIterable getFiles(@NotNull AnActionEvent e) { - return JBIterable.of(e.getData(CommonDataKeys.VIRTUAL_FILE_ARRAY)) - .filter(o -> o.isInLocalFileSystem()); + private static Stream localFiles(AnActionEvent e) { + return Stream.of(e.getData(CommonDataKeys.VIRTUAL_FILE_ARRAY)).filter(f -> f.isValid() && f.isInLocalFileSystem()); } -} \ No newline at end of file +} diff --git a/platform/platform-api/resources/messages/IdeBundle.properties b/platform/platform-api/resources/messages/IdeBundle.properties index b72398d0798f..4a5321eddea5 100644 --- a/platform/platform-api/resources/messages/IdeBundle.properties +++ b/platform/platform-api/resources/messages/IdeBundle.properties @@ -388,9 +388,7 @@ recent.locations.changed.locations=Recent Changed Locations recent.locations.popup.empty.text=No recent locations found recent.locations.title.text=Show changed only recent.locations.popup.empty.file.text=Empty lines -action.sync.completed.successfully={0} completed successfully. -action.synchronize.file=Synchronize ''{0}'' -action.synchronize.selected.files=Synchronize selected files +action.sync.completed.successfully=File synchronization completed successfully. macro.column.number=Column number macro.unix.separators=Takes a parameter and converts separators to '/'. Ex. $UnixSeparators(\\foo\\bar\\)$ == /foo/bar/ macro.file.directory=File directory diff --git a/platform/platform-api/resources/messages/IdeDeprecatedMessagesBundle.properties b/platform/platform-api/resources/messages/IdeDeprecatedMessagesBundle.properties index bbbccaacb4f2..9c42f3f0f02b 100644 --- a/platform/platform-api/resources/messages/IdeDeprecatedMessagesBundle.properties +++ b/platform/platform-api/resources/messages/IdeDeprecatedMessagesBundle.properties @@ -50,6 +50,8 @@ run.configuration.error.working.directory.does.not.exist=Cannot start process, t run.configuration.error.working.directory.not.directory=Cannot start process, the working directory ''{0}'' is not a directory go.to.file.toolwindow.title=Files matching pattern change.color.command.text=Change color +action.synchronize.file=Synchronize ''{0}'' +action.synchronize.selected.files=Synchronize selected files #messages from ProjectBundle project.roots.no.jdk.on.project.message=Set up created SDK on project? project.roots.no.jdk.on.project.title=Create SDK