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 b8f892ed129..e123f33c7b9 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 @@ -41,6 +41,7 @@ import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.AbstractTreeViewer; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.Viewer; +import org.eclipse.rse.core.RSECorePlugin; import org.eclipse.rse.core.SystemBasePlugin; import org.eclipse.rse.core.events.ISystemResourceChangeEvents; import org.eclipse.rse.core.events.SystemResourceChangeEvent; @@ -109,6 +110,7 @@ import org.eclipse.rse.subsystems.files.core.subsystems.RemoteFileEmpty; import org.eclipse.rse.subsystems.files.core.subsystems.RemoteFileRoot; import org.eclipse.rse.subsystems.files.core.subsystems.RemoteSearchResultsContentsType; import org.eclipse.rse.subsystems.files.core.util.ValidatorFileUniqueName; +import org.eclipse.rse.subsystems.shells.core.subsystems.IRemoteCmdSubSystem; import org.eclipse.rse.ui.ISystemContextMenuConstants; import org.eclipse.rse.ui.ISystemIconConstants; import org.eclipse.rse.ui.ISystemMessages; @@ -3016,6 +3018,8 @@ public class SystemViewRemoteFileAdapter * If the given value is false, then returns true if the target is not an archive file. *
  • name="isVirtual". If the given value is true, then returns true if the target is a virtual file. * If the given value is false, then returns true if the target is not a virtual file.
  • + *
  • name="isCommandSubSystemExists". If the given value is true, then returns true if the host contains a command subsystem. + * If the given value is false, then returns true if the host does not contain a command subsystem.
  • * *

    * @see org.eclipse.ui.IActionFilter#testAttribute(java.lang.Object, java.lang.String, java.lang.String) @@ -3183,6 +3187,32 @@ public class SystemViewRemoteFileAdapter return tgt.isLink() && value.equals("true") || //$NON-NLS-1$ !tgt.isLink() && value.equals("false"); //$NON-NLS-1$ } + else if (inName.equals("iscommandsubsystemexists")) { //$NON-NLS-1$ + + boolean test = value.equals("true"); //$NON-NLS-1$ + + ISubSystem subsystem = getSubSystem(tgt); + + if (subsystem != null) { + IHost host = subsystem.getHost(); + ISystemRegistry registry = RSECorePlugin.getDefault().getSystemRegistry(); + + ISubSystem[] subsystems = registry.getSubSystems(host); + + for (int i = 0; i < subsystems.length; i++) { + ISubSystem temp = subsystems[i]; + + if (temp instanceof IRemoteCmdSubSystem) { + return test; + } + } + + return !test; + } + else { + return !test; + } + } } return super.testAttribute(target, name, value); diff --git a/rse/plugins/org.eclipse.rse.shells.ui/plugin.xml b/rse/plugins/org.eclipse.rse.shells.ui/plugin.xml index b3d76527fcb..856000d57ab 100644 --- a/rse/plugins/org.eclipse.rse.shells.ui/plugin.xml +++ b/rse/plugins/org.eclipse.rse.shells.ui/plugin.xml @@ -149,7 +149,10 @@ Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core objectClass="org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile" id="org.eclipse.rse.shells.ui.launch"> - + + + +