diff --git a/CHANGELOG.md b/CHANGELOG.md index 94452dddc..1e476da1d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0). - Compatibility with PhpStorm/IntelliJ 2025.* [#2495](https://github.com/magento/magento2-phpstorm-plugin/pull/2495) - "Copy Path/Reference" does not show the preview value [#2497](https://github.com/magento/magento2-phpstorm-plugin/pull/2497) - Must not start write action from within read action in the other thread [#2498](https://github.com/magento/magento2-phpstorm-plugin/pull/2498) +- URN map generation during indexing [#2499](https://github.com/magento/magento2-phpstorm-plugin/pull/2499) ## 2025.0.0 diff --git a/src/main/java/com/magento/idea/magento2plugin/project/RegenerateUrnMapListener.java b/src/main/java/com/magento/idea/magento2plugin/project/RegenerateUrnMapListener.java index 908067823..1772db65b 100644 --- a/src/main/java/com/magento/idea/magento2plugin/project/RegenerateUrnMapListener.java +++ b/src/main/java/com/magento/idea/magento2plugin/project/RegenerateUrnMapListener.java @@ -10,6 +10,7 @@ import com.intellij.notification.NotificationGroupManager; import com.intellij.notification.NotificationType; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiDirectory; @@ -46,17 +47,31 @@ public RegenerateUrnMapListener(final @NotNull Project project) { * @param event MouseEvent */ @Override + @SuppressWarnings("PMD.UseNotifyAllInsteadOfNotify") public void mouseClicked(final MouseEvent event) { - final ExternalResourceManager manager = - ExternalResourceManager.getInstance(); - final PsiManager psiManager = PsiManager.getInstance(project); - final MagentoComponentManager componentManager = - MagentoComponentManager.getInstance(project); + if (DumbService.getInstance(project).isDumb()) { + NotificationGroupManager.getInstance() + .getNotificationGroup("Magento Notifications") + .createNotification( + "URN map generation unavailable", + "Indexing is in progress." + + " Please wait for it to complete" + + " before running URN mapping generation.", + NotificationType.WARNING + ) + .notify(project); + return; + } ApplicationManager.getApplication().runWriteAction( new Runnable() { @Override public void run() { + final PsiManager psiManager = PsiManager.getInstance(project); + final MagentoComponentManager componentManager = + MagentoComponentManager.getInstance(project); + final ExternalResourceManager manager = + ExternalResourceManager.getInstance(); final Collection<VirtualFile> xsdFiles = FilenameIndex.getAllFilesByExt(project, "xsd"); final Collection<MagentoComponent> components