mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-13 20:15:22 +02:00
[238294] ClassCastException using Link With Editor
This commit is contained in:
parent
f0dc80f98b
commit
40f3441b57
1 changed files with 108 additions and 73 deletions
|
@ -11,6 +11,7 @@
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* David McKnight (IBM) - [187711] Link with Editor action for System View
|
* David McKnight (IBM) - [187711] Link with Editor action for System View
|
||||||
|
* David McKnight (IBM) - [238294] ClassCastException using Link With Editor
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.rse.internal.files.ui.actions;
|
package org.eclipse.rse.internal.files.ui.actions;
|
||||||
|
|
||||||
|
@ -29,12 +30,12 @@ import org.eclipse.rse.core.RSECorePlugin;
|
||||||
import org.eclipse.rse.core.filters.ISystemFilter;
|
import org.eclipse.rse.core.filters.ISystemFilter;
|
||||||
import org.eclipse.rse.core.filters.ISystemFilterPoolReferenceManager;
|
import org.eclipse.rse.core.filters.ISystemFilterPoolReferenceManager;
|
||||||
import org.eclipse.rse.core.filters.ISystemFilterReference;
|
import org.eclipse.rse.core.filters.ISystemFilterReference;
|
||||||
|
import org.eclipse.rse.core.subsystems.ISubSystem;
|
||||||
import org.eclipse.rse.internal.files.ui.FileResources;
|
import org.eclipse.rse.internal.files.ui.FileResources;
|
||||||
import org.eclipse.rse.internal.files.ui.resources.SystemRemoteEditManager;
|
import org.eclipse.rse.internal.files.ui.resources.SystemRemoteEditManager;
|
||||||
import org.eclipse.rse.internal.ui.view.SystemViewPart;
|
import org.eclipse.rse.internal.ui.view.SystemViewPart;
|
||||||
import org.eclipse.rse.subsystems.files.core.SystemIFileProperties;
|
import org.eclipse.rse.subsystems.files.core.SystemIFileProperties;
|
||||||
import org.eclipse.rse.subsystems.files.core.model.RemoteFileFilterString;
|
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.subsystems.files.core.subsystems.IRemoteFileSubSystem;
|
||||||
import org.eclipse.rse.ui.view.ContextObject;
|
import org.eclipse.rse.ui.view.ContextObject;
|
||||||
import org.eclipse.rse.ui.view.ISystemEditableRemoteObject;
|
import org.eclipse.rse.ui.view.ISystemEditableRemoteObject;
|
||||||
|
@ -65,18 +66,23 @@ public class LinkWithSystemViewAction implements IViewActionDelegate {
|
||||||
private Object _parentObject;
|
private Object _parentObject;
|
||||||
private Object[] _children;
|
private Object[] _children;
|
||||||
private ISystemTree _systemTree;
|
private ISystemTree _systemTree;
|
||||||
private IRemoteFile _targetRemoteFile;
|
private IAdaptable _targetRemoteObj;
|
||||||
private ISystemFilterReference _filterReference;
|
private ISystemFilterReference _filterReference;
|
||||||
|
|
||||||
public ShowChildrenInTree(Object parentObject, Object[] children, ISystemFilterReference filterReference, ISystemTree systemTree, IRemoteFile targetRemoteFile)
|
public ShowChildrenInTree(Object parentObject, Object[] children, ISystemFilterReference filterReference, ISystemTree systemTree, IAdaptable targetRemoteObj)
|
||||||
{
|
{
|
||||||
_parentObject = parentObject;
|
_parentObject = parentObject;
|
||||||
_children = children;
|
_children = children;
|
||||||
_systemTree = systemTree;
|
_systemTree = systemTree;
|
||||||
_targetRemoteFile = targetRemoteFile;
|
_targetRemoteObj = targetRemoteObj;
|
||||||
_filterReference = filterReference;
|
_filterReference = filterReference;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getAbsolutePath(IAdaptable adaptable){
|
||||||
|
ISystemViewElementAdapter adapter = (ISystemViewElementAdapter)adaptable.getAdapter(ISystemViewElementAdapter.class);
|
||||||
|
return adapter.getAbsoluteName(adaptable);
|
||||||
|
}
|
||||||
|
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
// make sure the filter is expanded
|
// make sure the filter is expanded
|
||||||
|
@ -90,29 +96,30 @@ public class LinkWithSystemViewAction implements IViewActionDelegate {
|
||||||
_systemTree.createTreeItems(item, _children);
|
_systemTree.createTreeItems(item, _children);
|
||||||
item.setExpanded(true);
|
item.setExpanded(true);
|
||||||
|
|
||||||
IRemoteFile containingFolder = null;
|
IAdaptable containingFolder = null;
|
||||||
|
|
||||||
// is one of these items our remote file?
|
// is one of these items our remote file?
|
||||||
for (int i = 0; i < item.getItemCount(); i++){
|
for (int i = 0; i < item.getItemCount(); i++){
|
||||||
TreeItem childItem = item.getItem(i);
|
TreeItem childItem = item.getItem(i);
|
||||||
Object data = childItem.getData();
|
Object data = childItem.getData();
|
||||||
if (data instanceof IRemoteFile){
|
if (data instanceof IAdaptable){
|
||||||
IRemoteFile childFile = (IRemoteFile)data;
|
IAdaptable childObj = (IAdaptable)data;
|
||||||
String childPath = childFile.getAbsolutePath();
|
String childPath = getAbsolutePath(childObj);
|
||||||
if (childPath.equals(_targetRemoteFile.getAbsolutePath())){
|
String targetPath = getAbsolutePath(_targetRemoteObj);
|
||||||
|
if (childPath.equals(targetPath)){
|
||||||
// select our remote file
|
// select our remote file
|
||||||
_systemTree.getTree().setSelection(childItem);
|
_systemTree.getTree().setSelection(childItem);
|
||||||
return; // we're done!
|
return; // we're done!
|
||||||
}
|
}
|
||||||
else if (_targetRemoteFile.getAbsolutePath().startsWith(childPath)){
|
else if (targetPath.startsWith(childPath)){
|
||||||
containingFolder = childFile; // using this to start a deeper search for the target remote file
|
containingFolder = childObj; // using this to start a deeper search for the target remote file
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// remote file not found so now we have to expand further
|
// remote file not found so now we have to expand further
|
||||||
if (containingFolder != null){
|
if (containingFolder != null){
|
||||||
LinkFromFolderJob job = new LinkFromFolderJob(containingFolder, _filterReference, _targetRemoteFile, _systemTree);
|
LinkFromFolderJob job = new LinkFromFolderJob(containingFolder, _filterReference, _targetRemoteObj, _systemTree);
|
||||||
job.schedule();
|
job.schedule();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -124,21 +131,28 @@ public class LinkWithSystemViewAction implements IViewActionDelegate {
|
||||||
*/
|
*/
|
||||||
private class LinkFromFolderJob extends Job
|
private class LinkFromFolderJob extends Job
|
||||||
{
|
{
|
||||||
private IRemoteFileSubSystem _subSystem;
|
private ISubSystem _subSystem;
|
||||||
private IRemoteFile _remoteFolder;
|
private IAdaptable _remoteFolder;
|
||||||
private IRemoteFile _targetRemoteFile;
|
private IAdaptable _targetRemoteObj;
|
||||||
private ISystemTree _systemTree;
|
private ISystemTree _systemTree;
|
||||||
private ISystemFilterReference _filterRef;
|
private ISystemFilterReference _filterRef;
|
||||||
|
private ISystemViewElementAdapter _adapter;
|
||||||
|
|
||||||
public LinkFromFolderJob(IRemoteFile remoteFolder, ISystemFilterReference filterRef, IRemoteFile targetRemoteFile, ISystemTree systemTree) {
|
public LinkFromFolderJob(IAdaptable remoteFolder, ISystemFilterReference filterRef, IAdaptable targetRemoteObj, ISystemTree systemTree) {
|
||||||
super(FileResources.MESSAGE_EXPANDING_FOLDER);
|
super(FileResources.MESSAGE_EXPANDING_FOLDER);
|
||||||
_remoteFolder = remoteFolder;
|
_remoteFolder = remoteFolder;
|
||||||
_subSystem = _remoteFolder.getParentRemoteFileSubSystem();
|
_subSystem = getSubSystem(remoteFolder);
|
||||||
_filterRef = filterRef; // used for context of query
|
_filterRef = filterRef; // used for context of query
|
||||||
_targetRemoteFile = targetRemoteFile;
|
_targetRemoteObj = targetRemoteObj;
|
||||||
_systemTree = systemTree;
|
_systemTree = systemTree;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ISubSystem getSubSystem(IAdaptable adaptable)
|
||||||
|
{
|
||||||
|
ISystemViewElementAdapter adapter = (ISystemViewElementAdapter)adaptable.getAdapter(ISystemViewElementAdapter.class);
|
||||||
|
return adapter.getSubSystem(adaptable);
|
||||||
|
}
|
||||||
|
|
||||||
public IStatus run(IProgressMonitor monitor){
|
public IStatus run(IProgressMonitor monitor){
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -157,7 +171,7 @@ public class LinkWithSystemViewAction implements IViewActionDelegate {
|
||||||
|
|
||||||
// put these items in the tree and look for remoteFile
|
// put these items in the tree and look for remoteFile
|
||||||
// if we can't find the remote file under this filter, the ShowChildrenInTree will recurse
|
// if we can't find the remote file under this filter, the ShowChildrenInTree will recurse
|
||||||
Display.getDefault().asyncExec(new ShowChildrenInTree(_remoteFolder, children, _filterRef, _systemTree, _targetRemoteFile));
|
Display.getDefault().asyncExec(new ShowChildrenInTree(_remoteFolder, children, _filterRef, _systemTree, _targetRemoteObj));
|
||||||
}
|
}
|
||||||
catch (Exception e){
|
catch (Exception e){
|
||||||
}
|
}
|
||||||
|
@ -171,18 +185,29 @@ public class LinkWithSystemViewAction implements IViewActionDelegate {
|
||||||
*/
|
*/
|
||||||
private class LinkFromFilterJob extends Job
|
private class LinkFromFilterJob extends Job
|
||||||
{
|
{
|
||||||
private IRemoteFileSubSystem _subSystem;
|
private ISubSystem _subSystem;
|
||||||
private IRemoteFile _targetRemoteFile;
|
private IAdaptable _targetRemoteObj;
|
||||||
private ISystemTree _systemTree;
|
private ISystemTree _systemTree;
|
||||||
|
|
||||||
public LinkFromFilterJob(IRemoteFile targetRemoteFile, ISystemTree systemTree) {
|
public LinkFromFilterJob(IAdaptable targetRemoteObject, ISystemTree systemTree) {
|
||||||
super(FileResources.MESSAGE_EXPANDING_FILTER);
|
super(FileResources.MESSAGE_EXPANDING_FILTER);
|
||||||
|
|
||||||
_targetRemoteFile = targetRemoteFile;
|
_targetRemoteObj = targetRemoteObject;
|
||||||
_subSystem = _targetRemoteFile.getParentRemoteFileSubSystem();
|
_subSystem = getSubSystem(_targetRemoteObj);
|
||||||
_systemTree = systemTree;
|
_systemTree = systemTree;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ISystemViewElementAdapter getAdapter(IAdaptable adaptable)
|
||||||
|
{
|
||||||
|
return (ISystemViewElementAdapter)adaptable.getAdapter(ISystemViewElementAdapter.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
private ISubSystem getSubSystem(IAdaptable adaptable)
|
||||||
|
{
|
||||||
|
ISystemViewElementAdapter adapter = getAdapter(adaptable);
|
||||||
|
return adapter.getSubSystem(adaptable);
|
||||||
|
}
|
||||||
|
|
||||||
public IStatus run(IProgressMonitor monitor){
|
public IStatus run(IProgressMonitor monitor){
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -193,16 +218,12 @@ public class LinkWithSystemViewAction implements IViewActionDelegate {
|
||||||
// the object is nowhere to be found!
|
// the object is nowhere to be found!
|
||||||
return Status.OK_STATUS;
|
return Status.OK_STATUS;
|
||||||
}
|
}
|
||||||
|
|
||||||
// get the adapter
|
|
||||||
ISystemViewElementAdapter adapter = (ISystemViewElementAdapter)((IAdaptable)ref).getAdapter(ISystemViewElementAdapter.class);
|
|
||||||
|
|
||||||
|
|
||||||
// get the context
|
// get the context
|
||||||
ContextObject contextObject = new ContextObject(ref, _subSystem, ref);
|
ContextObject contextObject = new ContextObject(ref, _subSystem, ref);
|
||||||
|
|
||||||
// get the children
|
// get the children
|
||||||
Object[] children = adapter.getChildren(contextObject, monitor);
|
Object[] children = getAdapter((IAdaptable)ref).getChildren(contextObject, monitor);
|
||||||
|
|
||||||
if (monitor.isCanceled()){
|
if (monitor.isCanceled()){
|
||||||
return Status.CANCEL_STATUS;
|
return Status.CANCEL_STATUS;
|
||||||
|
@ -210,16 +231,17 @@ public class LinkWithSystemViewAction implements IViewActionDelegate {
|
||||||
|
|
||||||
// put these items in the tree and look for remoteFile
|
// put these items in the tree and look for remoteFile
|
||||||
// if we can't find the remote file under this filter, the ShowChildrenInTree will recurse
|
// if we can't find the remote file under this filter, the ShowChildrenInTree will recurse
|
||||||
Display.getDefault().asyncExec(new ShowChildrenInTree(ref, children, ref, _systemTree, _targetRemoteFile));
|
Display.getDefault().asyncExec(new ShowChildrenInTree(ref, children, ref, _systemTree, _targetRemoteObj));
|
||||||
}
|
}
|
||||||
catch (Exception e){
|
catch (Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
return Status.OK_STATUS;
|
return Status.OK_STATUS;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ISystemFilterReference findMatchingFilterReference()
|
private ISystemFilterReference findMatchingFilterReference()
|
||||||
{
|
{
|
||||||
String remoteObjectName = _targetRemoteFile.getAbsolutePath();
|
String remoteObjectName = getAbsolutePath(_targetRemoteObj);
|
||||||
ISystemFilterPoolReferenceManager refmgr = _subSystem.getFilterPoolReferenceManager();
|
ISystemFilterPoolReferenceManager refmgr = _subSystem.getFilterPoolReferenceManager();
|
||||||
if (refmgr != null){
|
if (refmgr != null){
|
||||||
ISystemFilterReference[] refs = refmgr.getSystemFilterReferences(_subSystem);
|
ISystemFilterReference[] refs = refmgr.getSystemFilterReferences(_subSystem);
|
||||||
|
@ -234,6 +256,11 @@ public class LinkWithSystemViewAction implements IViewActionDelegate {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getAbsolutePath(IAdaptable adaptable){
|
||||||
|
ISystemViewElementAdapter adapter = (ISystemViewElementAdapter)adaptable.getAdapter(ISystemViewElementAdapter.class);
|
||||||
|
return adapter.getAbsoluteName(adaptable);
|
||||||
|
}
|
||||||
|
|
||||||
private boolean doesFilterEncompass(ISystemFilter filter, String remoteObjectAbsoluteName)
|
private boolean doesFilterEncompass(ISystemFilter filter, String remoteObjectAbsoluteName)
|
||||||
{
|
{
|
||||||
boolean would = false;
|
boolean would = false;
|
||||||
|
@ -247,10 +274,12 @@ public class LinkWithSystemViewAction implements IViewActionDelegate {
|
||||||
{
|
{
|
||||||
// my home filter - will encompass iff remoteObjectAbsoluteName is within the home dir
|
// my home filter - will encompass iff remoteObjectAbsoluteName is within the home dir
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
IRemoteFile homeDir = _subSystem.getRemoteFileObject(".", new NullProgressMonitor());
|
IAdaptable homeObj = (IAdaptable)_subSystem.getObjectWithAbsoluteName(".", new NullProgressMonitor());
|
||||||
String homePath = homeDir.getAbsolutePath();
|
if (homeObj != null){
|
||||||
would = remoteObjectAbsoluteName.startsWith(homePath);
|
String homePath = getAbsolutePath(homeObj);
|
||||||
|
would = remoteObjectAbsoluteName.startsWith(homePath);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e){
|
catch (Exception e){
|
||||||
}
|
}
|
||||||
|
@ -264,37 +293,42 @@ public class LinkWithSystemViewAction implements IViewActionDelegate {
|
||||||
|
|
||||||
private boolean doesFilterStringEncompass(String filterString, String remoteObjectAbsoluteName)
|
private boolean doesFilterStringEncompass(String filterString, String remoteObjectAbsoluteName)
|
||||||
{
|
{
|
||||||
RemoteFileFilterString rffs = new RemoteFileFilterString(_subSystem.getParentRemoteFileSubSystemConfiguration(), filterString);
|
if (_subSystem instanceof IRemoteFileSubSystem){
|
||||||
// ok, this is a tweak: if the absolute name has " -folder" at the end, that means it is a folder...
|
RemoteFileFilterString rffs = new RemoteFileFilterString(((IRemoteFileSubSystem)_subSystem).getParentRemoteFileSubSystemConfiguration(), filterString);
|
||||||
if (remoteObjectAbsoluteName.endsWith(" -folder")) //$NON-NLS-1$
|
// ok, this is a tweak: if the absolute name has " -folder" at the end, that means it is a folder...
|
||||||
{
|
if (remoteObjectAbsoluteName.endsWith(" -folder")) //$NON-NLS-1$
|
||||||
if (!rffs.getShowSubDirs())
|
{
|
||||||
|
if (!rffs.getShowSubDirs())
|
||||||
|
return false;
|
||||||
|
remoteObjectAbsoluteName = remoteObjectAbsoluteName.substring(0, remoteObjectAbsoluteName.indexOf(" -folder")); //$NON-NLS-1$
|
||||||
|
}
|
||||||
|
// problem 1: we don't know if the given remote object name represents a file or folder. We have to assume a file,
|
||||||
|
// since we don't support filtering by folder names.
|
||||||
|
if (!rffs.getShowFiles())
|
||||||
return false;
|
return false;
|
||||||
remoteObjectAbsoluteName = remoteObjectAbsoluteName.substring(0, remoteObjectAbsoluteName.indexOf(" -folder")); //$NON-NLS-1$
|
|
||||||
}
|
|
||||||
// problem 1: we don't know if the given remote object name represents a file or folder. We have to assume a file,
|
|
||||||
// since we don't support filtering by folder names.
|
|
||||||
if (!rffs.getShowFiles())
|
|
||||||
return false;
|
|
||||||
|
|
||||||
// step 1: verify the path of the remote object matches the path of the filter string
|
// step 1: verify the path of the remote object matches the path of the filter string
|
||||||
String container = rffs.getPath();
|
String container = rffs.getPath();
|
||||||
if (container == null)
|
if (container == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (container.equals(".")) //$NON-NLS-1$
|
if (container.equals(".")) //$NON-NLS-1$
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
container = _subSystem.getRemoteFileObject(container, new NullProgressMonitor()).getAbsolutePath();
|
IAdaptable containerObj = (IAdaptable)_subSystem.getObjectWithAbsoluteName(container, new NullProgressMonitor());
|
||||||
}
|
if (containerObj != null){
|
||||||
catch (Exception e)
|
container = getAbsolutePath(containerObj);
|
||||||
{
|
}
|
||||||
}
|
}
|
||||||
}
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (remoteObjectAbsoluteName.startsWith(container)){
|
if (remoteObjectAbsoluteName.startsWith(container)){
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -308,11 +342,11 @@ public class LinkWithSystemViewAction implements IViewActionDelegate {
|
||||||
*/
|
*/
|
||||||
private class SelectFileJob extends Job
|
private class SelectFileJob extends Job
|
||||||
{
|
{
|
||||||
private IRemoteFileSubSystem _subSystem;
|
private ISubSystem _subSystem;
|
||||||
private String _path;
|
private String _path;
|
||||||
private ISystemTree _systemTree;
|
private ISystemTree _systemTree;
|
||||||
|
|
||||||
public SelectFileJob(IRemoteFileSubSystem subSystem, String path, ISystemTree systemTree) {
|
public SelectFileJob(ISubSystem subSystem, String path, ISystemTree systemTree) {
|
||||||
super(FileResources.MESSSAGE_QUERYING_FILE);
|
super(FileResources.MESSSAGE_QUERYING_FILE);
|
||||||
_subSystem = subSystem;
|
_subSystem = subSystem;
|
||||||
_path = path;
|
_path = path;
|
||||||
|
@ -323,21 +357,21 @@ public class LinkWithSystemViewAction implements IViewActionDelegate {
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// doing query to get the remote file
|
// doing query to get the remote file
|
||||||
final IRemoteFile remoteFile = _subSystem.getRemoteFileObject(_path, monitor);
|
final IAdaptable remoteObj = (IAdaptable)_subSystem.getObjectWithAbsoluteName(_path, monitor);
|
||||||
|
|
||||||
Display.getDefault().asyncExec(new Runnable()
|
Display.getDefault().asyncExec(new Runnable()
|
||||||
{
|
{
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
// on main thread, looking for the reference in the tree
|
// on main thread, looking for the reference in the tree
|
||||||
TreeItem item = (TreeItem)_systemTree.findFirstRemoteItemReference(remoteFile, null);
|
TreeItem item = (TreeItem)_systemTree.findFirstRemoteItemReference(remoteObj, null);
|
||||||
if (item != null){
|
if (item != null){
|
||||||
_systemTree.getTree().setSelection(item);
|
_systemTree.getTree().setSelection(item);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// no reference in the tree so we will search forward from the filter in a job (avoiding query on the main thread)
|
// no reference in the tree so we will search forward from the filter in a job (avoiding query on the main thread)
|
||||||
LinkFromFilterJob job = new LinkFromFilterJob(remoteFile, _systemTree);
|
LinkFromFilterJob job = new LinkFromFilterJob(remoteObj, _systemTree);
|
||||||
job.schedule();
|
job.schedule();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -411,12 +445,12 @@ public class LinkWithSystemViewAction implements IViewActionDelegate {
|
||||||
IFile file = fileInput.getFile();
|
IFile file = fileInput.getFile();
|
||||||
SystemIFileProperties properties = new SystemIFileProperties(file);
|
SystemIFileProperties properties = new SystemIFileProperties(file);
|
||||||
Object rmtEditable = properties.getRemoteFileObject();
|
Object rmtEditable = properties.getRemoteFileObject();
|
||||||
IRemoteFile remoteObj = null;
|
IAdaptable remoteObj = null;
|
||||||
IRemoteFileSubSystem subSystem = null;
|
ISubSystem subSystem = null;
|
||||||
if (rmtEditable != null && rmtEditable instanceof ISystemEditableRemoteObject)
|
if (rmtEditable != null && rmtEditable instanceof ISystemEditableRemoteObject)
|
||||||
{
|
{
|
||||||
ISystemEditableRemoteObject editable = (ISystemEditableRemoteObject) rmtEditable;
|
ISystemEditableRemoteObject editable = (ISystemEditableRemoteObject) rmtEditable;
|
||||||
remoteObj = (IRemoteFile)editable.getRemoteObject();
|
remoteObj = editable.getRemoteObject();
|
||||||
|
|
||||||
TreeItem item = (TreeItem)systemTree.findFirstRemoteItemReference(remoteObj, null);
|
TreeItem item = (TreeItem)systemTree.findFirstRemoteItemReference(remoteObj, null);
|
||||||
if (item != null){
|
if (item != null){
|
||||||
|
@ -424,7 +458,8 @@ public class LinkWithSystemViewAction implements IViewActionDelegate {
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
subSystem = remoteObj.getParentRemoteFileSubSystem();
|
ISystemViewElementAdapter adapter = (ISystemViewElementAdapter)remoteObj.getAdapter(ISystemViewElementAdapter.class);
|
||||||
|
subSystem = adapter.getSubSystem(remoteObj);
|
||||||
|
|
||||||
// no match, so we will expand from filter
|
// no match, so we will expand from filter
|
||||||
// query matching filter in a job (to avoid main thread)
|
// query matching filter in a job (to avoid main thread)
|
||||||
|
@ -439,7 +474,7 @@ public class LinkWithSystemViewAction implements IViewActionDelegate {
|
||||||
String path = properties.getRemoteFilePath();
|
String path = properties.getRemoteFilePath();
|
||||||
if (subsystemId != null && path != null)
|
if (subsystemId != null && path != null)
|
||||||
{
|
{
|
||||||
subSystem = (IRemoteFileSubSystem)RSECorePlugin.getTheSystemRegistry().getSubSystem(subsystemId);
|
subSystem = RSECorePlugin.getTheSystemRegistry().getSubSystem(subsystemId);
|
||||||
if (subSystem != null)
|
if (subSystem != null)
|
||||||
{
|
{
|
||||||
// query for file in a job (to avoid main thread)
|
// query for file in a job (to avoid main thread)
|
||||||
|
|
Loading…
Add table
Reference in a new issue