Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Sohn2015-02-18 22:57:51 +0000
committerGerrit Code Review @ Eclipse.org2015-02-18 22:57:53 +0000
commitd55e3117deff4c47b6420c9b60df62494bbf91d3 (patch)
tree9281c63474e8f97b1eb9a8ebdf60c0fd6b05c8c9
parentd93dd63d247f0d80de7dabef06a0a05e52a1f2b8 (diff)
parentf5bc7144cfac3844aecfe2ffc93a40c85b1652eb (diff)
downloadegit-d55e3117deff4c47b6420c9b60df62494bbf91d3.tar.gz
egit-d55e3117deff4c47b6420c9b60df62494bbf91d3.tar.xz
egit-d55e3117deff4c47b6420c9b60df62494bbf91d3.zip
Merge "Closing CommitEditor after deleting Stash commit."
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/command/StashDropHandler.java16
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/command/StashDropCommand.java38
2 files changed, 54 insertions, 0 deletions
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/command/StashDropHandler.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/command/StashDropHandler.java
index 027dc16f28..1a9cdb20b3 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/command/StashDropHandler.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/command/StashDropHandler.java
@@ -18,11 +18,14 @@ 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.IJobChangeEvent;
import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.core.runtime.jobs.JobChangeAdapter;
import org.eclipse.egit.core.op.StashDropOperation;
import org.eclipse.egit.ui.Activator;
import org.eclipse.egit.ui.JobFamilies;
import org.eclipse.egit.ui.internal.UIText;
+import org.eclipse.egit.ui.internal.commit.CommitEditor;
import org.eclipse.egit.ui.internal.handler.SelectionHandler;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jgit.api.Git;
@@ -30,6 +33,7 @@ import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IWorkbenchPart;
/**
* Handler to delete a stashed commit
@@ -79,6 +83,18 @@ public class StashDropHandler extends SelectionHandler {
return super.belongsTo(family);
}
};
+ final IWorkbenchPart part = getPart(event);
+ job.addJobChangeListener(new JobChangeAdapter() {
+ @Override
+ public void done(IJobChangeEvent event) {
+ if (event.getResult().isOK()) {
+ if (part instanceof CommitEditor) {
+ ((CommitEditor) part).close(false);
+ }
+ }
+ }
+
+ });
job.setUser(true);
job.setRule(op.getSchedulingRule());
job.schedule();
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/command/StashDropCommand.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/command/StashDropCommand.java
index fb65b28b05..7d87c87f46 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/command/StashDropCommand.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/command/StashDropCommand.java
@@ -27,11 +27,18 @@ import org.eclipse.egit.core.op.StashDropOperation;
import org.eclipse.egit.ui.Activator;
import org.eclipse.egit.ui.JobFamilies;
import org.eclipse.egit.ui.internal.UIText;
+import org.eclipse.egit.ui.internal.commit.CommitEditorInput;
import org.eclipse.egit.ui.internal.repository.tree.StashedCommitNode;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorReference;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
/**
* Command to drop one or all stashed commits
@@ -107,12 +114,43 @@ public class StashDropCommand extends
UIText.StashDropCommand_dropFailed,
node.getObject().name()), e);
}
+ tryToCloseEditor(node);
monitor.worked(1);
}
monitor.done();
return Status.OK_STATUS;
}
+ private void tryToCloseEditor(final StashedCommitNode node) {
+ Display.getDefault().asyncExec(new Runnable() {
+
+ public void run() {
+ IWorkbenchPage activePage = PlatformUI.getWorkbench()
+ .getActiveWorkbenchWindow().getActivePage();
+ IEditorReference[] editorReferences = activePage
+ .getEditorReferences();
+ for (IEditorReference editorReference : editorReferences) {
+ IEditorInput editorInput = null;
+ try {
+ editorInput = editorReference.getEditorInput();
+ } catch (PartInitException e) {
+ Activator.handleError(e.getMessage(), e, true);
+ }
+ if (editorInput instanceof CommitEditorInput) {
+ CommitEditorInput comEditorInput = (CommitEditorInput) editorInput;
+ if (comEditorInput.getCommit().getRevCommit()
+ .equals(node.getObject())) {
+ activePage.closeEditor(
+ editorReference.getEditor(false),
+ false);
+ }
+ }
+ }
+ }
+ });
+
+ }
+
@Override
public boolean belongsTo(Object family) {
if (JobFamilies.STASH.equals(family))

Back to the top