Skip to content

Commit 4de0864

Browse files
1139: Code refactoring
1 parent e91c64a commit 4de0864

File tree

1 file changed

+71
-33
lines changed

1 file changed

+71
-33
lines changed

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

Lines changed: 71 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.intellij.openapi.ui.ComboBox;
1010
import com.intellij.psi.PsiDirectory;
1111
import com.intellij.psi.PsiFile;
12+
import com.intellij.ui.DocumentAdapter;
1213
import com.intellij.util.indexing.FileBasedIndex;
1314
import com.magento.idea.magento2plugin.actions.context.php.NewObserverAction;
1415
import com.magento.idea.magento2plugin.actions.generation.ModuleObserverData;
@@ -28,28 +29,32 @@
2829
import com.magento.idea.magento2plugin.magento.packages.Package;
2930
import com.magento.idea.magento2plugin.stubs.indexes.EventNameIndex;
3031
import com.magento.idea.magento2plugin.ui.FilteredComboBox;
32+
import com.magento.idea.magento2plugin.util.CamelCaseToSnakeCase;
3133
import java.awt.event.ActionEvent;
3234
import java.awt.event.KeyEvent;
3335
import java.awt.event.WindowAdapter;
3436
import java.awt.event.WindowEvent;
3537
import java.util.ArrayList;
3638
import java.util.Collection;
39+
import java.util.Locale;
3740
import javax.swing.JButton;
3841
import javax.swing.JComboBox;
3942
import javax.swing.JComponent;
4043
import javax.swing.JLabel;
4144
import javax.swing.JPanel;
4245
import javax.swing.JTextField;
4346
import javax.swing.KeyStroke;
47+
import javax.swing.event.DocumentEvent;
48+
import org.jetbrains.annotations.NotNull;
4449

4550
@SuppressWarnings({
4651
"PMD.TooManyFields",
4752
"PMD.ExcessiveImports",
48-
"PMD.UnusedPrivateMethod",
4953
"PMD.AvoidInstantiatingObjectsInLoops",
5054
"PMD.ReturnEmptyCollectionRatherThanNull"
5155
})
5256
public class NewObserverDialog extends AbstractDialog {
57+
5358
private static final String OBSERVER_NAME = "Observer Name";
5459
private static final String CLASS_NAME = "Class Name";
5560
private final Project project;
@@ -127,6 +132,14 @@ public void windowClosing(final WindowEvent event) {
127132
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
128133
);
129134

135+
className.getDocument().addDocumentListener(new DocumentAdapter() {
136+
@SuppressWarnings("PMD.AccessorMethodGeneration")
137+
@Override
138+
public void textChanged(final @NotNull DocumentEvent event) {
139+
autoCompleteObserverName();
140+
}
141+
});
142+
130143
addComponentListener(
131144
new FocusOnAFieldListener(() -> className.requestFocusInWindow())
132145
);
@@ -155,6 +168,10 @@ public static void open(
155168
dialog.setVisible(true);
156169
}
157170

171+
private String getModuleName() {
172+
return modulePackage.concat(Package.fqnSeparator).concat(moduleName);
173+
}
174+
158175
public String getObserverName() {
159176
return observerName.getText().trim();
160177
}
@@ -181,7 +198,8 @@ protected void onOK() {
181198

182199
if (!getDirectoryStructure().isEmpty()) {
183200
observerDirectory = DirectoryGenerator.getInstance().findOrCreateSubdirectories(
184-
baseDir, getDirectoryStructure()
201+
baseDir,
202+
getDirectoryStructure()
185203
);
186204
}
187205
new ModuleObserverGenerator(
@@ -192,38 +210,29 @@ baseDir, getDirectoryStructure()
192210
getEvenName(),
193211
observerDirectory,
194212
ModuleObserverFile.resolveClassNameFromInput(getClassName())
195-
), project).generate(NewObserverAction.ACTION_NAME, true);
196-
197-
new ObserverEventsXmlGenerator(new ObserverEventsXmlData(
198-
getObserverArea(),
199-
getModuleName().replace(
200-
Package.fqnSeparator,
201-
Package.vendorModuleNameSeparator
202213
),
203-
getEvenName(),
204-
getObserverName(),
205-
getObserverClassFqn().concat(Package.fqnSeparator).concat(
206-
ModuleObserverFile.resolveClassNameFromInput(getClassName())
207-
)
208-
), project).generate(NewObserverAction.ACTION_NAME);
214+
project
215+
).generate(NewObserverAction.ACTION_NAME, true);
216+
217+
new ObserverEventsXmlGenerator(
218+
new ObserverEventsXmlData(
219+
getObserverArea(),
220+
getModuleName().replace(
221+
Package.fqnSeparator,
222+
Package.vendorModuleNameSeparator
223+
),
224+
getEvenName(),
225+
getObserverName(),
226+
getObserverClassFqn().concat(Package.fqnSeparator).concat(
227+
ModuleObserverFile.resolveClassNameFromInput(getClassName())
228+
)
229+
),
230+
project
231+
).generate(NewObserverAction.ACTION_NAME);
209232
exit();
210233
}
211234
}
212235

213-
private void createUIComponents() {
214-
observerArea = new ComboBox<>();
215-
216-
for (final Areas areaEntry : Areas.values()) {
217-
observerArea.addItem(new ComboBoxItemData(areaEntry.toString(), areaEntry.toString()));
218-
}
219-
220-
final Collection<String> events = FileBasedIndex.getInstance().getAllKeys(
221-
EventNameIndex.KEY, project
222-
);
223-
224-
this.eventName = new FilteredComboBox(new ArrayList<>(events));
225-
}
226-
227236
private boolean validateFields() {
228237
final PsiFile[] directoryFiles = getDirectoryFiles(baseDir);
229238

@@ -276,10 +285,6 @@ private PsiFile[] getDirectoryFiles(final PsiDirectory targetDirectory) {
276285
return directory.getFiles();
277286
}
278287

279-
private String getModuleName() {
280-
return modulePackage.concat(Package.fqnSeparator).concat(moduleName);
281-
}
282-
283288
private String getObserverClassFqn() {
284289
final String folderStructureFqn = getDirectoryStructure().replace(
285290
Package.V_FILE_SEPARATOR, Package.fqnSeparator
@@ -292,4 +297,37 @@ private String getObserverClassFqn() {
292297

293298
return getModuleName().concat(Package.fqnSeparator).concat(folderFqn);
294299
}
300+
301+
private void autoCompleteObserverName() {
302+
final String className = getClassName();
303+
304+
if (className.isEmpty()) {
305+
return;
306+
}
307+
final String modifiedClassName = ModuleObserverFile.resolveClassNameFromInput(className);
308+
final String classNameInSnakeCase = CamelCaseToSnakeCase.getInstance()
309+
.convert(modifiedClassName);
310+
311+
final String modulePackageModified = modulePackage.substring(0, 1)
312+
.toLowerCase(Locale.getDefault()) + modulePackage.substring(1);
313+
final String moduleNameModified = moduleName.substring(0, 1)
314+
.toLowerCase(Locale.getDefault()) + moduleName.substring(1);
315+
316+
observerName.setText(
317+
modulePackageModified + "_" + moduleNameModified + "_" + classNameInSnakeCase
318+
);
319+
}
320+
321+
@SuppressWarnings({"PMD.UnusedPrivateMethod"})
322+
private void createUIComponents() {
323+
observerArea = new ComboBox<>();
324+
325+
for (final Areas areaEntry : Areas.values()) {
326+
observerArea.addItem(new ComboBoxItemData(areaEntry.toString(), areaEntry.toString()));
327+
}
328+
final Collection<String> events = FileBasedIndex.getInstance().getAllKeys(
329+
EventNameIndex.KEY, project
330+
);
331+
this.eventName = new FilteredComboBox(new ArrayList<>(events));
332+
}
295333
}

0 commit comments

Comments
 (0)