diff options
author | Andrew Ferrazzutti | 2015-05-13 18:39:34 +0000 |
---|---|---|
committer | Alexander Kurtakov | 2015-05-14 08:05:19 +0000 |
commit | 0a91d5906df7f7eec3f65b7fe5baa019ba559a02 (patch) | |
tree | 7bb28fe5e789f1ec8631c4cd9b88733349240459 /changelog | |
parent | ba83be36d28f365e9379fb3678c7f0a1d13e20b5 (diff) | |
download | org.eclipse.linuxtools-0a91d5906df7f7eec3f65b7fe5baa019ba559a02.tar.gz org.eclipse.linuxtools-0a91d5906df7f7eec3f65b7fe5baa019ba559a02.tar.xz org.eclipse.linuxtools-0a91d5906df7f7eec3f65b7fe5baa019ba559a02.zip |
changelog: Refresh repos; streamline Prep Commit.
When executing either Prepare Changelog or Prepare Commit, refresh the
repository being contacted for out-of-sync resources before contact is made.
Resolves EBZ #466632 and issues with Prepare Changelog.
Also change Prepare Commit so that it doesn't need the log file's editor to be
in focus in order to work properly.
Change-Id: I1f64cb0ddbc8950caebb6db0d1287dcca5463b36
Signed-off-by: Andrew Ferrazzutti <aferrazz@redhat.com>
Reviewed-on: https://git.eclipse.org/r/47879
Tested-by: Hudson CI
Reviewed-by: Alexander Kurtakov <akurtako@redhat.com>
Diffstat (limited to 'changelog')
3 files changed, 46 insertions, 53 deletions
diff --git a/changelog/org.eclipse.linuxtools.changelog.core/src/org/eclipse/linuxtools/internal/changelog/core/actions/ChangeLogAction.java b/changelog/org.eclipse.linuxtools.changelog.core/src/org/eclipse/linuxtools/internal/changelog/core/actions/ChangeLogAction.java index 146b36e00f..3f05c09b2b 100644 --- a/changelog/org.eclipse.linuxtools.changelog.core/src/org/eclipse/linuxtools/internal/changelog/core/actions/ChangeLogAction.java +++ b/changelog/org.eclipse.linuxtools.changelog.core/src/org/eclipse/linuxtools/internal/changelog/core/actions/ChangeLogAction.java @@ -173,6 +173,11 @@ public abstract class ChangeLogAction extends Action { } protected IEditorPart getChangelog(String currentEditorloc) { + IFile changelog = getChangelogFile(currentEditorloc); + return changelog != null ? openEditor(changelog) : null; + } + + protected IFile getChangelogFile(String currentEditorloc) { // Scenario 1: The Changelog is in in the current project file IWorkspaceRoot myWorkspaceRoot = getWorkspaceRoot(); IResource given_resource = myWorkspaceRoot.findMember(currentEditorloc); @@ -196,7 +201,7 @@ public abstract class ChangeLogAction extends Action { IFile change_log_file = proj_loc .getFile(modified_changelog_path); - return openEditor(change_log_file); + return change_log_file; } parent_dec = parent_dec.getParent(); diff --git a/changelog/org.eclipse.linuxtools.changelog.core/src/org/eclipse/linuxtools/internal/changelog/core/actions/PrepareChangeLogAction.java b/changelog/org.eclipse.linuxtools.changelog.core/src/org/eclipse/linuxtools/internal/changelog/core/actions/PrepareChangeLogAction.java index 649492abbe..dd2cf41a71 100644 --- a/changelog/org.eclipse.linuxtools.changelog.core/src/org/eclipse/linuxtools/internal/changelog/core/actions/PrepareChangeLogAction.java +++ b/changelog/org.eclipse.linuxtools.changelog.core/src/org/eclipse/linuxtools/internal/changelog/core/actions/PrepareChangeLogAction.java @@ -48,6 +48,7 @@ import org.eclipse.linuxtools.internal.changelog.core.LineComparator; import org.eclipse.linuxtools.internal.changelog.core.Messages; import org.eclipse.linuxtools.internal.changelog.core.editors.ChangeLogEditor; import org.eclipse.team.core.RepositoryProvider; +import org.eclipse.team.core.TeamException; import org.eclipse.team.core.diff.IDiff; import org.eclipse.team.core.diff.IThreeWayDiff; import org.eclipse.team.core.history.IFileRevision; @@ -301,7 +302,13 @@ public class PrepareChangeLogAction extends ChangeLogAction { } else { // We can then get a list of all out-of-sync resources. - s.collectOutOfSync(new IResource[] {project}, IResource.DEPTH_INFINITE, set, monitor); + IResource[] resources = new IResource[] { project }; + try { + s.refresh(resources, IResource.DEPTH_INFINITE, monitor); + } catch (TeamException e) { + // Ignore, continue anyways + } + s.collectOutOfSync(resources, IResource.DEPTH_INFINITE, set, monitor); SyncInfo[] infos = set.getSyncInfos(); totalChanges = infos.length; // Iterate through the list of changed resources and categorize them into diff --git a/changelog/org.eclipse.linuxtools.changelog.core/src/org/eclipse/linuxtools/internal/changelog/core/actions/PrepareCommitHandler.java b/changelog/org.eclipse.linuxtools.changelog.core/src/org/eclipse/linuxtools/internal/changelog/core/actions/PrepareCommitHandler.java index f751772734..e643ca315b 100644 --- a/changelog/org.eclipse.linuxtools.changelog.core/src/org/eclipse/linuxtools/internal/changelog/core/actions/PrepareCommitHandler.java +++ b/changelog/org.eclipse.linuxtools.changelog.core/src/org/eclipse/linuxtools/internal/changelog/core/actions/PrepareCommitHandler.java @@ -18,18 +18,16 @@ import java.lang.reflect.InvocationTargetException; import org.eclipse.compare.rangedifferencer.RangeDifference; import org.eclipse.compare.rangedifferencer.RangeDifferencer; -import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.IHandler; +import org.eclipse.core.commands.IHandlerListener; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IStorage; -import org.eclipse.core.resources.mapping.ResourceMapping; import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Status; import org.eclipse.jface.dialogs.ProgressMonitorDialog; import org.eclipse.jface.operation.IRunnableWithProgress; @@ -40,6 +38,7 @@ import org.eclipse.swt.dnd.Clipboard; import org.eclipse.swt.dnd.TextTransfer; import org.eclipse.swt.dnd.Transfer; import org.eclipse.team.core.RepositoryProvider; +import org.eclipse.team.core.TeamException; import org.eclipse.team.core.diff.IDiff; import org.eclipse.team.core.diff.IThreeWayDiff; import org.eclipse.team.core.history.IFileRevision; @@ -47,14 +46,10 @@ import org.eclipse.team.core.mapping.IResourceDiff; import org.eclipse.team.core.subscribers.Subscriber; import org.eclipse.team.core.synchronize.SyncInfo; import org.eclipse.team.core.synchronize.SyncInfoSet; -import org.eclipse.ui.IContributorResourceAdapter; -import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.IFileEditorInput; import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.ide.IContributorResourceAdapter2; -public class PrepareCommitHandler extends AbstractHandler { +public class PrepareCommitHandler extends ChangeLogAction implements IHandler { @Override public Object execute(ExecutionEvent event) { @@ -91,32 +86,6 @@ public class PrepareCommitHandler extends AbstractHandler { return null; } - private ResourceMapping getResourceMapping(Object o) { - if (o instanceof ResourceMapping) { - return (ResourceMapping) o; - } - if (o instanceof IAdaptable) { - IAdaptable adaptable = (IAdaptable) o; - Object adapted = adaptable.getAdapter(ResourceMapping.class); - if (adapted instanceof ResourceMapping) { - return (ResourceMapping) adapted; - } - adapted = adaptable.getAdapter(IContributorResourceAdapter.class); - if (adapted instanceof IContributorResourceAdapter2) { - IContributorResourceAdapter2 cra = (IContributorResourceAdapter2) adapted; - return cra.getAdaptedResourceMapping(adaptable); - } - } else { - Object adapted = Platform.getAdapterManager().getAdapter(o, - ResourceMapping.class); - if (adapted instanceof ResourceMapping) { - return (ResourceMapping) adapted; - } - } - - return null; - } - private void loadClipboard(IProgressMonitor monitor) { IEditorPart currentEditor; @@ -127,30 +96,22 @@ public class PrepareCommitHandler extends AbstractHandler { .getActiveEditor(); } catch (Exception e) { // no editor is active now so do nothing + return; + } + if (currentEditor == null) { return; } - if (currentEditor == null) + IFile changelog = getChangelogFile(getDocumentLocation(currentEditor, false)); + if (changelog == null) { return; + } - // System.out.println(currentEditor.getTitle()); String diffResult = ""; - IEditorInput input = currentEditor.getEditorInput(); - ResourceMapping mapping = getResourceMapping(input); IProject project = null; - IResource[] resources = new IResource[1]; - - if (mapping != null) { - project = mapping.getProjects()[0]; - resources[0] = (IResource) mapping.getModelObject(); - } else if (input instanceof IFileEditorInput) { - IFileEditorInput f = (IFileEditorInput) input; - project = f.getFile().getProject(); - resources[0] = f.getFile(); - } else { - return; // can't get what we need - } + IResource[] resources = new IResource[] { changelog }; + project = changelog.getProject(); RepositoryProvider r = RepositoryProvider.getProvider(project); if (r == null) { @@ -159,6 +120,11 @@ public class PrepareCommitHandler extends AbstractHandler { } SyncInfoSet set = new SyncInfoSet(); Subscriber s = r.getSubscriber(); + try { + s.refresh(resources, IResource.DEPTH_ZERO, monitor); + } catch (TeamException e1) { + // Ignore, continue anyways + } s.collectOutOfSync(resources, IResource.DEPTH_ZERO, set, monitor); SyncInfo[] infos = set.getSyncInfos(); @@ -279,4 +245,19 @@ public class PrepareCommitHandler extends AbstractHandler { clipboard.dispose(); } + @Override + public void addHandlerListener(IHandlerListener handlerListener) { + + } + + @Override + public void dispose() { + + } + + @Override + public void removeHandlerListener(IHandlerListener handlerListener) { + + } + } |