Skip to content

Commit e4be0b9

Browse files
Merge pull request #1013 from doninAtwix/929-fix-showing-package-name-on-windows
929: Fix showing package name on windows
2 parents c7c3d48 + c54a3f4 commit e4be0b9

File tree

4 files changed

+70
-4
lines changed

4 files changed

+70
-4
lines changed

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

Lines changed: 11 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,16 @@ 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+
final boolean isCustomCodeSourceDirValid =
95+
MagentoBasePathUtil.isCustomCodeSourceDirValid(sourceDirPath);
96+
final boolean isCustomVendorDirValid =
97+
MagentoBasePathUtil.isCustomVendorDirValid(sourceDirPath);
98+
99+
if (!isCustomCodeSourceDirValid && !isCustomVendorDirValid) { //NOPMD
100+
event.getPresentation().setVisible(false);
101+
return;
102+
}
92103
event.getPresentation().setVisible(true);
93104
return;
94105
}

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

Lines changed: 5 additions & 3 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;
@@ -23,9 +24,9 @@
2324
import com.magento.idea.magento2plugin.indexes.ModuleIndex;
2425
import com.magento.idea.magento2plugin.magento.files.ComposerJson;
2526
import com.magento.idea.magento2plugin.magento.packages.Licenses;
26-
import com.magento.idea.magento2plugin.magento.packages.Package;
2727
import com.magento.idea.magento2plugin.project.Settings;
2828
import com.magento.idea.magento2plugin.util.CamelCaseToHyphen;
29+
import com.magento.idea.magento2plugin.util.magento.MagentoBasePathUtil;
2930
import com.magento.idea.magento2plugin.util.magento.MagentoVersionUtil;
3031
import java.awt.event.ActionEvent;
3132
import java.awt.event.KeyEvent;
@@ -163,8 +164,9 @@ public void windowClosing(final WindowEvent event) {
163164
}
164165

165166
private void detectPackageName(final @NotNull PsiDirectory initialBaseDir) {
166-
final PsiDirectory parentDir = initialBaseDir.getParent();
167-
if (parentDir != null && parentDir.toString().endsWith(Package.packagesRoot)) {
167+
final VirtualFile initialBaseDirVf = initialBaseDir.getVirtualFile();
168+
169+
if (MagentoBasePathUtil.isCustomVendorDirValid(initialBaseDirVf.getPath())) {
168170
packageName.setVisible(false);
169171
packageNameLabel.setVisible(false);
170172
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) { //NOPMD
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) { //NOPMD
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)