From 03ce9e3099886cb102d3b3e73cf07300b7f72f03 Mon Sep 17 00:00:00 2001 From: Sergey Simonchik Date: Wed, 9 Nov 2022 21:41:46 +0100 Subject: [PATCH] light edit: support LightEditGotoOpenedFileAction in new file chooser GitOrigin-RevId: 4c8941ba45e432a9eb80c4b25e60d7841e3256e2 --- .../LightEditGotoOpenedFileAction.java | 38 ++++++++++++++----- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/lightEdit/actions/LightEditGotoOpenedFileAction.java b/platform/platform-impl/src/com/intellij/ide/lightEdit/actions/LightEditGotoOpenedFileAction.java index ae0c75819bcb..70ebd8b60be7 100644 --- a/platform/platform-impl/src/com/intellij/ide/lightEdit/actions/LightEditGotoOpenedFileAction.java +++ b/platform/platform-impl/src/com/intellij/ide/lightEdit/actions/LightEditGotoOpenedFileAction.java @@ -4,6 +4,7 @@ package com.intellij.ide.lightEdit.actions; import com.intellij.ide.lightEdit.LightEdit; import com.intellij.ide.lightEdit.LightEditCompatible; import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.fileChooser.FileChooserPanel; import com.intellij.openapi.fileChooser.FileSystemTree; import com.intellij.openapi.fileChooser.actions.FileChooserAction; import com.intellij.openapi.fileEditor.FileEditorManager; @@ -13,8 +14,19 @@ import com.intellij.util.ArrayUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.nio.file.Path; + public final class LightEditGotoOpenedFileAction extends FileChooserAction implements LightEditCompatible { + @Override + protected void actionPerformed(@NotNull FileChooserPanel panel, @NotNull AnActionEvent e) { + Path file = getSelectedNioPath(e.getProject()); + Path parent = file != null ? file.getParent() : null; + if (parent != null) { + panel.load(parent); + } + } + @Override protected void actionPerformed(@NotNull FileSystemTree fileSystemTree, @NotNull AnActionEvent e) { Project project = e.getProject(); @@ -24,21 +36,29 @@ public final class LightEditGotoOpenedFileAction extends FileChooserAction imple } } + @Override + protected void update(@NotNull FileChooserPanel panel, @NotNull AnActionEvent e) { + e.getPresentation().setEnabled(getSelectedNioPath(e.getProject()) != null); + } + @Override protected void update(@NotNull FileSystemTree fileSystemTree, @NotNull AnActionEvent e) { - Project project = e.getProject(); - if (LightEdit.owns(project)) { - e.getPresentation().setEnabled(getSelectedFile(fileSystemTree, project) != null); - } - else { - e.getPresentation().setEnabledAndVisible(false); - } + e.getPresentation().setEnabled(getSelectedFile(fileSystemTree, e.getProject()) != null); + } + + private static @Nullable Path getSelectedNioPath(@Nullable Project project) { + VirtualFile file = getSelectedFile(project); + return file != null ? file.toNioPath() : null; } private static @Nullable VirtualFile getSelectedFile(@NotNull FileSystemTree fileSystemTree, @Nullable Project project) { + VirtualFile file = getSelectedFile(project); + return file != null && file.getParent() != null && fileSystemTree.isUnderRoots(file) ? file : null; + } + + private static @Nullable VirtualFile getSelectedFile(@Nullable Project project) { if (LightEdit.owns(project)) { - VirtualFile file = ArrayUtil.getFirstElement(FileEditorManager.getInstance(project).getSelectedFiles()); - return file != null && file.getParent() != null && fileSystemTree.isUnderRoots(file) ? file : null; + return ArrayUtil.getFirstElement(FileEditorManager.getInstance(project).getSelectedFiles()); } return null; }