diff --git a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/view/SystemViewRemoteFileAdapter.java b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/view/SystemViewRemoteFileAdapter.java index 54cf7bc215b..7a5195e1c8c 100644 --- a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/view/SystemViewRemoteFileAdapter.java +++ b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/view/SystemViewRemoteFileAdapter.java @@ -45,6 +45,7 @@ import org.eclipse.rse.core.model.IHost; import org.eclipse.rse.core.model.ISystemMessageObject; import org.eclipse.rse.core.model.ISystemRegistry; import org.eclipse.rse.core.model.ISystemResourceSet; +import org.eclipse.rse.core.model.SystemChildrenContentsType; import org.eclipse.rse.core.model.SystemMessageObject; import org.eclipse.rse.core.model.SystemWorkspaceResourceSet; import org.eclipse.rse.core.subsystems.ISubSystem; @@ -522,6 +523,11 @@ public class SystemViewRemoteFileAdapter { AbstractTreeViewer atv = (AbstractTreeViewer) getViewer(); isOpen = atv.getExpandedState(element); + if (!isOpen) + { + if (!hasChildren(element)) + isOpen = true; + } } if (file.isRoot()) return RSEUIPlugin.getDefault().getImageDescriptor(isOpen ? ISystemIconConstants.ICON_SYSTEM_ROOTDRIVEOPEN_ID : ISystemIconConstants.ICON_SYSTEM_ROOTDRIVE_ID); @@ -784,6 +790,13 @@ public class SystemViewRemoteFileAdapter hasChildren = file.hasContents(RemoteChildrenContentsType.getInstance()); } } + else + { + // check that the children are actually there + Object[] contents = file.getContents(RemoteChildrenContentsType.getInstance()); + if (!file.isStale() && contents != null && contents.length == 0 ) + hasChildren = false; + } return hasChildren; } diff --git a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/RemoteFile.java b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/RemoteFile.java index ddd54f93ba1..9e756e7087a 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/RemoteFile.java +++ b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/RemoteFile.java @@ -860,8 +860,10 @@ public abstract class RemoteFile implements IRemoteFile, IAdaptable, Comparable if (filter == null) { filter = "*"; //$NON-NLS-1$ } - - if (con != null && con.length > 0) + + // DKM - consider all containers so that we can tell if an empty one + // has been queried before (i.e. via IRemoteFile[0] as it's contents vs null) +// if (con != null && con.length > 0) { isContainer = true; }