- when browsing to pick the project location, if "My Home" or "Root" get picked 
the project location remains empty
- this is caused by the RSEUIFileManager browseDirectory method
   - the selection made in the SystemRemoteFolderDialog is an 
SystemFilterReference, and thus not a instance of IRemoteFile.
   - if the selection is of type ISystemFilterReference:
        - make sure that the children of the system filter are populated
                - retrieve the adapter for the filter and populate the children 
list
        - retrieve first child from the list & return parent path
        - if the parent path is null for the first child:
                - this is actually the root of the file system -> return path 
of this child
Signed-off-by: Ioana Grigoropol <ioanax.grigoro...@intel.com>
---
 .../internal/remote/rse/ui/RSEUIFileManager.java   |   27 +++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)

diff --git 
a/core/org.eclipse.ptp.remote.rse.ui/src/org/eclipse/ptp/internal/remote/rse/ui/RSEUIFileManager.java
 
b/core/org.eclipse.ptp.remote.rse.ui/src/org/eclipse/ptp/internal/remote/rse/ui/RSEUIFileManager.java
index 8182f01..c9a6357 100644
--- 
a/core/org.eclipse.ptp.remote.rse.ui/src/org/eclipse/ptp/internal/remote/rse/ui/RSEUIFileManager.java
+++ 
b/core/org.eclipse.ptp.remote.rse.ui/src/org/eclipse/ptp/internal/remote/rse/ui/RSEUIFileManager.java
@@ -7,21 +7,27 @@
  *
  * Contributors:
  * IBM Corporation - Initial API and implementation
+ * Ioana Grigoropol (Intel) - browseDirectory should return a path when 
selecting 'My Home' or 'Root'
  
*******************************************************************************/
 package org.eclipse.ptp.internal.remote.rse.ui;
 
 import java.util.Vector;
 
+import org.eclipse.core.runtime.IAdapterFactory;
 import org.eclipse.jface.window.Window;
 import org.eclipse.ptp.internal.remote.rse.core.RSEConnection;
 import org.eclipse.ptp.remote.core.IRemoteConnection;
 import org.eclipse.ptp.remote.core.IRemoteConnectionManager;
 import org.eclipse.ptp.remote.core.IRemoteServices;
 import org.eclipse.ptp.remote.ui.IRemoteUIFileManager;
+import org.eclipse.rse.core.filters.ISystemFilterReference;
 import org.eclipse.rse.core.model.IHost;
+import org.eclipse.rse.core.model.SystemChildrenContentsType;
 import org.eclipse.rse.files.ui.dialogs.SystemRemoteFileDialog;
 import org.eclipse.rse.files.ui.dialogs.SystemRemoteFolderDialog;
+import org.eclipse.rse.internal.ui.view.SystemViewFilterReferenceAdapter;
 import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile;
+import org.eclipse.rse.ui.RSEUIPlugin;
 import org.eclipse.swt.widgets.Shell;
 
 public class RSEUIFileManager implements IRemoteUIFileManager {
@@ -51,6 +57,25 @@ public class RSEUIFileManager implements 
IRemoteUIFileManager {
                        if (retObj instanceof IRemoteFile) {
                                IRemoteFile selectedFile = (IRemoteFile) retObj;
                                return selectedFile.getAbsolutePath();
+                       } else if (retObj instanceof ISystemFilterReference){
+                               ISystemFilterReference selectedFile = 
(ISystemFilterReference)retObj;
+
+                               RSEUIPlugin plugin = RSEUIPlugin.getDefault();
+                               if 
(selectedFile.getContents(SystemChildrenContentsType.getInstance()) == null) {
+                                       // in order to make sure that the 
children of this SystemFilterReference are populated
+                                       // the method getChildren() of the 
underlying adapter must be invoked
+                                       IAdapterFactory factory = 
plugin.getSystemViewAdapterFactory();
+                                       SystemViewFilterReferenceAdapter 
adapter = (SystemViewFilterReferenceAdapter)factory.getAdapter(selectedFile, 
ISystemFilterReference.class);
+                                       adapter.getChildren(selectedFile);
+                               }
+                               // now that the children are cached for the 
filter references we can try and access them
+                               Object[] con = 
selectedFile.getContents(SystemChildrenContentsType.getInstance());
+                               if (con != null && con[0] instanceof 
IRemoteFile) {
+                                       IRemoteFile file = (IRemoteFile)con[0];
+                                       if (file.getParentPath() == null)
+                                               return 
file.getAbsolutePath();// this is actually the root of the file system
+                                       return file.getParentPath();
+                               }
                        }
                }
                return null;
@@ -134,4 +159,4 @@ public class RSEUIFileManager implements 
IRemoteUIFileManager {
        public void showConnections(boolean enable) {
                onlyConnection = !enable;
        }
-}
\ No newline at end of file
+}
-- 
1.7.10.4

_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto

Reply via email to