Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave McKnight2014-11-24 17:44:53 +0000
committerDave McKnight2015-01-28 16:06:28 +0000
commitf94304349595c078a6d7fbd03f2555ad007f6c3d (patch)
tree92b3d61cea9e360141c83d97fa70c709ba5373ab
parent53c5808e0091ec7cdd04db2f90bb9b4b2e2eda7c (diff)
downloadorg.eclipse.tm-f94304349595c078a6d7fbd03f2555ad007f6c3d.tar.gz
org.eclipse.tm-f94304349595c078a6d7fbd03f2555ad007f6c3d.tar.xz
org.eclipse.tm-f94304349595c078a6d7fbd03f2555ad007f6c3d.zip
[434388] A file name filter for the first filter string affected all
other filter strings in an RSE filter
-rw-r--r--rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/internal/files/ui/view/SystemViewRemoteFileAdapter.java105
1 files changed, 50 insertions, 55 deletions
diff --git a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/internal/files/ui/view/SystemViewRemoteFileAdapter.java b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/internal/files/ui/view/SystemViewRemoteFileAdapter.java
index e7ce05a3e..b4b86c6e6 100644
--- a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/internal/files/ui/view/SystemViewRemoteFileAdapter.java
+++ b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/internal/files/ui/view/SystemViewRemoteFileAdapter.java
@@ -83,6 +83,7 @@
* Xuan Chen (IBM) - [399101] RSE edit actions on local files that map to actually workspace resources should not use temp files
* David McKnight (IBM) - [420798] Slow performances in RDz 9.0 with opening 7000 files located on a network driver.
* David McKnight (IBM) - [430900] RSE table enhancement to populate full column when clicking column for sorting purposes
+ * David McKnight (IBM) - [434388] A file name filter for the first filter string affected all other filter strings in an RSE filter
*******************************************************************************/
package org.eclipse.rse.internal.files.ui.view;
@@ -786,38 +787,15 @@ public class SystemViewRemoteFileAdapter
}
- /*
- RemoteFileFilterString orgRffs = file.getFilterString();
-
-
- if (orgRffs != null)
- {
- if (foldersOnly)
- {
- RemoteFileFilterString rffs = (RemoteFileFilterString) orgRffs.clone();
- rffs.setPath(null);
- rffs.setShowFiles(false);
- rffs.setShowSubDirs(true);
- filter = rffs.toString();
- }
- else if (filesOnly)
- {
- RemoteFileFilterString rffs = (RemoteFileFilterString) orgRffs.clone();
- rffs.setPath(null);
- rffs.setShowSubDirs(false);
- rffs.setShowFiles(true);
- filter = rffs.toString();
- }
- }
- else
- */
String filter = null;
+ String[] filters = null;
if (filterReference != null)
{
ISystemFilter filterObject = filterReference.getReferencedFilter();
- if (filterObject.getFilterStringCount() > 0)
- {
- String filterString = filterObject.getFilterStrings()[0];
+ int count = filterObject.getFilterStringCount();
+ filters = new String[count];
+ for (int i = 0; i < count; i++){
+ String filterString = filterObject.getFilterStrings()[i];
String separator = PathUtility.getSeparator(filterString);
int sepIndex = filterString.lastIndexOf(separator);
@@ -830,35 +808,39 @@ public class SystemViewRemoteFileAdapter
// fix for 197089
filter = filterString;
}
+ filters[i] = filter;
}
}
else
{
-
- String filterString = getFilterString();
- if (foldersOnly)
- {
- if (filterString == null)
- filter = "* /nf"; //$NON-NLS-1$
- else
- filter = filterString;
- }
- else if (filesOnly)
- {
- if (filterString == null)
- filter = "* /ns"; //$NON-NLS-1$
- else
- filter = filterString;
- }
- else
- {
- if (filterString == null)
- filter = "*"; //$NON-NLS-1$
+ String filterString = getFilterString();
+ if (foldersOnly)
+ {
+ if (filterString == null)
+ filter = "* /nf"; //$NON-NLS-1$
+ else
+ filter = filterString;
+ }
+ else if (filesOnly)
+ {
+ if (filterString == null)
+ filter = "* /ns"; //$NON-NLS-1$
+ else
+ filter = filterString;
+ }
else
- filter = filterString;
- }
+ {
+ if (filterString == null)
+ filter = "*"; //$NON-NLS-1$
+ else
+ filter = filterString;
+ }
+ filters = new String[1];
+ filters[0] = filter;
}
+
+
Object[] children = null;
Viewer v = getViewer();
@@ -887,12 +869,15 @@ public class SystemViewRemoteFileAdapter
// TODO next release, find a risk-free way to avoid duplicate queries
// synchronized (file)
+ List allChildren = new ArrayList();
+ for (int i = 0; i < filters.length; i++)
{
- boolean hasChildren = file.hasContents(RemoteChildrenContentsType.getInstance(), filter);
+ String theFilter = filters[i];
+ boolean hasChildren = file.hasContents(RemoteChildrenContentsType.getInstance(), theFilter);
if (hasChildren && !file.isStale())
{
- children = file.getContents(RemoteChildrenContentsType.getInstance(), filter);
+ children = file.getContents(RemoteChildrenContentsType.getInstance(), theFilter);
children = filterChildren(children);
}
else
@@ -902,11 +887,11 @@ public class SystemViewRemoteFileAdapter
if (monitor != null)
{
- children = ss.resolveFilterString(file, filter, monitor);
+ children = ss.resolveFilterString(file, theFilter, monitor);
}
else
{
- children = ss.resolveFilterString(file, filter, new NullProgressMonitor());
+ children = ss.resolveFilterString(file, theFilter, new NullProgressMonitor());
}
if ((children == null) || (children.length == 0))
@@ -950,10 +935,20 @@ public class SystemViewRemoteFileAdapter
if (originalFile != null && originalFile != file){
originalFile.markStale(false);
}
+ addToList(allChildren, children);
}
- return children;
+ return allChildren.toArray();
}
+ private void addToList(List list, Object[] children){
+ for (int i = 0; i < children.length; i++){
+ Object child = children[i];
+ if (child != null && !list.contains(child)){
+ list.add(child);
+ }
+ }
+ }
+
private Object[] filterChildren(Object[] children) {
boolean showHidden = RSEUIPlugin.getDefault().getPreferenceStore().getBoolean(ISystemFilePreferencesConstants.SHOWHIDDEN);

Back to the top