Skip to content

Commit 34a890e

Browse files
committed
929: fis showing package name on windows
1 parent c7c3d48 commit 34a890e

File tree

4 files changed

+67
-3
lines changed

4 files changed

+67
-3
lines changed

src/com/magento/idea/magento2plugin/actions/generation/NewModuleAction.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.magento.idea.magento2plugin.actions.generation.util.IsClickedDirectoryInsideProject;
2020
import com.magento.idea.magento2plugin.project.Settings;
2121
import com.magento.idea.magento2plugin.util.magento.GetModuleNameByDirectoryUtil;
22+
import com.magento.idea.magento2plugin.util.magento.MagentoBasePathUtil;
2223
import org.jetbrains.annotations.NotNull;
2324

2425
public class NewModuleAction extends com.intellij.openapi.actionSystem.AnAction {
@@ -89,6 +90,13 @@ public void update(final AnActionEvent event) {
8990
final String moduleName = GetModuleNameByDirectoryUtil
9091
.execute((PsiDirectory) psiElement, project);
9192
if (moduleName == null) {
93+
final String sourceDirPath = ((PsiDirectory) psiElement).getVirtualFile().getPath();
94+
95+
if (!MagentoBasePathUtil.isCustomCodeSourceDirValid(sourceDirPath)
96+
&& !MagentoBasePathUtil.isCustomVendorDirValid(sourceDirPath)) {
97+
event.getPresentation().setVisible(false);
98+
return;
99+
}
92100
event.getPresentation().setVisible(true);
93101
return;
94102
}

src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModuleDialog.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
package com.magento.idea.magento2plugin.actions.generation.dialog;//NOPMD
77

88
import com.intellij.openapi.project.Project;
9+
import com.intellij.openapi.vfs.VirtualFile;
910
import com.intellij.psi.PsiDirectory;
1011
import com.intellij.psi.PsiFile;
1112
import com.magento.idea.magento2plugin.actions.generation.NewModuleAction;
@@ -26,6 +27,7 @@
2627
import com.magento.idea.magento2plugin.magento.packages.Package;
2728
import com.magento.idea.magento2plugin.project.Settings;
2829
import com.magento.idea.magento2plugin.util.CamelCaseToHyphen;
30+
import com.magento.idea.magento2plugin.util.magento.MagentoBasePathUtil;
2931
import com.magento.idea.magento2plugin.util.magento.MagentoVersionUtil;
3032
import java.awt.event.ActionEvent;
3133
import java.awt.event.KeyEvent;
@@ -163,8 +165,9 @@ public void windowClosing(final WindowEvent event) {
163165
}
164166

165167
private void detectPackageName(final @NotNull PsiDirectory initialBaseDir) {
166-
final PsiDirectory parentDir = initialBaseDir.getParent();
167-
if (parentDir != null && parentDir.toString().endsWith(Package.packagesRoot)) {
168+
final VirtualFile initialBaseDirVf = initialBaseDir.getVirtualFile();
169+
170+
if (MagentoBasePathUtil.isCustomVendorDirValid(initialBaseDirVf.getPath())) {
168171
packageName.setVisible(false);
169172
packageNameLabel.setVisible(false);
170173
this.detectedPackageName = initialBaseDir.getName();

src/com/magento/idea/magento2plugin/magento/packages/Package.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
package com.magento.idea.magento2plugin.magento.packages;
77

88
public class Package { //NOPMD
9+
public static final String V_FILE_SEPARATOR = "/";
910
public static String packagesRoot = "app/code";
1011
public static String libWebRoot = "lib/web";
1112
public static String frameworkRootComposer = "vendor/magento/framework";

src/com/magento/idea/magento2plugin/util/magento/MagentoBasePathUtil.java

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@
99
import com.intellij.openapi.vfs.LocalFileSystem;
1010
import com.intellij.openapi.vfs.VfsUtil;
1111
import com.intellij.openapi.vfs.VirtualFile;
12-
import com.magento.idea.magento2plugin.magento.packages.File;
1312
import com.magento.idea.magento2plugin.magento.packages.Package;
13+
import java.io.File;
14+
import java.util.Arrays;
15+
import org.jetbrains.annotations.NotNull;
1416

1517
public final class MagentoBasePathUtil {
1618

@@ -38,4 +40,54 @@ public static boolean isMagentoFolderValid(final String path) {
3840
}
3941
return false;
4042
}
43+
44+
/**
45+
* Check if specified path belongs to the correct vendor name.
46+
*
47+
* @param path String
48+
*
49+
* @return boolean
50+
*/
51+
public static boolean isCustomVendorDirValid(final @NotNull String path) {
52+
final String[] pathParts = path.split(Package.V_FILE_SEPARATOR);
53+
54+
if (pathParts.length < 3) {
55+
return false;
56+
}
57+
58+
final String[] sourceCandidateParts = Arrays.copyOfRange(
59+
pathParts,
60+
pathParts.length - 3,
61+
pathParts.length - 1
62+
);
63+
64+
return Package.packagesRoot.equals(
65+
String.join(Package.V_FILE_SEPARATOR, sourceCandidateParts)
66+
);
67+
}
68+
69+
/**
70+
* Check if specified path belongs to the correct packages folder.
71+
*
72+
* @param path String
73+
*
74+
* @return boolean
75+
*/
76+
public static boolean isCustomCodeSourceDirValid(final @NotNull String path) {
77+
final String[] pathParts = path.split(Package.V_FILE_SEPARATOR);
78+
79+
if (pathParts.length < 2) {
80+
return false;
81+
}
82+
83+
final String[] sourceCandidateParts = Arrays.copyOfRange(
84+
pathParts,
85+
pathParts.length - 2,
86+
pathParts.length
87+
);
88+
89+
return Package.packagesRoot.equals(
90+
String.join(Package.V_FILE_SEPARATOR, sourceCandidateParts)
91+
);
92+
}
4193
}

0 commit comments

Comments
 (0)