diff --git a/plugins/android/src/org/jetbrains/android/actions/CreateXmlResourceDialog.form b/plugins/android/src/org/jetbrains/android/actions/CreateXmlResourceDialog.form index 30342474ccb2..ae498af514e0 100644 --- a/plugins/android/src/org/jetbrains/android/actions/CreateXmlResourceDialog.form +++ b/plugins/android/src/org/jetbrains/android/actions/CreateXmlResourceDialog.form @@ -45,18 +45,9 @@ - - - - - - - - - @@ -70,7 +61,7 @@ - + @@ -90,6 +81,14 @@ + + + + + + + + diff --git a/plugins/android/src/org/jetbrains/android/actions/CreateXmlResourceDialog.java b/plugins/android/src/org/jetbrains/android/actions/CreateXmlResourceDialog.java index e8cce86e1a98..bf5c0e76e7f4 100644 --- a/plugins/android/src/org/jetbrains/android/actions/CreateXmlResourceDialog.java +++ b/plugins/android/src/org/jetbrains/android/actions/CreateXmlResourceDialog.java @@ -66,12 +66,12 @@ public class CreateXmlResourceDialog extends DialogWrapper { private JTextField myNameField; private JComboBox myModuleCombo; private JBLabel myModuleLabel; - private JTextField myFileNameField; private JPanel myDirectoriesPanel; private JBLabel myDirectoriesLabel; private JTextField myValueField; private JBLabel myValueLabel; private JBLabel myNameLabel; + private JComboBox myFileNameCombo; private final Module myModule; private final ResourceType myResourceType; @@ -146,7 +146,7 @@ public class CreateXmlResourceDialog extends DialogWrapper { final String defaultFileName = AndroidResourceUtil.getDefaultResourceFileName(resourceType); if (defaultFileName != null) { - myFileNameField.setText(defaultFileName); + myFileNameCombo.getEditor().setItem(defaultFileName); } } myDirectoriesList = new CheckBoxList(); @@ -188,12 +188,12 @@ public class CreateXmlResourceDialog extends DialogWrapper { myDirectoriesPanel.add(decorator.createPanel()); - updateDirectories(); + updateDirectories(true); myModuleCombo.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - updateDirectories(); + updateDirectories(true); } }); final JCheckBox valuesCheckBox = myCheckBoxes.get(AndroidConstants.FD_RES_VALUES); @@ -240,7 +240,7 @@ public class CreateXmlResourceDialog extends DialogWrapper { checkBox1.setSelected(false); } checkBox.setSelected(true); - myFileNameField.setText(file.getName()); + myFileNameCombo.getEditor().setItem(file.getName()); } private void doDeleteDirectory() { @@ -271,7 +271,7 @@ public class CreateXmlResourceDialog extends DialogWrapper { } } }); - updateDirectories(); + updateDirectories(false); } private void doSelectAllDirs() { @@ -303,12 +303,12 @@ public class CreateXmlResourceDialog extends DialogWrapper { final PsiElement[] createdElements = new CreateResourceDirectoryAction(ResourceFolderType.VALUES).invokeDialog(project, psiResDir); if (createdElements.length > 0) { - updateDirectories(); + updateDirectories(false); } } } - private void updateDirectories() { + private void updateDirectories(boolean updateFileCombo) { final Module module = getModule(); List valuesDirs = Collections.emptyList(); @@ -366,6 +366,21 @@ public class CreateXmlResourceDialog extends DialogWrapper { if (checkBoxList.size() == 1) { checkBoxList.get(0).setSelected(true); } + + if (updateFileCombo) { + final Object oldItem = myFileNameCombo.getEditor().getItem(); + final Set fileNameSet = new HashSet(); + + for (VirtualFile valuesDir : valuesDirs) { + for (VirtualFile file : valuesDir.getChildren()) { + fileNameSet.add(file.getName()); + } + } + final List fileNames = new ArrayList(fileNameSet); + Collections.sort(fileNames); + myFileNameCombo.setModel(new DefaultComboBoxModel(fileNames.toArray())); + myFileNameCombo.getEditor().setItem(oldItem); + } } @Override @@ -382,7 +397,7 @@ public class CreateXmlResourceDialog extends DialogWrapper { return new ValidationInfo(resourceName + " is not correct resource name", myNameField); } else if (fileName.length() == 0) { - return new ValidationInfo("specify file name", myFileNameField); + return new ValidationInfo("specify file name", myFileNameCombo); } else if (selectedModule == null) { return new ValidationInfo("specify module", myModuleCombo); @@ -458,7 +473,7 @@ public class CreateXmlResourceDialog extends DialogWrapper { return myModuleCombo; } else { - return myFileNameField; + return myFileNameCombo; } } @@ -514,7 +529,7 @@ public class CreateXmlResourceDialog extends DialogWrapper { @NotNull public String getFileName() { - return myFileNameField.getText().trim(); + return ((String)myFileNameCombo.getEditor().getItem()).trim(); } @NotNull