diff --git a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/internal/files/ui/actions/LinkWithSystemViewAction.java b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/internal/files/ui/actions/LinkWithSystemViewAction.java index 676db8ebe27..9046b7faa5c 100644 --- a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/internal/files/ui/actions/LinkWithSystemViewAction.java +++ b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/internal/files/ui/actions/LinkWithSystemViewAction.java @@ -19,16 +19,19 @@ import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.rse.core.RSECorePlugin; +import org.eclipse.rse.core.filters.ISystemFilter; import org.eclipse.rse.core.filters.ISystemFilterPoolReferenceManager; import org.eclipse.rse.core.filters.ISystemFilterReference; import org.eclipse.rse.internal.files.ui.FileResources; import org.eclipse.rse.internal.ui.view.SystemViewPart; import org.eclipse.rse.subsystems.files.core.SystemIFileProperties; +import org.eclipse.rse.subsystems.files.core.model.RemoteFileFilterString; import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile; import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileSubSystem; import org.eclipse.rse.ui.view.ContextObject; @@ -212,29 +215,85 @@ public class LinkWithSystemViewAction implements IViewActionDelegate { { String remoteObjectName = _targetRemoteFile.getAbsolutePath(); ISystemFilterPoolReferenceManager refmgr = _subSystem.getFilterPoolReferenceManager(); - if (refmgr != null) - { + if (refmgr != null){ ISystemFilterReference[] refs = refmgr.getSystemFilterReferences(_subSystem); - for (int i = 0; i < refs.length; i++) - { + for (int i = 0; i < refs.length; i++) { ISystemFilterReference ref = refs[i]; - { - if (_subSystem.doesFilterMatch(ref.getReferencedFilter(), remoteObjectName)){ - return ref; - } - else if (_subSystem.doesFilterListContentsOf(ref.getReferencedFilter(),remoteObjectName)){ - return ref; - } - else if (_subSystem.doesFilterEncompass(ref.getReferencedFilter(), remoteObjectName)){ - return ref; - } + if (doesFilterEncompass(ref.getReferencedFilter(), remoteObjectName)){ + return ref; } } } return null; } + private boolean doesFilterEncompass(ISystemFilter filter, String remoteObjectAbsoluteName) + { + boolean would = false; + String[] strings = filter.getFilterStrings(); + if (strings != null){ + for (int idx=0; !would && (idx -1){ + return true; + } + + return false; + } + } /**