mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-76142: Gradle support - cannot update IDEA projects once one of build.gradle files changes
'Sync project structure' tree model is now automatically updated on node representation attributes change
This commit is contained in:
+6
-3
@@ -240,8 +240,7 @@ public class GradleProjectStructureTreeModel extends DefaultTreeModel {
|
||||
}
|
||||
assert id != null;
|
||||
final GradleProjectStructureNode<GradleModuleId> moduleNode = getModuleNode(id);
|
||||
moduleNode.getDescriptor().setAttributes(key);
|
||||
nodeChanged(moduleNode);
|
||||
moduleNode.setAttributes(key);
|
||||
}
|
||||
|
||||
private void processObsoleteProjectRenameChange(@NotNull GradleProjectRenameChange change) {
|
||||
@@ -258,7 +257,6 @@ public class GradleProjectStructureTreeModel extends DefaultTreeModel {
|
||||
final GradleLibraryDependencyId id = node.getDescriptor().getElement();
|
||||
if (id.getLibraryName().equals(change.getLibraryName())) {
|
||||
node.removeConflictChange(change);
|
||||
nodeChanged(node);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -330,6 +328,11 @@ public class GradleProjectStructureTreeModel extends DefaultTreeModel {
|
||||
myNodeHolder[0] = node;
|
||||
nodesWereRemoved(node.getParent(), myIndexHolder, myNodeHolder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNodeChanged(@NotNull GradleProjectStructureNode<?> node) {
|
||||
nodeChanged(node);
|
||||
}
|
||||
}
|
||||
|
||||
private class NewChangesDispatcher implements GradleProjectStructureChangeVisitor {
|
||||
|
||||
@@ -145,7 +145,10 @@ public class GradleProjectStructureNode<T extends GradleEntityId> extends Defaul
|
||||
*/
|
||||
public void addConflictChange(@NotNull GradleProjectStructureChange change) {
|
||||
myConflictChanges.add(change);
|
||||
myDescriptor.setAttributes(GradleTextAttributes.GRADLE_CHANGE_CONFLICT);
|
||||
if (myConflictChanges.size() == 1) {
|
||||
myDescriptor.setAttributes(GradleTextAttributes.GRADLE_CHANGE_CONFLICT);
|
||||
onNodeChanged(this);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -157,6 +160,7 @@ public class GradleProjectStructureNode<T extends GradleEntityId> extends Defaul
|
||||
myConflictChanges.remove(change);
|
||||
if (myConflictChanges.isEmpty()) {
|
||||
myDescriptor.setAttributes(GradleTextAttributes.GRADLE_NO_CHANGE);
|
||||
onNodeChanged(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -213,6 +217,11 @@ public class GradleProjectStructureNode<T extends GradleEntityId> extends Defaul
|
||||
};
|
||||
}
|
||||
|
||||
public void setAttributes(@NotNull TextAttributesKey key) {
|
||||
myDescriptor.setAttributes(key);
|
||||
onNodeChanged(this);
|
||||
}
|
||||
|
||||
public void addListener(@NotNull Listener listener) {
|
||||
myListeners.add(listener);
|
||||
}
|
||||
@@ -228,9 +237,16 @@ public class GradleProjectStructureNode<T extends GradleEntityId> extends Defaul
|
||||
listener.onNodeRemoved(node, index);
|
||||
}
|
||||
}
|
||||
|
||||
private void onNodeChanged(@NotNull GradleProjectStructureNode<?> node) {
|
||||
for (Listener listener : myListeners) {
|
||||
listener.onNodeChanged(node);
|
||||
}
|
||||
}
|
||||
|
||||
public interface Listener {
|
||||
void onNodeAdded(@NotNull GradleProjectStructureNode<?> node, int index);
|
||||
void onNodeRemoved(@NotNull GradleProjectStructureNode<?> node, int index);
|
||||
void onNodeChanged(@NotNull GradleProjectStructureNode<?> node);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user