diff options
author | Kevin Macguire | 2002-06-07 06:00:25 +0000 |
---|---|---|
committer | Kevin Macguire | 2002-06-07 06:00:25 +0000 |
commit | 254c42c5b4c53e1700d91dc031fc0e18daaeb321 (patch) | |
tree | 43077f8f7408a9b9e89b152cbddf3aa59e7b28e7 | |
parent | 6022357f6a007fe22637080b8a560dee20eaad3d (diff) | |
download | eclipse.platform.team-254c42c5b4c53e1700d91dc031fc0e18daaeb321.tar.gz eclipse.platform.team-254c42c5b4c53e1700d91dc031fc0e18daaeb321.tar.xz eclipse.platform.team-254c42c5b4c53e1700d91dc031fc0e18daaeb321.zip |
*** empty log message ***
17 files changed, 363 insertions, 193 deletions
diff --git a/bundles/org.eclipse.team.ui/plugin.properties b/bundles/org.eclipse.team.ui/plugin.properties index 24fe573a9..2105357fe 100644 --- a/bundles/org.eclipse.team.ui/plugin.properties +++ b/bundles/org.eclipse.team.ui/plugin.properties @@ -24,14 +24,14 @@ SiteExplorerView.name=Site Explorer Deployment.viewCategory=Target Management Deployment.group=Depl&oy -Deployment.getAction=&Replace with Target +Deployment.getAction=&Target Deployment.uploadAction=&Upload Deployment.configSite=&Target Site... Deployment.synchronize=&Synchronize with Target... -SiteExplorerGetAs.label=Get &As... +SiteExplorerGetAs.label=Download &As... SiteExplorerGetAs.tooltip=Download the selected remote folder with a user specified project type and name. -SiteExplorerGetAsProject.label=&Get As Project +SiteExplorerGetAsProject.label=&Download As Project SiteExplorerGetAsProject.tooltip=Download the selected remote folder and create a project with the same name. -SiteExplorerDiscardSite.label=&Discard Site +SiteExplorerDiscardSite.label=D&iscard Site SiteExplorerDiscardSite.tooltip=Discard the site
\ No newline at end of file diff --git a/bundles/org.eclipse.team.ui/plugin.xml b/bundles/org.eclipse.team.ui/plugin.xml index ea4e05005..fa0fe7648 100644 --- a/bundles/org.eclipse.team.ui/plugin.xml +++ b/bundles/org.eclipse.team.ui/plugin.xml @@ -96,7 +96,7 @@ value="org.eclipse.team.target=basic"> </filter> <action - menubarPath="team.main/targetGroup" + menubarPath="replaceWithMenu/replaceWithGroup" class="org.eclipse.team.internal.ui.target.GetAction" id="org.eclipse.team.target.getAction" label="%Deployment.getAction"> @@ -132,14 +132,14 @@ objectClass="org.eclipse.team.internal.ui.target.RemoteResourceElement" id="org.eclipse.team.internal.ui.target.RemoteResourceElement"> <action - label="Get As..." - tooltip="Get As..." + label="%SiteExplorerGetAs.label" + tooltip="%SiteExplorerGetAs.tooltip" class="org.eclipse.team.internal.ui.target.GetAsAction" id="org.eclipse.team.internal.ui.target.GetAsAction"> </action> <action - label="Get As Project" - tooltip="Get As Project" + label="%SiteExplorerGetAsProject.label" + tooltip="%SiteExplorerGetAsProject.tooltip" class="org.eclipse.team.internal.ui.target.GetAsProjectAction" id="org.eclipse.team.internal.ui.target.GetAsProjectAction"> </action> @@ -149,8 +149,8 @@ objectClass="org.eclipse.team.internal.ui.target.SiteElement" id="org.eclipse.team.internal.ui.target.SiteElement"> <action - label="Discard Site" - tooltip="Discard this Site" + label="%SiteExplorerDiscardSite.label" + tooltip="%SiteExplorerDiscardSite.tooltip" class="org.eclipse.team.internal.ui.target.DiscardSiteAction" id="org.eclipse.team.internal.ui.target.DiscardSiteAction"> </action> diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties index 0220a49d4..0cc40347a 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties @@ -145,14 +145,14 @@ SiteSelectionPage.disconnectTarget=&Disconnect from Site GetAsProject.thisResourceExists=The resource ''{0}'' already exists in the workspace. Overwrite? GetAsProject.thisExternalFileExists=The folder ''{0}'' exists in the local file system. Overwrite? GetAsProject.confirmOverwrite=Confirm Overwrite -GetAsProject.taskName1=Receiving ''{0}'' -GetAsProject.taskNameN=Receiving {0} folders +GetAsProject.taskName1=Downloading ''{0}'' +GetAsProject.taskNameN=Downloading {0} folders GetAsProject.errorCreatingProject=Error creating project: {0} GetAsProject.errorGettingResources=Error getting resources GetAs.checkoutFailed=Problems encountered receiving the remote folder -GetAs.enterProjectTitle=Get ''{0}'' As... -GetAs.taskname=Receiving ''{0}'' as ''{1}'' +GetAs.enterProjectTitle=Downloading ''{0}'' As... +GetAs.taskname=Downloading ''{0}'' as ''{1}'' Error=Error @@ -161,10 +161,10 @@ CreateNewFolderAction.title=New Remote Folder CreateNewFolderAction.message=Enter the name for the new remote folder: CreateNewFolderAction.newFolderName=New Folder -GetAction.title=Get +GetAction.title=Download GetAction.working=Downloading from ''{0}''... -PutAction.title=Put +PutAction.title=Upload PutAction.working=Uploading to ''{0}''... SiteExplorerView.addSiteAction=Target &Site @@ -191,7 +191,7 @@ SiteExplorerViewLabelProvider.fileSize={0} KB MappingSelectionPage.description=Specify the location on the site where you want to target your resources. MappingSelectionPage.label=Select the site or a folder: -MappingSelectionPage.newFolderLabel=&New Folder... +MappingSelectionPage.newFolderLabel=&Create Folder... MappingSelectionPage.mappingTitle=Select the location on the site ConfigureTargetWizardQuestion_2=Question @@ -205,12 +205,16 @@ ConfigureTargetWizard.errorOccurred=An error occured connecting to ''{0}''.\n\nC ConfigureTargetWizard.errorUnmappingProject=An error occured trying to disconnect this project. GetAction.Exception_getting_provider_2=Exception getting provider -GetSyncAction.Getting..._1=Getting... +GetAction.confirmFileOverwrite=You have local changes which you are about to overwrite. Do you wish to continue? +GetAction.confirmFileOverwriteTitle=Confirm Overwrite + + +GetSyncAction.Getting..._1=Downloading... PutAction.Exception_getting_provider_2=Exception getting provider -PutSyncAction.Putting..._1=Putting... +PutSyncAction.Putting..._1=Uploading... -TargetCatchupReleaseViewer.Get_1=&Get -TargetCatchupReleaseViewer.Put_2=&Put +TargetCatchupReleaseViewer.Get_1=&Download +TargetCatchupReleaseViewer.Put_2=&Upload SiteSelectionPage.siteLabelCurrentWithMapping={0} (currently as {1}) SiteSelectionPage.siteLabelCurrent={0} (current) diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/CatchupReleaseViewer.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/CatchupReleaseViewer.java index 3a8b30d85..814b584e7 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/CatchupReleaseViewer.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/CatchupReleaseViewer.java @@ -324,7 +324,7 @@ public abstract class CatchupReleaseViewer extends DiffTreeViewer implements ISe refresh.setToolTipText(Policy.bind("CatchupReleaseViewer.refreshAction")); //$NON-NLS-1$ // Expand action - expandAll = new ExpandAllAction(Policy.bind("CatchupReleaseViewer.expand"), null); + expandAll = new ExpandAllAction(Policy.bind("CatchupReleaseViewer.expand"), null); //$NON-NLS-1$ // Toggle granularity image = TeamImages.getImageDescriptor(UIConstants.IMG_CONTENTS); @@ -338,7 +338,7 @@ public abstract class CatchupReleaseViewer extends DiffTreeViewer implements ISe compareFileContents = diffModel.getSyncGranularity() != IRemoteSyncElement.GRANULARITY_TIMESTAMP; toggleGranularity.setChecked(compareFileContents); - removeFromTree = new RemoveFromTreeAction(Policy.bind("CatchupReleaseViewer.removeFromView"), null); + removeFromTree = new RemoveFromTreeAction(Policy.bind("CatchupReleaseViewer.removeFromView"), null); //$NON-NLS-1$ copyAllRightToLeft = new Action(Policy.bind("CatchupReleaseViewer.copyAllRightToLeft"), null) { //$NON-NLS-1$ public void run() { diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/ConfigureTargetWizard.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/ConfigureTargetWizard.java index 4b5191dd1..e3ede870a 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/ConfigureTargetWizard.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/ConfigureTargetWizard.java @@ -68,8 +68,6 @@ public class ConfigureTargetWizard extends Wizard implements IConfigurationWizar public static final String MAPPING_PAGE_NAME = "mapping-page"; //$NON-NLS-1$ protected SiteSelectionPage siteSelectionPage = null; - protected IWizardPage firstTargetPage = null; - /** * @see ConfigureProjectWizard#getExtensionPoint() */ @@ -108,7 +106,6 @@ public class ConfigureTargetWizard extends Wizard implements IConfigurationWizar public void addPages() { Site[] sites = TargetManager.getSites(); AdaptableList wizards = getAvailableWizards(); - setWindowTitle(getWizardWindowTitle()); if(sites.length > 0 && project != null) { TargetProvider provider = null; @@ -153,29 +150,10 @@ public class ConfigureTargetWizard extends Wizard implements IConfigurationWizar } public IWizardPage getNextPage(IWizardPage page) { - // This is what we really want to do, but will have to rework the - // target wizards first. - // if(getPage(page.getName()) != null) { - // // this is one of our pages - // // 1. site selection - // // 2. target selection - // // 3. mapping - // } else { - // // not one of our pages, is a target specific page - // IWizardPage nextPage; - // if(wizard != null) { - // nextPage = wizard.getNextPage(page); - // } else { - // nextPage = mainPage.getSelectedWizard().getNextPage(page); - // } - // if(nextPage != null) { - // return nextPage; - // } else { - // MappingSelectionPage mappingPage = getMappingPage(); - // mappingPage.setPreviousPage(page); - // } - // } if(page == siteSelectionPage) { + if(siteSelectionPage.isDisconnect()) { + return null; + } if(siteSelectionPage.getSite() != null) { mappingPage.setSite(siteSelectionPage.getSite()); mappingPage.setPreviousPage(page); @@ -205,8 +183,10 @@ public class ConfigureTargetWizard extends Wizard implements IConfigurationWizar } return false; } else if(currentPage == siteSelectionPage) { - if(siteSelectionPage.getSite() != null) { + if(siteSelectionPage.getSite() != null || siteSelectionPage.isDisconnect()) { return true; + } else { + return false; } } diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/DiscardSiteAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/DiscardSiteAction.java index c1fd3ebb2..cc361b3ab 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/DiscardSiteAction.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/DiscardSiteAction.java @@ -19,8 +19,8 @@ import org.eclipse.jface.action.IAction; import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; @@ -85,8 +85,28 @@ public class DiscardSiteAction extends TargetAction { return composite; } - protected void createMainDialogArea(Composite composite) { - Label label = new Label(composite, SWT.WRAP); + protected void createMainDialogArea(Composite top) { + Composite parent = new Composite(top, SWT.NONE); + GridLayout layout = new GridLayout(); + layout.marginHeight = 0; + layout.marginWidth = 0; + layout.numColumns = 2; + parent.setLayout(layout); + parent.setLayoutData(new GridData(GridData.FILL_BOTH)); + parent.setFont(parent.getFont()); + + // create image + Image image = getImage(DLG_IMG_WARNING); + if (image != null) { + Label label = new Label(parent, 0); + image.setBackground(label.getBackground()); + label.setImage(image); + label.setLayoutData(new GridData( + GridData.HORIZONTAL_ALIGN_CENTER | + GridData.VERTICAL_ALIGN_BEGINNING)); + } + + Label label = new Label(parent, SWT.WRAP); label.setText(Policy.bind("SiteExplorerView.projectsAlreadyMapped")); //$NON-NLS-1$ GridData data = new GridData( GridData.GRAB_HORIZONTAL | @@ -95,9 +115,16 @@ public class DiscardSiteAction extends TargetAction { GridData.VERTICAL_ALIGN_CENTER); data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH); label.setLayoutData(data); - label.setFont(composite.getFont()); + label.setFont(parent.getFont()); - unmap = new Button(composite, SWT.CHECK); + unmap = new Button(parent, SWT.CHECK); + data = new GridData( + GridData.GRAB_HORIZONTAL | + GridData.GRAB_VERTICAL | + GridData.HORIZONTAL_ALIGN_FILL | + GridData.VERTICAL_ALIGN_CENTER); + data.horizontalSpan = 2; + unmap.setLayoutData(data); unmap.setText(Policy.bind("SiteExplorerView.unmapProjectsAndDisconnect")); //$NON-NLS-1$ unmap.setSelection(false); unmap.addListener(SWT.Selection, new Listener() { diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/GetAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/GetAction.java index 0f91747fa..80ce5e052 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/GetAction.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/GetAction.java @@ -6,55 +6,183 @@ package org.eclipse.team.internal.ui.target; */ import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Hashtable; import java.util.Iterator; import java.util.List; import java.util.Set; +import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.SubProgressMonitor; import org.eclipse.jface.action.IAction; -import org.eclipse.team.core.RepositoryProvider; +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Listener; +import org.eclipse.swt.widgets.Shell; import org.eclipse.team.core.TeamException; import org.eclipse.team.core.target.TargetManager; import org.eclipse.team.core.target.TargetProvider; -import org.eclipse.team.internal.core.*; +import org.eclipse.team.internal.core.InfiniteSubProgressMonitor; import org.eclipse.team.internal.core.TeamPlugin; +import org.eclipse.team.internal.ui.DetailsDialog; +import org.eclipse.team.internal.ui.IPromptCondition; import org.eclipse.team.internal.ui.Policy; -import org.eclipse.team.internal.ui.actions.TeamAction; +import org.eclipse.team.internal.ui.PromptingDialog; +import org.eclipse.team.internal.ui.TeamUIPlugin; import org.eclipse.ui.actions.WorkspaceModifyOperation; /** * Action for getting the contents of the selected resources */ -public class GetAction extends TeamAction { - public void run(IAction action) { - run(new WorkspaceModifyOperation() { - public void execute(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException { - try { - Hashtable table = getTargetProviderMapping(); - Set keySet = table.keySet(); - monitor.beginTask("", keySet.size() * 1000); //$NON-NLS-1$ - Iterator iterator = keySet.iterator(); - while (iterator.hasNext()) { - IProgressMonitor subMonitor = new InfiniteSubProgressMonitor(monitor, 1000); - TargetProvider provider = (TargetProvider)iterator.next(); - monitor.setTaskName(Policy.bind("GetAction.working", provider.getURL().toExternalForm())); //$NON-NLS-1$ - List list = (List)table.get(provider); - IResource[] providerResources = (IResource[])list.toArray(new IResource[list.size()]); +public class GetAction extends TargetAction { + + private class OutgoingChangesDialog extends DetailsDialog { + private IResource[] outgoingChanges; + private org.eclipse.swt.widgets.List detailsList; + + public OutgoingChangesDialog(Shell shell, IResource[] outgoingChanges) { + super(shell, Policy.bind("GetAction.confirmFileOverwriteTitle")); //$NON-NLS-1$ + this.outgoingChanges = outgoingChanges; + } + + protected Composite createDropDownDialogArea(Composite parent) { + // create a composite with standard margins and spacing + Composite composite = new Composite(parent, SWT.NONE); + GridLayout layout = new GridLayout(); + layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN); + layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN); + layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING); + layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING); + composite.setLayout(layout); + composite.setLayoutData(new GridData(GridData.FILL_BOTH)); + composite.setFont(parent.getFont()); + + detailsList = new org.eclipse.swt.widgets.List(composite, SWT.BORDER | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); + GridData data = new GridData (); + data.heightHint = 75; + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + detailsList.setLayoutData(data); + + for (int i = 0; i < outgoingChanges.length; i++) { + detailsList.add(outgoingChanges[i].getFullPath().toString()); //$NON-NLS-1$ + } + return composite; + } + + protected void createMainDialogArea(Composite top) { + Composite parent = new Composite(top, SWT.NONE); + GridLayout layout = new GridLayout(); + layout.marginHeight = 0; + layout.marginWidth = 0; + layout.numColumns = 2; + parent.setLayout(layout); + parent.setLayoutData(new GridData(GridData.FILL_BOTH)); + parent.setFont(parent.getFont()); + + // create image + Image image = getImage(DLG_IMG_QUESTION); + if (image != null) { + Label label = new Label(parent, 0); + image.setBackground(label.getBackground()); + label.setImage(image); + label.setLayoutData(new GridData( + GridData.HORIZONTAL_ALIGN_CENTER | + GridData.VERTICAL_ALIGN_BEGINNING)); + } + + Label label = new Label(parent, SWT.WRAP); + label.setText(Policy.bind("GetAction.confirmFileOverwrite")); //$NON-NLS-1$ + GridData data = new GridData( + GridData.GRAB_HORIZONTAL | + GridData.GRAB_VERTICAL | + GridData.HORIZONTAL_ALIGN_FILL | + GridData.VERTICAL_ALIGN_CENTER); + data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH); + label.setLayoutData(data); + label.setFont(parent.getFont()); + setPageComplete(true); + } + + protected void updateEnablements() { + } + } + + public void run(IAction action) { + if(promptForOutgoingChanges()) { + run(new WorkspaceModifyOperation() { + public void execute(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException { + try { + Hashtable table = getTargetProviderMapping(); + Set keySet = table.keySet(); + monitor.beginTask(null, keySet.size() * 1000); - provider.get(providerResources, subMonitor); + // perform the get on each provider + Iterator iterator = keySet.iterator(); + while (iterator.hasNext()) { + TargetProvider provider = (TargetProvider)iterator.next(); + monitor.setTaskName(Policy.bind("GetAction.working", provider.getURL().toExternalForm())); //$NON-NLS-1$ + List list = (List)table.get(provider); + IResource[] providerResources = (IResource[])list.toArray(new IResource[list.size()]); + provider.get(providerResources, Policy.subInfiniteMonitorFor(monitor, 1000)); + } + } catch (TeamException e) { + throw new InvocationTargetException(e); + } finally { + monitor.done(); } - } catch (TeamException e) { - throw new InvocationTargetException(e); - } finally { - monitor.done(); } + }, Policy.bind("GetAction.title"), this.PROGRESS_DIALOG); //$NON-NLS-1$ + } + } + + private boolean promptForOutgoingChanges() { + try { + // find any outgoing changes that will be overwritten and prompt + Hashtable table = getTargetProviderMapping(); + Set keySet = table.keySet(); + + Iterator iterator = keySet.iterator(); + List outgoingChanges = new ArrayList(); + while (iterator.hasNext()) { + TargetProvider provider = (TargetProvider)iterator.next(); + List list = (List)table.get(provider); + IResource[] providerResources = (IResource[])list.toArray(new IResource[list.size()]); + outgoingChanges.addAll(Arrays.asList(findResourcesWithOutgoingChanges(providerResources))); + } + if(! outgoingChanges.isEmpty()) { + final OutgoingChangesDialog dialog = new OutgoingChangesDialog(getShell(), + (IResource[]) outgoingChanges.toArray(new IResource[outgoingChanges.size()])); + final boolean okToContinue[] = {true}; + getShell().getDisplay().syncExec(new Runnable() { + public void run() { + if(dialog.open() != dialog.OK) { + okToContinue[0] = false; + } + } + }); + return okToContinue[0]; } - }, Policy.bind("GetAction.title"), this.PROGRESS_DIALOG); //$NON-NLS-1$ + return true; + } catch(CoreException e) { + TeamUIPlugin.handle(e); + } catch(TeamException e) { + TeamUIPlugin.handle(e); + } + return false; } + /** * @see TeamAction#isEnabled() */ diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/GetSyncAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/GetSyncAction.java index 6a77152d8..620ea3022 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/GetSyncAction.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/GetSyncAction.java @@ -45,16 +45,15 @@ public class GetSyncAction extends TargetSyncAction { */ protected boolean isEnabled(ITeamNode node) { // Get action is enabled for any changed nodes. - return new SyncSet(new StructuredSelection(node)).getChangedNodes().length > 0; + SyncSet set = new SyncSet(new StructuredSelection(node)); + return set.hasIncomingChanges() || set.hasConflicts(); } /** * @see TargetSyncAction#removeNonApplicableNodes(SyncSet, int) */ protected void removeNonApplicableNodes(SyncSet set, int syncMode) { - if (syncMode == SyncView.SYNC_INCOMING) { - set.removeOutgoingNodes(); - } + set.removeOutgoingNodes(); } /** @@ -107,4 +106,4 @@ public class GetSyncAction extends TargetSyncAction { monitor.done(); } } -} +}
\ No newline at end of file diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/MappingSelectionPage.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/MappingSelectionPage.java index 3e4fce861..8d3865f9c 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/MappingSelectionPage.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/MappingSelectionPage.java @@ -175,7 +175,7 @@ public class MappingSelectionPage extends TargetWizardPage { private void setViewerInput() { if(this.site == null || viewer == null) return; - viewer.setInput(new SiteRootsElement(new Site[] {site})); + viewer.setInput(new SiteRootsElement(new Site[] {site}, getContainer())); } /** diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/RemoteResourceElement.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/RemoteResourceElement.java index 83b3c50ce..d7d474b71 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/RemoteResourceElement.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/RemoteResourceElement.java @@ -16,6 +16,8 @@ import java.util.List; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jface.action.IStatusLineManager; +import org.eclipse.jface.operation.IRunnableContext; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.operation.ModalContext; import org.eclipse.jface.resource.ImageDescriptor; @@ -49,14 +51,18 @@ public class RemoteResourceElement implements IWorkbenchAdapter, IAdaptable { private int size = 0; private String lastModified = null; - // embeded progress monitoring support - private Shell shell; - private IProgressMonitor monitor; + // context in which to perform long-running operations + private IRunnableContext runContext; public RemoteResourceElement(IRemoteTargetResource remote) { this.remote = remote; } + public RemoteResourceElement(IRemoteTargetResource remote, IRunnableContext runContext) { + this(remote); + this.runContext = runContext; + } + public IRemoteTargetResource getRemoteResource() { return remote; } @@ -72,26 +78,23 @@ public class RemoteResourceElement implements IWorkbenchAdapter, IAdaptable { IRunnableWithProgress runnable = new IRunnableWithProgress() { public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { try { - monitor.beginTask(null, 100); + // progress for fetching remote children is always unknown + // let's not bother even trying to guess. + monitor.beginTask(null, IProgressMonitor.UNKNOWN); if(children == null) { setCachedChildren(remote.members(Policy.subMonitorFor(monitor, 50))); } List remoteElements = new ArrayList(); for (int i = 0; i < children.length; i++) { IRemoteTargetResource child = (IRemoteTargetResource)children[i]; - RemoteResourceElement element = new RemoteResourceElement(child); - - // setup progress monitors - element.setShell(shell); - element.setProgressMonitor(monitor); - - // decide which children to return based on filter settings - element.setLastModified(child.getLastModified(Policy.subMonitorFor(monitor, 25))); + RemoteResourceElement element = new RemoteResourceElement(child, runContext); + // cache size and last modified + element.setLastModified(child.getLastModified(Policy.subMonitorFor(monitor, 25))); element.setSize(child.getSize(Policy.subMonitorFor(monitor, 25))); remoteElements.add(element); - } - result[0] = (RemoteResourceElement[])remoteElements.toArray(new RemoteResourceElement[remoteElements.size()]); + } + result[0] = (RemoteResourceElement[])remoteElements.toArray(new RemoteResourceElement[remoteElements.size()]); } catch (TeamException e) { throw new InvocationTargetException(e); } finally { @@ -100,7 +103,11 @@ public class RemoteResourceElement implements IWorkbenchAdapter, IAdaptable { } }; - TeamUIPlugin.runWithProgress(null, true /*cancelable*/, runnable); + if(runContext == null) { + TeamUIPlugin.runWithProgress(null, true /*cancelable*/, runnable); + } else { + runContext.run(true, true, runnable); + } } catch (InterruptedException e) { return new Object[0]; } catch (InvocationTargetException e) { @@ -155,22 +162,6 @@ public class RemoteResourceElement implements IWorkbenchAdapter, IAdaptable { this.remote = remote; } - public void setShell(Shell shell) { - this.shell = shell; - } - - public void setProgressMonitor(IProgressMonitor monitor) { - this.monitor = monitor; - } - - public Shell getShell() { - return shell; - } - - public IProgressMonitor getProgressMonitor() { - return monitor; - } - public String getLastModified() { return lastModified; } diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteElement.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteElement.java index 91f37eaed..84d27d820 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteElement.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteElement.java @@ -15,6 +15,7 @@ import java.lang.reflect.InvocationTargetException; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.Path; +import org.eclipse.jface.operation.IRunnableContext; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.resource.ImageDescriptor; @@ -40,6 +41,11 @@ public class SiteElement extends RemoteResourceElement { this.site = site; } + public SiteElement(Site site, IRunnableContext runContext) { + super(null, runContext); + this.site = site; + } + public Site getSite() { return site; } diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteExplorerView.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteExplorerView.java index a5fbb287c..4f12420d3 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteExplorerView.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteExplorerView.java @@ -69,6 +69,9 @@ import org.eclipse.ui.part.ViewPart; * Is a view that allows browsing remote target sites. It is modeled after * a file explorer: a tree of folders is show with a table of the folder's * contents. + * <p> + * Progress is shown in the main workbench window's status line progress + * monitor.</p> * * @see Site * @see IRemoteTargetResource @@ -109,8 +112,8 @@ public class SiteExplorerView extends ViewPart implements ISiteListener { // column headings: "Name" "Size" "Modified" private int[][] SORT_ORDERS_BY_COLUMN = { - {NAME, SIZE, MODIFIED}, /* name */ - {SIZE, NAME, MODIFIED}, /* size */ + {NAME}, /* name */ + {SIZE, NAME}, /* size */ {MODIFIED, NAME, SIZE}, /* modified */ }; @@ -155,7 +158,7 @@ public class SiteExplorerView extends ViewPart implements ISiteListener { } protected int compareNames(IRemoteTargetResource resource1, IRemoteTargetResource resource2) { - return collator.compare(resource1.getName(), resource2.getName()); + return resource1.getName().compareTo(resource2.getName()); } /** @@ -238,8 +241,8 @@ public class SiteExplorerView extends ViewPart implements ISiteListener { folderTree.setSorter(new ViewerSorter() { public int compare(Viewer viewer, Object e1, Object e2) { - String name1 = ""; - String name2 = ""; + String name1 = ""; //$NON-NLS-1$ + String name2 = ""; //$NON-NLS-1$ if(e1 instanceof RemoteResourceElement) { name1 = ((RemoteResourceElement)e1).getRemoteResource().getName(); } else if(e1 instanceof SiteElement) { @@ -266,31 +269,29 @@ public class SiteExplorerView extends ViewPart implements ISiteListener { }); Table table = new Table(sash, SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL); + TableLayout layout = new TableLayout(); + table.setLayout(layout); + table.setHeaderVisible(true); TableColumn tableColumn = new TableColumn(table, SWT.NULL); tableColumn.setText(Policy.bind("SiteExplorerView.Name_1")); //$NON-NLS-1$ tableColumn.addSelectionListener(getColumnListener()); + layout.addColumnData(new ColumnWeightData(30, true)); tableColumn = new TableColumn(table, SWT.NULL); tableColumn.setText(Policy.bind("SiteExplorerView.Size_2")); //$NON-NLS-1$ tableColumn.setAlignment(SWT.RIGHT); tableColumn.addSelectionListener(getColumnListener()); + layout.addColumnData(new ColumnWeightData(10, true)); tableColumn = new TableColumn(table, SWT.NULL); tableColumn.setText(Policy.bind("SiteExplorerView.Modified_3")); //$NON-NLS-1$ tableColumn.addSelectionListener(getColumnListener()); + layout.addColumnData(new ColumnWeightData(30, true)); tableColumn = new TableColumn(table, SWT.NULL); tableColumn.setText(Policy.bind("SiteExplorerView.URL_4")); //$NON-NLS-1$ - - TableLayout layout = new TableLayout(); - layout.addColumnData(new ColumnWeightData(30, true)); - layout.addColumnData(new ColumnWeightData(10, true)); layout.addColumnData(new ColumnWeightData(30, true)); - layout.addColumnData(new ColumnWeightData(30, true)); - - table.setLayout(layout); - table.setHeaderVisible(true); folderContentsTable = new TableViewer(table); folderContentsTable.setContentProvider(new SiteLazyContentProvider()); @@ -328,8 +329,10 @@ public class SiteExplorerView extends ViewPart implements ISiteListener { sash.setWeights(new int[] {33, 67}); TargetManager.addSiteListener(this); - initializeTreeInput(); + + root = new SiteRootsElement(getViewSite().getWorkbenchWindow()); initalizeActions(); + folderTree.setInput(root); } private Shell getShell() { @@ -399,18 +402,21 @@ public class SiteExplorerView extends ViewPart implements ISiteListener { Object currentSelection = selection.getFirstElement(); RemoteResourceElement selectedFolder; - if(selection.isEmpty()) { + if(!selection.isEmpty()) { selectedFolder = getSelectedRemoteFolder(selection)[0]; } else { selectedFolder = (RemoteResourceElement)folderContentsTable.getInput(); } - IRemoteTargetResource newFolder = CreateNewFolderAction.createDir(shell, selectedFolder.getRemoteResource(), Policy.bind("CreateNewFolderAction.newFolderName")); + IRemoteTargetResource newFolder = CreateNewFolderAction.createDir(shell, selectedFolder.getRemoteResource(), Policy.bind("CreateNewFolderAction.newFolderName")); //$NON-NLS-1$ if (newFolder == null) return; + + // force a refresh selectedFolder.setCachedChildren(null); + + // select the newly added folder RemoteResourceElement newFolderUIElement = new RemoteResourceElement(newFolder); - folderTree.refresh(currentSelection); expandInTreeCurrentSelection(new StructuredSelection(currentSelection), false); folderTree.setSelection(new StructuredSelection(newFolderUIElement)); @@ -459,13 +465,20 @@ public class SiteExplorerView extends ViewPart implements ISiteListener { } /** + * Add the new site to the viewer and make it the current selection. + * * @see ISiteListener#siteAdded(Site) */ public void siteAdded(Site site) { - initializeTreeInput(); + SiteElement element = new SiteElement(site, getViewSite().getWorkbenchWindow()); + folderTree.add(root, element); + folderTree.setSelection(new StructuredSelection(element)); } /** + * Remote the site from the viewer and select the next site in the + * tree. + * * @see ISiteListener#siteRemoved(Site) */ public void siteRemoved(Site site) { @@ -482,11 +495,6 @@ public class SiteExplorerView extends ViewPart implements ISiteListener { } } - private void initializeTreeInput() { - root = new SiteRootsElement(TargetManager.getSites()); - folderTree.setInput(root); - } - /** * Adds the listener that sets the sorter. */ @@ -510,13 +518,16 @@ public class SiteExplorerView extends ViewPart implements ISiteListener { */ public void widgetSelected(SelectionEvent e) { // column selected - need to sort + // only allow sorting on name for now int column = folderContentsTable.getTable().indexOf((TableColumn) e.widget); - FolderListingSorter oldSorter = (FolderListingSorter)folderContentsTable.getSorter(); - if (oldSorter != null && column == oldSorter.getColumnNumber()) { - oldSorter.setReversed(!oldSorter.isReversed()); - folderContentsTable.refresh(); - } else { - folderContentsTable.setSorter(new FolderListingSorter(column)); + if(column == FolderListingSorter.NAME) { + FolderListingSorter oldSorter = (FolderListingSorter)folderContentsTable.getSorter(); + if (oldSorter != null && column == oldSorter.getColumnNumber()) { + oldSorter.setReversed(!oldSorter.isReversed()); + folderContentsTable.refresh(); + } else { + folderContentsTable.setSorter(new FolderListingSorter(column)); + } } } }; diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteExplorerViewLabelProvider.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteExplorerViewLabelProvider.java index ff79825b9..54a8e01db 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteExplorerViewLabelProvider.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteExplorerViewLabelProvider.java @@ -30,7 +30,11 @@ public class SiteExplorerViewLabelProvider extends WorkbenchLabelProvider implem return super.getText(element); case 1 : if(element instanceof RemoteResourceElement) { - int size = ((RemoteResourceElement)element).getSize(); + RemoteResourceElement remote = ((RemoteResourceElement)element); + if(remote.getRemoteResource().isContainer()) { + return ""; //$NON-NLS-1$ + } + int size = remote.getSize(); int sizeKb = size / 1000; if(sizeKb == 0 && size % 1000 > 0) { sizeKb = 1; diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteRootsElement.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteRootsElement.java index 0074fdbc9..6e166ee77 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteRootsElement.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteRootsElement.java @@ -12,6 +12,7 @@ package org.eclipse.team.internal.ui.target; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jface.operation.IRunnableContext; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.widgets.Shell; import org.eclipse.team.core.target.Site; @@ -25,15 +26,15 @@ public class SiteRootsElement implements IWorkbenchAdapter, IAdaptable { private Site[] sites = null; // progress monitoring support - private IProgressMonitor monitor; - private Shell shell; + private IRunnableContext runContext; - public SiteRootsElement(Site[] sites) { + public SiteRootsElement(Site[] sites, IRunnableContext runContext) { this.sites = sites; + this.runContext = runContext; } - public SiteRootsElement() { - this.sites = null; + public SiteRootsElement(IRunnableContext runContext) { + this(null, runContext); } public ImageDescriptor getImageDescriptor(Object object) { @@ -49,21 +50,11 @@ public class SiteRootsElement implements IWorkbenchAdapter, IAdaptable { } SiteElement[] siteElements = new SiteElement[childSites.length]; for (int i = 0; i < childSites.length; i++) { - siteElements[i] = new SiteElement(childSites[i]); - siteElements[i].setShell(shell); - siteElements[i].setProgressMonitor(monitor); + siteElements[i] = new SiteElement(childSites[i], runContext); } return siteElements; } - public void setProgressMonitor(IProgressMonitor monitor) { - this.monitor = monitor; - } - - public void setShell(Shell shell) { - this.shell = shell; - } - public String getLabel(Object o) { return null; } diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteSelectionPage.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteSelectionPage.java index d5cb2ef68..999dbeb02 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteSelectionPage.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteSelectionPage.java @@ -100,6 +100,9 @@ public class SiteSelectionPage extends TargetWizardPage { SiteElement siteElement = (SiteElement)((IStructuredSelection)table.getSelection()).getFirstElement(); if(siteElement != null) { site = siteElement.getSite(); + setPageComplete(true); + } else { + setPageComplete(false); } } }); @@ -120,12 +123,19 @@ public class SiteSelectionPage extends TargetWizardPage { } }); + useNewRepo.addListener(SWT.Selection, new Listener() { + public void handleEvent(Event event) { + SiteSelectionPage.this.setPageComplete(! useNewRepo.getSelection()); + } + }); + if(currentProvider != null ) { disconnectTarget = createRadioButton(composite, Policy.bind("SiteSelectionPage.disconnectTarget"), 2); //$NON-NLS-1$ disconnectTarget.addListener(SWT.Selection, new Listener() { public void handleEvent(Event event) { disconnect = disconnectTarget.getSelection(); + SiteSelectionPage.this.setPageComplete(true); } }); } @@ -139,7 +149,7 @@ public class SiteSelectionPage extends TargetWizardPage { */ private void initializeValues() { Site[] sites = TargetManager.getSites(); - table.setInput(new SiteRootsElement()); + table.setInput(new SiteRootsElement(null /* no progress monitoring required */)); if (sites.length == 0) { useNewRepo.setSelection(true); } else { @@ -159,4 +169,15 @@ public class SiteSelectionPage extends TargetWizardPage { public boolean isDisconnect() { return disconnect; } + + /** + * @see org.eclipse.jface.wizard.IWizardPage#canFlipToNextPage() + */ + public boolean canFlipToNextPage() { + if(isDisconnect()) { + return false; + } else { + return true; + } + } }
\ No newline at end of file diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/TargetAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/TargetAction.java index b5277b780..bc678eb1e 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/TargetAction.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/TargetAction.java @@ -12,11 +12,17 @@ package org.eclipse.team.internal.ui.target; import java.util.ArrayList; import java.util.Iterator; +import java.util.List; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceVisitor; +import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.team.core.TeamException; import org.eclipse.team.core.target.IRemoteTargetResource; import org.eclipse.team.core.target.Site; +import org.eclipse.team.core.target.TargetManager; +import org.eclipse.team.core.target.TargetProvider; import org.eclipse.team.internal.ui.TeamUIPlugin; import org.eclipse.team.internal.ui.actions.TeamAction; @@ -71,4 +77,26 @@ public abstract class TargetAction extends TeamAction { } return (Site[])sites.toArray(new Site[sites.size()]); } + + protected IResource[] findResourcesWithOutgoingChanges(IResource[] resources) throws TeamException, CoreException { + // Collect the dirty resource + final List dirtyResources = new ArrayList(); + for (int i = 0; i < resources.length; i++) { + IResource resource = resources[i]; + final TargetProvider provider = TargetManager.getProvider(resource.getProject()); + resource.accept(new IResourceVisitor() { + public boolean visit(IResource resource) throws CoreException { + if (resource.getType() == IResource.FILE) { + if (provider.isDirty(resource)) { + dirtyResources.add(resource); + } + } else { + // Check for outgoing folder deletions? + } + return true; + } + }, IResource.DEPTH_INFINITE, true /* include phantoms */); + } + return (IResource[]) dirtyResources.toArray(new IResource[dirtyResources.size()]); + } } diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/UploadAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/UploadAction.java index 643b80d2b..6e28cb595 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/UploadAction.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/UploadAction.java @@ -11,14 +11,12 @@ package org.eclipse.team.internal.ui.target; import java.lang.reflect.InvocationTargetException; -import java.util.ArrayList; import java.util.Hashtable; import java.util.Iterator; import java.util.List; import java.util.Set; import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IResourceVisitor; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; @@ -32,10 +30,9 @@ import org.eclipse.team.internal.core.TeamPlugin; import org.eclipse.team.internal.ui.IPromptCondition; import org.eclipse.team.internal.ui.Policy; import org.eclipse.team.internal.ui.PromptingDialog; -import org.eclipse.team.internal.ui.actions.TeamAction; import org.eclipse.ui.actions.WorkspaceModifyOperation; -public class UploadAction extends TeamAction { +public class UploadAction extends TargetAction { /** * @see TeamAction#isEnabled() @@ -74,33 +71,17 @@ public class UploadAction extends TeamAction { while (iterator.hasNext()) { IProgressMonitor subMonitor = new InfiniteSubProgressMonitor(monitor, 1024); final TargetProvider provider = (TargetProvider)iterator.next(); - monitor.setTaskName(Policy.bind("UploadAction.working", provider.getURL().toExternalForm())); //$NON-NLS-1$ + subMonitor.setTaskName(Policy.bind("UploadAction.working", provider.getURL().toExternalForm())); //$NON-NLS-1$ - // Collect the dirty resource - List list = (List)table.get(provider); - final List dirtyResources = new ArrayList(); - for (Iterator iter = list.iterator(); iter.hasNext();) { - IResource resource = (IResource) iter.next(); - resource.accept(new IResourceVisitor() { - public boolean visit(IResource resource) throws CoreException { - if (resource.getType() == IResource.FILE) { - if (provider.isDirty(resource)) { - dirtyResources.add(resource); - } - } else { - // Check for outgoing folder deletions? - } - return true; - } - }, IResource.DEPTH_INFINITE, true /* include phantoms */); - } - if (dirtyResources.isEmpty()) { + IResource[] providerResources = (IResource[])((List)table.get(provider)).toArray(new IResource[0]); + IResource[] outgoingChanges = findResourcesWithOutgoingChanges(providerResources); + if (outgoingChanges.length == 0) { getShell().getDisplay().syncExec( new Runnable() { public void run() { MessageDialog.openInformation(getShell(), - Policy.bind("UploadAction.noDirtyTitle"), - Policy.bind("UploadAction.noDirtyMessage")); + Policy.bind("UploadAction.noDirtyTitle"), //$NON-NLS-1$ + Policy.bind("UploadAction.noDirtyMessage")); //$NON-NLS-1$ } }); return; @@ -109,13 +90,13 @@ public class UploadAction extends TeamAction { // Prompt for any outgoing deletions PromptingDialog prompt = new PromptingDialog( getShell(), - (IResource[])dirtyResources.toArray(new IResource[list.size()]), + outgoingChanges, new IPromptCondition() { public boolean needsPrompt(IResource resource) { return ! resource.exists(); } public String promptMessage(IResource resource) { - return Policy.bind("UploadAction.confirmFileDeletionMessage", resource.getFullPath().toString()); + return Policy.bind("UploadAction.confirmFileDeletionMessage", resource.getFullPath().toString()); //$NON-NLS-1$ } }, Policy.bind("UploadAction.confirmDeletionTitle"));//$NON-NLS-1$ @@ -133,5 +114,4 @@ public class UploadAction extends TeamAction { } }, Policy.bind("UploadAction.problemMessage"), this.PROGRESS_DIALOG); //$NON-NLS-1$ } - } |