diff options
author | Michael Valenta | 2002-03-07 19:59:12 +0000 |
---|---|---|
committer | Michael Valenta | 2002-03-07 19:59:12 +0000 |
commit | 5ae154e21d37755d5e9a8bfce913c842fde8ed57 (patch) | |
tree | ecda4551e7d2f5e62ad3b51f85cb82f169e87d2c | |
parent | ba05da684dedf2786eabe5d157e5ac888f1667b2 (diff) | |
download | eclipse.platform.team-5ae154e21d37755d5e9a8bfce913c842fde8ed57.tar.gz eclipse.platform.team-5ae154e21d37755d5e9a8bfce913c842fde8ed57.tar.xz eclipse.platform.team-5ae154e21d37755d5e9a8bfce913c842fde8ed57.zip |
10776: Team2.0 - weird progress information when tagging out-of-sync project
7 files changed, 62 insertions, 6 deletions
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/AbstractStructureVisitor.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/AbstractStructureVisitor.java index 84882417b..58429dd3b 100644 --- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/AbstractStructureVisitor.java +++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/AbstractStructureVisitor.java @@ -17,6 +17,7 @@ import org.eclipse.team.ccvs.core.ICVSFolder; import org.eclipse.team.ccvs.core.ICVSResource; import org.eclipse.team.ccvs.core.ICVSResourceVisitor; import org.eclipse.team.internal.ccvs.core.CVSException; +import org.eclipse.team.internal.ccvs.core.Policy; import org.eclipse.team.internal.ccvs.core.resources.CVSEntryLineTag; import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo; import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo; @@ -39,7 +40,7 @@ abstract class AbstractStructureVisitor implements ICVSResourceVisitor { this.session = session; this.sendQuestionable = sendQuestionable; this.sendModifiedContents = sendModifiedContents; - this.monitor = monitor; + this.monitor = Policy.infiniteSubMonitorFor(monitor, 256); } /** @@ -80,6 +81,8 @@ abstract class AbstractStructureVisitor implements ICVSResourceVisitor { String localPath = mFolder.getRelativePath(session.getLocalRoot()); + monitor.subTask(Policy.bind("AbstractStructureVisitor.sendingFolder", localPath)); + // Deal with questionable directories boolean isQuestionable = ! mFolder.isCVSFolder() || isOrphanedSubtree(mFolder); if (isQuestionable) { @@ -94,7 +97,7 @@ abstract class AbstractStructureVisitor implements ICVSResourceVisitor { // Send the directory to the server String remotePath = mFolder.getRemoteLocation(session.getLocalRoot()); if (remotePath == null) { - throw new CVSException("Unable to determine remote location for resource"); + throw new CVSException(Policy.bind("AbstractStructureVisitor.noRemote")); } session.sendDirectory(localPath, remotePath); @@ -115,6 +118,8 @@ abstract class AbstractStructureVisitor implements ICVSResourceVisitor { // Record that we sent this folder recordLastSent(mFolder); + + monitor.worked(1); } /** @@ -192,9 +197,15 @@ abstract class AbstractStructureVisitor implements ICVSResourceVisitor { }); // Visit all the resources + session.setSendFileTitleKey(getSendFileTitleKey()); for (int i = 0; i < resourceList.size(); i++) { ((ICVSResource)resourceList.get(i)).accept(this); } + + monitor.done(); } + protected String getSendFileTitleKey() { + return "AbstractStructureVisitor.sendingFile"; + } }
\ No newline at end of file diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ImportStructureVisitor.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ImportStructureVisitor.java index f0a41bed7..702dc336b 100644 --- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ImportStructureVisitor.java +++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ImportStructureVisitor.java @@ -13,6 +13,7 @@ import org.eclipse.team.ccvs.core.ICVSFile; import org.eclipse.team.ccvs.core.ICVSFolder; import org.eclipse.team.ccvs.core.ICVSResourceVisitor; import org.eclipse.team.internal.ccvs.core.CVSException; +import org.eclipse.team.internal.ccvs.core.Policy; import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo; import org.eclipse.team.internal.ccvs.core.util.FileNameMatcher; @@ -47,7 +48,7 @@ class ImportStructureVisitor implements ICVSResourceVisitor { String[] wrappers, IProgressMonitor monitor) { this.session = session; - this.monitor = monitor; + this.monitor = Policy.infiniteSubMonitorFor(monitor, 512); this.wrappers = wrappers; wrapMatcher = initWrapMatcher(wrappers); } @@ -124,7 +125,10 @@ class ImportStructureVisitor implements ICVSResourceVisitor { return; } - session.sendConstructedDirectory(mFolder.getRelativePath(session.getLocalRoot())); + String localPath = mFolder.getRelativePath(session.getLocalRoot()); + monitor.subTask(Policy.bind("AbstractStructureVisitor.sendingFolder", localPath)); + + session.sendConstructedDirectory(localPath); mFolder.acceptChildren(this); } diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ModifiedFileSender.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ModifiedFileSender.java index 2e7218155..253ac0847 100644 --- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ModifiedFileSender.java +++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ModifiedFileSender.java @@ -28,4 +28,8 @@ class ModifiedFileSender extends FileStructureVisitor { super.sendFile(mFile); } } + + protected String getSendFileTitleKey() { + return null; + } } diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/RTag.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/RTag.java index 7e1d9583d..8ed125b4e 100644 --- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/RTag.java +++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/RTag.java @@ -56,6 +56,11 @@ public class RTag extends Command { protected void sendLocalResourceState(Session session, GlobalOption[] globalOptions, LocalOption[] localOptions, ICVSResource[] resources, IProgressMonitor monitor) throws CVSException { + // do nothing + } + + protected void sendLocalWorkingDirectory(Session session) throws CVSException { + // do nothing } public IStatus execute(Session session, GlobalOption[] globalOptions, diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Session.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Session.java index eec85888b..4541e0e84 100644 --- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Session.java +++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Session.java @@ -81,6 +81,9 @@ public class Session { // a shared buffer used for file transfers private byte[] transferBuffer = null; + + // The resource bundle key that provides the file sending message + private String sendFileTitleKey; /** * Creates a new CVS session, initially in the CLOSED state. @@ -508,7 +511,7 @@ public class Session { public void sendFile(ICVSFile file, boolean isBinary, IProgressMonitor monitor) throws CVSException { // update progress monitor - String title = Policy.bind("Session.sending", new Object[]{ Util.toTruncatedPath(file, localRoot, 3) }); //$NON-NLS-1$ + String title = Policy.bind(getSendFileTitleKey(), new Object[]{ Util.toTruncatedPath(file, localRoot, 3) }); //$NON-NLS-1$ monitor.subTask(Policy.bind("Session.transferNoSize", title)); //$NON-NLS-1$ // obtain an input stream for the file and its size long size = file.getSize(); @@ -758,4 +761,22 @@ public class Session { } + /** + * Gets the sendFileTitleKey. + * @return Returns a String + */ + String getSendFileTitleKey() { + if (sendFileTitleKey == null) + return "Session.sending"; + return sendFileTitleKey; + } + + /** + * Sets the sendFileTitleKey. + * @param sendFileTitleKey The sendFileTitleKey to set + */ + public void setSendFileTitleKey(String sendFileTitleKey) { + this.sendFileTitleKey = sendFileTitleKey; + } + } diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/messages.properties b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/messages.properties index 75080e132..19d9b713c 100644 --- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/messages.properties +++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/messages.properties @@ -2,6 +2,10 @@ org.eclipse.team.internal.provider.cvs.CVSException=CVS Error: {0} ok=ok +AbstractStructureVisitor.sendingFolder=Processing {0} +AbstractStructureVisitor.sendingFile=Processing {0} +AbstractStructureVisitor.noRemote=Unable to determine remote location for resource + CVSAuthenticationException.normal=Authentication error connecting to {0} CVSAuthenticationException.detail=Authentication error: {0} @@ -91,6 +95,7 @@ RemoteFolder.invalidChild=Invalid folder {0} received during remote operation RemoteFolder.errorFetchingRevisions=Error fetching file revisions RemoteFile.noContentsReceived=No contents received from server for {0} +RemoteFolderTreeBuilder.buildingBase=Collecting local synchronization information RemoteFolderTreeBuilder.receivingDelta=Receiving delta for {0} RemoteFolderTreeBuilder.receivingRevision=Receiving revision for {0} diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFolderTreeBuilder.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFolderTreeBuilder.java index 31da9ae6f..625da9ee6 100644 --- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFolderTreeBuilder.java +++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFolderTreeBuilder.java @@ -132,6 +132,7 @@ public class RemoteFolderTreeBuilder { progress.beginTask(null, 100); IProgressMonitor subProgress = Policy.infiniteSubMonitorFor(progress, 100); subProgress.beginTask(null, 512); //$NON-NLS-1$ + subProgress.subTask(Policy.bind("RemoteFolderTreeBuilder.buildingBase", root.getName())); return builder.buildBaseTree(null, root, subProgress); } finally { progress.done(); @@ -152,9 +153,11 @@ public class RemoteFolderTreeBuilder { try { monitor.beginTask(null, 100); + Policy.checkCanceled(monitor); Session session = new Session(repository, root, false); session.open(Policy.subMonitorFor(monitor, 10)); try { + Policy.checkCanceled(monitor); fetchDelta(session, Policy.subMonitorFor(monitor, 50)); if (projectDoesNotExist) { return null; @@ -197,6 +200,8 @@ public class RemoteFolderTreeBuilder { */ private RemoteFolderTree buildBaseTree(RemoteFolderTree parent, ICVSFolder local, IProgressMonitor monitor) throws CVSException { + Policy.checkCanceled(monitor); + // Create a remote folder tree corresponding to the local resource RemoteFolderTree remote = new RemoteFolderTree(parent, local.getName(), repository, new Path(local.getFolderSyncInfo().getRepository()), local.getFolderSyncInfo().getTag()); @@ -207,7 +212,6 @@ public class RemoteFolderTreeBuilder { ICVSFolder[] folders = local.getFolders(); for (int i=0;i<folders.length;i++) { if (folders[i].isManaged() && folders[i].isCVSFolder()) { - monitor.subTask("Building base for " + folders[i].getRelativePath(root)); monitor.worked(1); children.add(buildBaseTree(remote, folders[i], monitor)); } @@ -246,6 +250,8 @@ public class RemoteFolderTreeBuilder { */ private void buildRemoteTree(Session session, ICVSFolder local, RemoteFolderTree remote, IPath localPath, IProgressMonitor monitor) throws CVSException { + Policy.checkCanceled(monitor); + // Add the remote folder to the remote folder lookup table (used to update file revisions) remoteFolderTable.put(remote.getFolderSyncInfo().getRemoteLocation(), remote); |