1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-15 13:05:22 +02:00

[143503] [updating] need a synchronize cache operation

This commit is contained in:
David McKnight 2007-12-03 20:34:46 +00:00
parent 6e9b519517
commit e77a193982
2 changed files with 36 additions and 5 deletions

View file

@ -15,7 +15,11 @@
package org.eclipse.rse.files.ui.actions; package org.eclipse.rse.files.ui.actions;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IAdaptable;
@ -33,6 +37,7 @@ import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.rse.core.model.SystemRemoteResourceSet; import org.eclipse.rse.core.model.SystemRemoteResourceSet;
import org.eclipse.rse.internal.files.ui.Activator; import org.eclipse.rse.internal.files.ui.Activator;
import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile; import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile;
import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileSubSystem;
import org.eclipse.rse.ui.view.ISystemViewElementAdapter; import org.eclipse.rse.ui.view.ISystemViewElementAdapter;
import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Shell;
@ -72,10 +77,36 @@ public class SynchronizeCacheActionDelegate implements IActionDelegate {
private void cacheRemoteFiles(IRemoteFile[] files, IProgressMonitor monitor) private void cacheRemoteFiles(IRemoteFile[] files, IProgressMonitor monitor)
{ {
IRemoteFile firstFile = files[0]; SystemRemoteResourceSet[] sets = getResourceSetsFor(files);
ISystemViewElementAdapter adapter = (ISystemViewElementAdapter)((IAdaptable)firstFile).getAdapter(ISystemViewElementAdapter.class); for (int i = 0; i < sets.length; i++){
SystemRemoteResourceSet set = new SystemRemoteResourceSet(firstFile.getParentRemoteFileSubSystem(), files); SystemRemoteResourceSet set = sets[i];
adapter.doDrag(set, monitor); set.getAdapter().doDrag(set, monitor);
}
}
private SystemRemoteResourceSet[] getResourceSetsFor(IRemoteFile[] files)
{
ISystemViewElementAdapter adapter = null;
Map sets = new HashMap();
for (int i = 0; i < files.length; i++){
IRemoteFile file = files[i];
if (adapter == null){
adapter = (ISystemViewElementAdapter)((IAdaptable)file).getAdapter(ISystemViewElementAdapter.class);
}
IRemoteFileSubSystem ss = file.getParentRemoteFileSubSystem();
SystemRemoteResourceSet set = (SystemRemoteResourceSet)sets.get(ss);
if (set == null){
set = new SystemRemoteResourceSet(ss, adapter);
sets.put(ss, set);
}
set.addResource(file);
}
Iterator iterator = sets.values().iterator();
List results = new ArrayList();
while (iterator.hasNext()){
results.add(iterator.next());
}
return (SystemRemoteResourceSet[])results.toArray(new SystemRemoteResourceSet[results.size()]);
} }
boolean performCacheRemoteFiles(final IRemoteFile[] files) { boolean performCacheRemoteFiles(final IRemoteFile[] files) {

View file

@ -464,7 +464,7 @@ public class UniversalFileTransferUtility
try try
{ {
if (broadestContainer != null && !broadestContainer.isSynchronized(IResource.DEPTH_INFINITE)){ if (broadestContainer != null && !broadestContainer.isSynchronized(IResource.DEPTH_INFINITE)){
broadestContainer.refreshLocal(IResource.DEPTH_INFINITE, monitor); broadestContainer.refreshLocal(IResource.DEPTH_INFINITE, null);//monitor);
} }
} }
catch (Exception e) catch (Exception e)