Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Ferrazzutti2015-05-13 18:39:34 +0000
committerAlexander Kurtakov2015-05-14 08:05:19 +0000
commit0a91d5906df7f7eec3f65b7fe5baa019ba559a02 (patch)
tree7bb28fe5e789f1ec8631c4cd9b88733349240459 /changelog
parentba83be36d28f365e9379fb3678c7f0a1d13e20b5 (diff)
downloadorg.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')
-rw-r--r--changelog/org.eclipse.linuxtools.changelog.core/src/org/eclipse/linuxtools/internal/changelog/core/actions/ChangeLogAction.java7
-rw-r--r--changelog/org.eclipse.linuxtools.changelog.core/src/org/eclipse/linuxtools/internal/changelog/core/actions/PrepareChangeLogAction.java9
-rw-r--r--changelog/org.eclipse.linuxtools.changelog.core/src/org/eclipse/linuxtools/internal/changelog/core/actions/PrepareCommitHandler.java83
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) {
+
+ }
+
}

Back to the top