diff --git a/plugins/android-designer/android-designer.iml b/plugins/android-designer/android-designer.iml index dc07d072b1ba..65508ce12892 100644 --- a/plugins/android-designer/android-designer.iml +++ b/plugins/android-designer/android-designer.iml @@ -21,6 +21,7 @@ + diff --git a/plugins/android-designer/src/com/intellij/android/designer/propertyTable/editors/ResourceDialog.java b/plugins/android-designer/src/com/intellij/android/designer/propertyTable/editors/ResourceDialog.java index d8b18c8eb01d..e2803d2928b4 100644 --- a/plugins/android-designer/src/com/intellij/android/designer/propertyTable/editors/ResourceDialog.java +++ b/plugins/android-designer/src/com/intellij/android/designer/propertyTable/editors/ResourceDialog.java @@ -26,6 +26,7 @@ import com.intellij.ide.util.treeView.NodeRenderer; import com.intellij.openapi.module.Module; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.util.Disposer; +import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.*; import com.intellij.ui.components.JBTabbedPane; import com.intellij.ui.speedSearch.SpeedSearchUtil; @@ -34,6 +35,7 @@ import com.intellij.util.ArrayUtil; import com.intellij.util.ui.tree.TreeUtil; import org.jetbrains.android.facet.AndroidFacet; import org.jetbrains.android.resourceManagers.ResourceManager; +import org.jetbrains.android.util.AndroidCommonUtils; import org.jetbrains.android.util.AndroidUtils; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; @@ -59,6 +61,8 @@ import java.util.List; public class ResourceDialog extends DialogWrapper implements TreeSelectionListener { private static final String ANDROID = "@android:"; + private static final Icon RESOURCE_ITEM_ICON = AllIcons.Css.Property; + private final JBTabbedPane myContentPanel; private final ResourcePanel myProjectPanel; private final ResourcePanel mySystemPanel; @@ -276,19 +280,30 @@ public class ResourceDialog extends DialogWrapper implements TreeSelectionListen public ResourceGroup(ResourceType type, ResourceManager manager) { myType = type; - Collection resourceNames = manager.getValueResourceNames(type.getName()); + String resourceType = type.getName(); + + Collection resourceNames = manager.getValueResourceNames(resourceType); for (String resourceName : resourceNames) { - myItems.add(new ResourceItem(this, resourceName)); + myItems.add(new ResourceItem(this, resourceName, RESOURCE_ITEM_ICON)); } - for (String file : manager.getFileResourcesNames(type.getName())) { - myItems.add(new ResourceItem(this, file)); + Set fileNames = new HashSet(); + List dirs = manager.getResourceSubdirs(resourceType); + for (VirtualFile dir : dirs) { + for (VirtualFile resourceFile : dir.getChildren()) { + if (!resourceFile.isDirectory()) { + String fileName = AndroidCommonUtils.getResourceName(resourceType, resourceFile.getName()); + if (fileNames.add(fileName)) { + myItems.add(new ResourceItem(this, fileName, resourceFile.getFileType().getIcon())); + } + } + } } if (type == ResourceType.ID) { for (String id : manager.getIds()) { if (!resourceNames.contains(id)) { - myItems.add(new ResourceItem(this, id)); + myItems.add(new ResourceItem(this, id, RESOURCE_ITEM_ICON)); } } } @@ -318,10 +333,12 @@ public class ResourceDialog extends DialogWrapper implements TreeSelectionListen private static class ResourceItem { private final ResourceGroup myGroup; private final String myName; + private final Icon myIcon; - public ResourceItem(@NotNull ResourceGroup group, @NotNull String name) { + public ResourceItem(@NotNull ResourceGroup group, @NotNull String name, Icon icon) { myGroup = group; myName = name; + myIcon = icon; } public ResourceGroup getGroup() { @@ -332,6 +349,10 @@ public class ResourceDialog extends DialogWrapper implements TreeSelectionListen return myGroup.getName() + "/" + myName; } + public Icon getIcon() { + return myIcon; + } + @Override public String toString() { return myName; @@ -379,6 +400,9 @@ public class ResourceDialog extends DialogWrapper implements TreeSelectionListen if (element instanceof ResourceGroup) { descriptor.setIcon(AllIcons.Nodes.TreeOpen, AllIcons.Nodes.TreeClosed); } + else if (element instanceof ResourceItem) { + descriptor.setIcon(((ResourceItem)element).getIcon()); + } return descriptor; }