diff options
author | Matthias Sohn | 2015-02-18 22:57:51 +0000 |
---|---|---|
committer | Gerrit Code Review @ Eclipse.org | 2015-02-18 22:57:53 +0000 |
commit | d55e3117deff4c47b6420c9b60df62494bbf91d3 (patch) | |
tree | 9281c63474e8f97b1eb9a8ebdf60c0fd6b05c8c9 | |
parent | d93dd63d247f0d80de7dabef06a0a05e52a1f2b8 (diff) | |
parent | f5bc7144cfac3844aecfe2ffc93a40c85b1652eb (diff) | |
download | egit-d55e3117deff4c47b6420c9b60df62494bbf91d3.tar.gz egit-d55e3117deff4c47b6420c9b60df62494bbf91d3.tar.xz egit-d55e3117deff4c47b6420c9b60df62494bbf91d3.zip |
Merge "Closing CommitEditor after deleting Stash commit."
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)) |