mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
prevent duplicates when adding ant files
GitOrigin-RevId: 9b2ff7f949ff1a58ea5ac952b9005f0e07728e8a
This commit is contained in:
committed by
intellij-monorepo-bot
parent
cf018f2506
commit
1279c42937
@@ -66,6 +66,7 @@ public abstract class AntConfiguration extends SimpleModificationTracker {
|
||||
|
||||
public abstract List<AntBuildFileBase> getBuildFileList();
|
||||
|
||||
@Nullable
|
||||
public abstract AntBuildFile addBuildFile(final VirtualFile file) throws AntNoFileException;
|
||||
|
||||
public abstract void removeBuildFile(final AntBuildFile file);
|
||||
|
||||
@@ -48,8 +48,9 @@ public class AddAntBuildFile extends AnAction {
|
||||
|
||||
for (VirtualFile file : files) {
|
||||
try {
|
||||
antConfiguration.addBuildFile(file);
|
||||
filesAdded++;
|
||||
if (antConfiguration.addBuildFile(file) != null) {
|
||||
filesAdded++;
|
||||
}
|
||||
}
|
||||
catch (AntNoFileException ex) {
|
||||
String message = ex.getMessage();
|
||||
|
||||
@@ -24,10 +24,7 @@ import com.intellij.openapi.progress.Task;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.startup.StartupManager;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.InvalidDataException;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.openapi.util.*;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.VirtualFileEvent;
|
||||
import com.intellij.openapi.vfs.VirtualFileListener;
|
||||
@@ -375,10 +372,11 @@ public class AntConfigurationImpl extends AntConfigurationBase implements Persis
|
||||
return myBuildFiles;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public AntBuildFile addBuildFile(final VirtualFile file) throws AntNoFileException {
|
||||
final AntBuildFile[] result = new AntBuildFile[]{null};
|
||||
final AntNoFileException[] ex = new AntNoFileException[]{null};
|
||||
final Ref<AntBuildFile> result = Ref.create(null);
|
||||
final Ref<AntNoFileException> ex = Ref.create(null);
|
||||
final String title = AntBundle.message("register.ant.build.progress", file.getPresentableUrl());
|
||||
ProgressManager.getInstance().run(new Task.Modal(getProject(), title, false) {
|
||||
@NotNull
|
||||
@@ -394,17 +392,26 @@ public class AntConfigurationImpl extends AntConfigurationBase implements Persis
|
||||
try {
|
||||
indicator.setText(title);
|
||||
incModificationCount();
|
||||
ApplicationManager.getApplication().runReadAction(() -> {
|
||||
boolean added = ApplicationManager.getApplication().runReadAction((Computable<Boolean>)() -> {
|
||||
try {
|
||||
result[0] = addBuildFileImpl(file);
|
||||
for (AntBuildFile buildFile : getBuildFiles()) {
|
||||
final VirtualFile vFile = buildFile.getVirtualFile();
|
||||
if (vFile != null && vFile.equals(file)) {
|
||||
result.set(buildFile);
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
}
|
||||
result.set(addBuildFileImpl(file));
|
||||
updateRegisteredActions();
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
catch (AntNoFileException e) {
|
||||
ex[0] = e;
|
||||
ex.set(e);
|
||||
}
|
||||
return Boolean.FALSE;
|
||||
});
|
||||
if (result[0] != null) {
|
||||
ApplicationManager.getApplication().invokeLater(() -> myEventDispatcher.getMulticaster().buildFileAdded(result[0]));
|
||||
if (added) {
|
||||
ApplicationManager.getApplication().invokeLater(() -> myEventDispatcher.getMulticaster().buildFileAdded(result.get()));
|
||||
}
|
||||
}
|
||||
finally {
|
||||
@@ -412,10 +419,10 @@ public class AntConfigurationImpl extends AntConfigurationBase implements Persis
|
||||
}
|
||||
}
|
||||
});
|
||||
if (ex[0] != null) {
|
||||
throw ex[0];
|
||||
if (ex.get() != null) {
|
||||
throw ex.get();
|
||||
}
|
||||
return result[0];
|
||||
return result.get();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user