From 281d037dd72f69c6030a3592b33bd41980193f5a Mon Sep 17 00:00:00 2001 From: "Denis.Zhdanov" Date: Thu, 16 Feb 2012 12:38:09 +0400 Subject: [PATCH] IDEA-76142: Gradle support - cannot update IDEA projects once one of build.gradle files changes Gradle entity type knows about the icon to use now --- .../gradle/model/GradleEntityType.java | 27 ++++++++++++++++++- .../sync/GradleProjectStructureTreeModel.java | 20 +++++++------- 2 files changed, 35 insertions(+), 12 deletions(-) diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/model/GradleEntityType.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/model/GradleEntityType.java index 13a8fb54620b..59006b9f09a6 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/model/GradleEntityType.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/model/GradleEntityType.java @@ -1,9 +1,34 @@ package org.jetbrains.plugins.gradle.model; +import com.intellij.openapi.components.ServiceManager; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.plugins.gradle.diff.PlatformFacade; +import org.jetbrains.plugins.gradle.ui.GradleIcons; + +import javax.swing.*; + /** * @author Denis Zhdanov * @since 2/7/12 11:18 AM */ public enum GradleEntityType { - PROJECT, MODULE, MODULE_DEPENDENCY, LIBRARY_DEPENDENCY, SYNTHETIC + MODULE(GradleIcons.MODULE_ICON), MODULE_DEPENDENCY(GradleIcons.MODULE_ICON), LIBRARY_DEPENDENCY(GradleIcons.LIB_ICON), SYNTHETIC(null), + PROJECT(null) { + @Nullable + @Override + public Icon getIcon() { + return ServiceManager.getService(PlatformFacade.class).getProjectIcon(); + } + }; + + @Nullable private final Icon myIcon; + + GradleEntityType(@Nullable Icon icon) { + myIcon = icon; + } + + @Nullable + public Icon getIcon() { + return myIcon; + } } diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/sync/GradleProjectStructureTreeModel.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/sync/GradleProjectStructureTreeModel.java index 431c5083497d..500429da01ab 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/sync/GradleProjectStructureTreeModel.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/sync/GradleProjectStructureTreeModel.java @@ -13,7 +13,6 @@ import org.jetbrains.plugins.gradle.config.GradleTextAttributes; import org.jetbrains.plugins.gradle.diff.*; import org.jetbrains.plugins.gradle.model.GradleEntityType; import org.jetbrains.plugins.gradle.model.id.*; -import org.jetbrains.plugins.gradle.ui.GradleIcons; import org.jetbrains.plugins.gradle.ui.GradleProjectStructureNode; import org.jetbrains.plugins.gradle.ui.GradleProjectStructureNodeDescriptor; import org.jetbrains.plugins.gradle.util.GradleConstants; @@ -77,14 +76,14 @@ public class GradleProjectStructureTreeModel extends DefaultTreeModel { myModules.clear(); GradleProjectId projectId = GradleEntityIdMapper.mapEntityToId(getProject()); - GradleProjectStructureNode root = buildNode(projectId, getProject().getName(), myPlatformFacade.getProjectIcon()); + GradleProjectStructureNode root = buildNode(projectId, getProject().getName()); final Collection modules = myPlatformFacade.getModules(getProject()); final List> dependencies = new ArrayList>(); RootPolicy visitor = new RootPolicy() { @Override public Object visitModuleOrderEntry(ModuleOrderEntry moduleOrderEntry, Object value) { GradleModuleDependencyId id = GradleEntityIdMapper.mapEntityToId(moduleOrderEntry); - dependencies.add(buildNode(id, moduleOrderEntry.getModuleName(), GradleIcons.MODULE_ICON)); + dependencies.add(buildNode(id, moduleOrderEntry.getModuleName())); return value; } @@ -94,14 +93,14 @@ public class GradleProjectStructureTreeModel extends DefaultTreeModel { return value; } GradleLibraryDependencyId id = GradleEntityIdMapper.mapEntityToId(libraryOrderEntry); - dependencies.add(buildNode(id, id.getLibraryName(), GradleIcons.LIB_ICON)); + dependencies.add(buildNode(id, id.getLibraryName())); return value; } }; for (Module module : modules) { dependencies.clear(); final GradleModuleId moduleId = GradleEntityIdMapper.mapEntityToId(module); - final GradleProjectStructureNode moduleNode = buildNode(moduleId, moduleId.getModuleName(), GradleIcons.MODULE_ICON); + final GradleProjectStructureNode moduleNode = buildNode(moduleId, moduleId.getModuleName()); myModules.put(module.getName(), moduleNode); // Assuming that module names are unique. root.add(moduleNode); for (OrderEntry orderEntry : myPlatformFacade.getOrderEntries(module)) { @@ -129,10 +128,9 @@ public class GradleProjectStructureTreeModel extends DefaultTreeModel { return new GradleProjectStructureNodeDescriptor(entity, name, icon); } - private GradleProjectStructureNode buildNode(@NotNull T entityId, - @NotNull String name, - @NotNull Icon icon) - { + private GradleProjectStructureNode buildNode(@NotNull T entityId, @NotNull String name) { + final Icon icon = entityId.getType().getIcon(); + assert icon != null; final GradleProjectStructureNode result = new GradleProjectStructureNode(buildDescriptor(entityId, name, icon), entityId.getType()); result.addListener(myNodeListener); @@ -157,7 +155,7 @@ public class GradleProjectStructureTreeModel extends DefaultTreeModel { private GradleProjectStructureNode getModuleNode(@NotNull GradleModuleId id) { GradleProjectStructureNode moduleNode = myModules.get(id.getModuleName()); if (moduleNode == null) { - moduleNode = buildNode(id, id.getModuleName(), GradleIcons.MODULE_ICON); + moduleNode = buildNode(id, id.getModuleName()); myModules.put(id.getModuleName(), moduleNode); ((GradleProjectStructureNode)root).add(moduleNode); } @@ -231,7 +229,7 @@ public class GradleProjectStructureTreeModel extends DefaultTreeModel { return; } } - GradleProjectStructureNode newNode = buildNode(id, id.getLibraryName(), GradleIcons.LIB_ICON); + GradleProjectStructureNode newNode = buildNode(id, id.getLibraryName()); newNode.getDescriptor().setAttributes(attributes); dependenciesNode.add(newNode); nodeStructureChanged(dependenciesNode);