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:
parent
6e9b519517
commit
e77a193982
2 changed files with 36 additions and 5 deletions
|
@ -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) {
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Add table
Reference in a new issue