25
25
import org .jetbrains .annotations .NotNull ;
26
26
import org .jetbrains .annotations .Nullable ;
27
27
import javax .swing .*;
28
+ import javax .swing .event .ListSelectionEvent ;
29
+ import javax .swing .event .ListSelectionListener ;
28
30
import java .awt .*;
29
31
import java .awt .event .*;
30
- import java .util .ArrayList ;
31
32
import java .util .List ;
32
33
import java .util .Vector ;
33
34
34
- public class NewMagentoModuleDialog extends AbstractDialog {
35
+ public class NewMagentoModuleDialog extends AbstractDialog implements ListSelectionListener {
35
36
@ NotNull
36
37
private final Project project ;
37
38
@ NotNull
@@ -63,7 +64,6 @@ public class NewMagentoModuleDialog extends AbstractDialog {
63
64
private JTextField moduleLicenseCustom ;
64
65
private JScrollPane moduleLicenseScrollPanel ;
65
66
private String detectedPackageName ;
66
- private String [] licensesNames ;
67
67
68
68
public NewMagentoModuleDialog (@ NotNull Project project , @ NotNull PsiDirectory initialBaseDir , @ Nullable PsiFile file , @ Nullable IdeView view , @ Nullable Editor editor ) {
69
69
this .project = project ;
@@ -76,24 +76,15 @@ public NewMagentoModuleDialog(@NotNull Project project, @NotNull PsiDirectory in
76
76
this .camelCaseToHyphen = CamelCaseToHyphen .getInstance ();
77
77
this .validator = NewMagentoModuleDialogValidator .getInstance (this );
78
78
this .navigateToCreatedFile = NavigateToCreatedFile .getInstance ();
79
-
80
- Package .License [] licenses = Package .License .values ();
81
- Vector licenseNames = new Vector <String >(licenses .length );
82
-
83
- for (Package .License license : licenses ) {
84
- // licensesNames.push(license.getLicenseName());
85
- licenseNames .add (license .getLicenseName ());
86
- }
87
-
88
- // moduleLicense.setListData(licenses);
89
- moduleLicense .setListData (licenseNames );
90
- moduleLicense .setSelectedIndex (0 );
91
-
92
79
detectPackageName (initialBaseDir );
93
80
setContentPane (contentPane );
94
81
setModal (true );
95
82
getRootPane ().setDefaultButton (buttonOK );
96
83
pushToMiddle ();
84
+ setLicenses ();
85
+
86
+ moduleLicenseCustom .setToolTipText ("Custom License Name" );
87
+ moduleLicenseCustom .setText ("Custom License Name" );
97
88
98
89
buttonOK .addActionListener (new ActionListener () {
99
90
public void actionPerformed (ActionEvent e ) {
@@ -202,8 +193,25 @@ public String getModuleVersion() {
202
193
return this .moduleVersion .getText ().trim ();
203
194
}
204
195
196
+ /**
197
+ * Retrieve selected licenses name for the module
198
+ *
199
+ * @return List
200
+ */
205
201
public List getModuleLicense () {
206
- return this .moduleLicense .getSelectedValuesList ();
202
+ List selectedLicenses = this .moduleLicense .getSelectedValuesList ();
203
+ Package .License customLicense = Package .License .CUSTOM ;
204
+
205
+ /**
206
+ * When custom license is selected, the selected label "Custom License"
207
+ * must be replaced with the custom license name provided
208
+ */
209
+ if (selectedLicenses .contains (customLicense .getLicenseName ())) {
210
+ selectedLicenses .remove (customLicense .getLicenseName ());
211
+ selectedLicenses .add (moduleLicenseCustom .getText ());
212
+ }
213
+
214
+ return selectedLicenses ;
207
215
}
208
216
209
217
public static void open (@ NotNull Project project , @ NotNull PsiDirectory initialBaseDir , @ Nullable PsiFile file , @ Nullable IdeView view , @ Nullable Editor editor ) {
@@ -218,4 +226,43 @@ private String getComposerPackageName() {
218
226
.concat ("/" )
219
227
.concat (camelCaseToHyphen .convert (getModuleName ()));
220
228
}
229
+
230
+ /**
231
+ * Set licenses to select from
232
+ */
233
+ private void setLicenses () {
234
+ Package .License [] licenses = Package .License .values ();
235
+ Vector <String > licenseNames = new Vector <>(licenses .length );
236
+
237
+ for (Package .License license : licenses ) {
238
+ licenseNames .add (license .getLicenseName ());
239
+ }
240
+
241
+ moduleLicense .setListData (licenseNames );
242
+ moduleLicense .setSelectedIndex (0 );
243
+ moduleLicense .addListSelectionListener (this );
244
+ }
245
+
246
+ /**
247
+ * Make the Custom Module License input available when custom license is selected
248
+ */
249
+ private void handleModuleCustomLicenseInputVisibility () {
250
+ boolean isCustomLicenseSelected = false ;
251
+
252
+ for (Object value : moduleLicense .getSelectedValuesList ()) {
253
+ if (Package .License .CUSTOM .getLicenseName ().equals (value .toString ())) {
254
+ isCustomLicenseSelected = true ;
255
+
256
+ break ;
257
+ }
258
+ }
259
+
260
+ moduleLicenseCustom .setEnabled (isCustomLicenseSelected );
261
+ moduleLicenseCustom .setEditable (isCustomLicenseSelected );
262
+ }
263
+
264
+ @ Override
265
+ public void valueChanged (ListSelectionEvent listSelectionEvent ) {
266
+ handleModuleCustomLicenseInputVisibility ();
267
+ }
221
268
}
0 commit comments