From b7f872a4a627a24ca86f060fa2d64bd8c1d8340c Mon Sep 17 00:00:00 2001 From: Eugene Kudelevsky Date: Fri, 21 Dec 2012 18:45:14 +0400 Subject: [PATCH] IDEA-89208 fix apk path browse button in facet settings --- .../android/facet/AndroidFacetEditorTab.java | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/plugins/android/src/org/jetbrains/android/facet/AndroidFacetEditorTab.java b/plugins/android/src/org/jetbrains/android/facet/AndroidFacetEditorTab.java index a94a99e21573..0b7f666e91d3 100644 --- a/plugins/android/src/org/jetbrains/android/facet/AndroidFacetEditorTab.java +++ b/plugins/android/src/org/jetbrains/android/facet/AndroidFacetEditorTab.java @@ -26,6 +26,8 @@ import com.intellij.openapi.module.Module; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ModuleRootManager; +import com.intellij.openapi.ui.ComponentWithBrowseButton; +import com.intellij.openapi.ui.TextComponentAccessor; import com.intellij.openapi.ui.TextFieldWithBrowseButton; import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.io.FileUtil; @@ -227,15 +229,23 @@ public class AndroidFacetEditorTab extends FacetEditorTab { apkPathComboBoxComponent.setMinimumSize(new Dimension(10, apkPathComboBoxComponent.getMinimumSize().height)); apkPathComboBoxComponent.setPreferredSize(new Dimension(10, apkPathComboBoxComponent.getPreferredSize().height)); - myApkPathCombo.addBrowseFolderListener(project, new FileChooserDescriptor(true, false, false, false, false, false) { - @Override - public boolean isFileVisible(VirtualFile file, boolean showHiddenFiles) { - if (!super.isFileVisible(file, showHiddenFiles)) { - return false; - } - return file.isDirectory() || "apk".equals(file.getExtension()); + final FileChooserDescriptor apkPathChooserDescriptor = new FileChooserDescriptor(false, true, false, false, false, false); + + final TextComponentAccessor apkPathComboAccessor = new TextComponentAccessor() { + public String getText(JComboBox comboBox) { + Object item = comboBox.getEditor().getItem(); + final String filePath = item.toString(); + return new File(filePath).getParent(); } - }); + + public void setText(JComboBox comboBox, String text) { + final String defaultApkName = AndroidCompileUtil.getApkName(myContext.getModule()); + comboBox.getEditor().setItem(new File(text, defaultApkName).getPath()); + } + }; + myApkPathCombo.addBrowseFolderListener(project, new ComponentWithBrowseButton.BrowseFolderActionListener( + "Select Directory for APK", null, myApkPathCombo, project, + apkPathChooserDescriptor, apkPathComboAccessor)); } private void updateAptPanel() {