Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMilos Kleint2011-02-14 09:22:41 +0000
committerMilos Kleint2011-02-14 09:35:25 +0000
commitf4bf78d32524570281d49129646b7f99d6fbcfd8 (patch)
treed75cec3699c28961a71219d8f0f350da5ab313cd /org.eclipse.m2e.editor
parentc51368bd83f1d5babae6243f87aa6d39e01b99f0 (diff)
downloadm2e-core-f4bf78d32524570281d49129646b7f99d6fbcfd8.tar.gz
m2e-core-f4bf78d32524570281d49129646b7f99d6fbcfd8.tar.xz
m2e-core-f4bf78d32524570281d49129646b7f99d6fbcfd8.zip
the changing operations need to be performed in off-UI thread, had visible feedback delay on the ok button.
Diffstat (limited to 'org.eclipse.m2e.editor')
-rw-r--r--org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/dialogs/ManageDependenciesDialog.java39
1 files changed, 27 insertions, 12 deletions
diff --git a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/dialogs/ManageDependenciesDialog.java b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/dialogs/ManageDependenciesDialog.java
index b78c437c..266b0472 100644
--- a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/dialogs/ManageDependenciesDialog.java
+++ b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/dialogs/ManageDependenciesDialog.java
@@ -18,9 +18,12 @@ import java.util.List;
import java.util.ListIterator;
import org.apache.maven.project.MavenProject;
+import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.jface.viewers.IColorProvider;
import org.eclipse.jface.viewers.ISelectionChangedListener;
@@ -238,7 +241,7 @@ public class ManageDependenciesDialog extends AbstractMavenDialog {
if (targetFacade == null || currentFacade == null) {
return;
}
- boolean same = targetPOM.equals(currentPOM);
+ final boolean same = targetPOM.equals(currentPOM);
final LinkedList<Dependency> modelDeps = getDependenciesList();
@@ -249,7 +252,7 @@ public class ManageDependenciesDialog extends AbstractMavenDialog {
//First we remove the version from the original dependency
- Operation removeVersion = new Operation() {
+ final Operation removeVersion = new Operation() {
public void process(Document document) {
List<Element> deps = findChilds(findChild(document.getDocumentElement(), "dependencies"), "dependency");
for (Element dep : deps) {
@@ -264,7 +267,7 @@ public class ManageDependenciesDialog extends AbstractMavenDialog {
}
}
};
- Operation manage = new Operation() {
+ final Operation manage = new Operation() {
public void process(Document document) {
List<Dependency> modelDependencies = new ArrayList<Dependency>(modelDeps);
Element managedDepsElement = getChild(document.getDocumentElement(), "dependencyManagement", "dependencies");
@@ -291,16 +294,28 @@ public class ManageDependenciesDialog extends AbstractMavenDialog {
}
}
};
- try {
- if (same) {
- performOnDOMDocument(new OperationTuple(currentFacade.getPom(), new CompoundOperation(manage, removeVersion)));
- } else {
- performOnDOMDocument(new OperationTuple(targetFacade.getPom(), manage));
- performOnDOMDocument(new OperationTuple(currentFacade.getPom(), removeVersion));
+ final IFile current = currentFacade.getPom();
+ final IFile target = targetFacade.getPom();
+ Job perform = new Job("Updating POM file(s)") {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ if (same) {
+ performOnDOMDocument(new OperationTuple(current, new CompoundOperation(manage, removeVersion)));
+ } else {
+ performOnDOMDocument(new OperationTuple(target, manage));
+ performOnDOMDocument(new OperationTuple(current, removeVersion));
+ }
+ } catch(Exception e) {
+ LOG.error("Error updating managed dependencies", e);
+ return new Status(IStatus.ERROR, MavenEditorPlugin.PLUGIN_ID, "Error updating managed dependencies", e);
+ }
+ return Status.OK_STATUS;
}
- } catch(Exception e) {
- LOG.error("Error updating managed dependencies", e);
- }
+ };
+ perform.setUser(false);
+ perform.setSystem(true);
+ perform.schedule();
}
protected LinkedList<Dependency> getDependenciesList() {

Back to the top