1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-09-10 12:03:16 +02:00

[164118] - fix for moved file not showing under filter - problem is that target filter needs to be invalidated during the copy/move operation

This commit is contained in:
David McKnight 2006-11-27 18:47:13 +00:00
parent 94e0ef912d
commit 9910ab7073
2 changed files with 47 additions and 1 deletions

View file

@ -24,6 +24,9 @@ import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.rse.core.SystemBasePlugin;
import org.eclipse.rse.core.filters.ISystemFilter;
import org.eclipse.rse.core.filters.ISystemFilterPool;
import org.eclipse.rse.core.filters.ISystemFilterPoolReferenceManager;
import org.eclipse.rse.core.filters.ISystemFilterReference;
import org.eclipse.rse.core.model.IHost;
import org.eclipse.rse.core.subsystems.ISubSystem;
@ -387,6 +390,39 @@ public class SystemCopyRemoteFileAction extends SystemBaseCopyAction
}
return targetContainer;
}
private void invalidateFilterReferences(IRemoteFile targetFolder)
{
String path = targetFolder.getAbsolutePath();
IRemoteFileSubSystem fileSS = targetFolder.getParentRemoteFileSubSystem();
ISystemFilterPoolReferenceManager mgr = fileSS.getSystemFilterPoolReferenceManager();
ISystemFilterPool[] pools = mgr.getReferencedSystemFilterPools();
for (int i = 0; i < pools.length; i++)
{
ISystemFilterPool pool = pools[i];
ISystemFilter[] filters = pool.getSystemFilters();
for (int f = 0; f < filters.length; f++)
{
String[] strs = filters[f].getFilterStrings();
for (int s = 0; s < strs.length; s++)
{
String str = strs[s];
int lastSep = str.lastIndexOf(fileSS.getSeparator());
if (lastSep > 0)
{
str = str.substring(0, lastSep);
}
//if (StringCompare.compare(str, path, true))
if (str.equals(path))
{
ISystemFilterReference ref = mgr.getSystemFilterReference(fileSS, filters[f]);
ref.markStale(true);
}
}
}
}
}
/**
* Called after all the copy/move operations end, be it successfully or not.
@ -408,13 +444,21 @@ public class SystemCopyRemoteFileAction extends SystemBaseCopyAction
// after it is refreshed via the remote_resource_created event.
if (originatingViewer instanceof SystemView)
{
boolean selectedOk = ((SystemView)originatingViewer).selectRemoteObjects(targetFolder.getAbsolutePath(), fileSS, null);
// boolean selectedOk = ((SystemView)originatingViewer).selectRemoteObjects(targetFolder.getAbsolutePath(), fileSS, null);
//System.out.println(targetFolder.getAbsolutePath()+" selectedOK? " + selectedOk);
//if (selectedOk)
// return;
}
}
}
targetFolder.markStale(true);
// invalidate filters
invalidateFilterReferences(targetFolder);
RSEUIPlugin.getTheSystemRegistry().fireRemoteResourceChangeEvent(
ISystemRemoteChangeEvents.SYSTEM_REMOTE_RESOURCE_CREATED, copiedFiles, targetFolder.getAbsolutePath(), fileSS, null, originatingViewer);

View file

@ -2704,7 +2704,9 @@ public class SystemViewRemoteFileAdapter
names = new String[children.length];
for (int idx = 0; idx < names.length; idx++)
{
names[idx] = ((IRemoteFile) children[idx]).getName();
}
return names;
}