mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-04 23:55:26 +02:00
fix for Bug 161840
This commit is contained in:
parent
3a86c51d61
commit
505f66e7de
2 changed files with 113 additions and 41 deletions
|
@ -1137,7 +1137,10 @@ public class SystemScratchpadView
|
|||
{
|
||||
Object element = elements.next();
|
||||
ISystemViewElementAdapter adapter = getAdapter(element);
|
||||
adapters.put(adapter, element); // want only unique adapters
|
||||
if (adapter != null)
|
||||
{
|
||||
adapters.put(adapter, element); // want only unique adapters
|
||||
}
|
||||
}
|
||||
Enumeration uniqueAdapters = adapters.keys();
|
||||
Shell shell = getShell();
|
||||
|
@ -1392,28 +1395,30 @@ public class SystemScratchpadView
|
|||
{
|
||||
Object element = elements.next();
|
||||
ISystemViewElementAdapter adapter = getAdapter(element);
|
||||
|
||||
if (_selectionShowRefreshAction)
|
||||
_selectionShowRefreshAction = adapter.showRefresh(element);
|
||||
|
||||
if (_selectionShowOpenViewActions)
|
||||
_selectionShowOpenViewActions = adapter.showOpenViewActions(element);
|
||||
|
||||
if (_selectionShowDeleteAction)
|
||||
_selectionShowDeleteAction = adapter.showDelete(element);
|
||||
|
||||
if (_selectionShowRenameAction)
|
||||
_selectionShowRenameAction = adapter.showRename(element);
|
||||
|
||||
if (_selectionEnableDeleteAction)
|
||||
_selectionEnableDeleteAction = _selectionShowDeleteAction && adapter.canDelete(element);
|
||||
//System.out.println("ENABLE DELETE SET TO " + selectionEnableDeleteAction);
|
||||
|
||||
if (_selectionEnableRenameAction)
|
||||
_selectionEnableRenameAction = _selectionShowRenameAction && adapter.canRename(element);
|
||||
|
||||
if (_selectionIsRemoteObject)
|
||||
_selectionIsRemoteObject = (getRemoteAdapter(element) != null);
|
||||
if (adapter != null)
|
||||
{
|
||||
if (_selectionShowRefreshAction)
|
||||
_selectionShowRefreshAction = adapter.showRefresh(element);
|
||||
|
||||
if (_selectionShowOpenViewActions)
|
||||
_selectionShowOpenViewActions = adapter.showOpenViewActions(element);
|
||||
|
||||
if (_selectionShowDeleteAction)
|
||||
_selectionShowDeleteAction = adapter.showDelete(element);
|
||||
|
||||
if (_selectionShowRenameAction)
|
||||
_selectionShowRenameAction = adapter.showRename(element);
|
||||
|
||||
if (_selectionEnableDeleteAction)
|
||||
_selectionEnableDeleteAction = _selectionShowDeleteAction && adapter.canDelete(element);
|
||||
//System.out.println("ENABLE DELETE SET TO " + selectionEnableDeleteAction);
|
||||
|
||||
if (_selectionEnableRenameAction)
|
||||
_selectionEnableRenameAction = _selectionShowRenameAction && adapter.canRename(element);
|
||||
|
||||
if (_selectionIsRemoteObject)
|
||||
_selectionIsRemoteObject = (getRemoteAdapter(element) != null);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@ import org.eclipse.jface.viewers.ITreeContentProvider;
|
|||
import org.eclipse.jface.viewers.Viewer;
|
||||
import org.eclipse.rse.ui.view.ISystemViewElementAdapter;
|
||||
import org.eclipse.swt.graphics.Image;
|
||||
import org.eclipse.ui.model.IWorkbenchAdapter;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -79,8 +80,18 @@ public class SystemScratchpadViewProvider implements ILabelProvider, ITreeConten
|
|||
|
||||
public boolean hasChildren(Object object)
|
||||
{
|
||||
return getAdapterFor(object).hasChildren(object);
|
||||
|
||||
ISystemViewElementAdapter adapter = getAdapterFor(object);
|
||||
if (adapter != null)
|
||||
{
|
||||
return adapter.hasChildren(object);
|
||||
}
|
||||
else if (object instanceof IAdaptable)
|
||||
{
|
||||
IWorkbenchAdapter wa = (IWorkbenchAdapter)((IAdaptable)object).getAdapter(IWorkbenchAdapter.class);
|
||||
if (wa != null)
|
||||
return wa.getChildren(object).length > 0;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public Object getElementAt(Object object, int i)
|
||||
|
@ -95,9 +106,12 @@ public class SystemScratchpadViewProvider implements ILabelProvider, ITreeConten
|
|||
{
|
||||
IAdaptable adapt = (IAdaptable) object;
|
||||
ISystemViewElementAdapter result = (ISystemViewElementAdapter) adapt.getAdapter(ISystemViewElementAdapter.class);
|
||||
result.setPropertySourceInput(object);
|
||||
result.setViewer(_view);
|
||||
return result;
|
||||
if (result != null)
|
||||
{
|
||||
result.setPropertySourceInput(object);
|
||||
result.setViewer(_view);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@ -113,6 +127,12 @@ public class SystemScratchpadViewProvider implements ILabelProvider, ITreeConten
|
|||
{
|
||||
results = adapter.getChildren(object);
|
||||
}
|
||||
else
|
||||
{
|
||||
IWorkbenchAdapter wa = (IWorkbenchAdapter)((IAdaptable)object).getAdapter(IWorkbenchAdapter.class);
|
||||
if (wa != null)
|
||||
return wa.getChildren(object);
|
||||
}
|
||||
}
|
||||
if (results == null)
|
||||
{
|
||||
|
@ -124,30 +144,77 @@ public class SystemScratchpadViewProvider implements ILabelProvider, ITreeConten
|
|||
|
||||
public String getText(Object object)
|
||||
{
|
||||
return getAdapterFor(object).getText(object);
|
||||
if (object instanceof String)
|
||||
{
|
||||
return (String)object;
|
||||
}
|
||||
ISystemViewElementAdapter adapter = getAdapterFor(object);
|
||||
if (adapter != null)
|
||||
{
|
||||
return adapter.getText(object);
|
||||
}
|
||||
else if (object instanceof IAdaptable)
|
||||
{
|
||||
IWorkbenchAdapter wa = (IWorkbenchAdapter)((IAdaptable)object).getAdapter(IWorkbenchAdapter.class);
|
||||
if (wa != null)
|
||||
{
|
||||
return wa.getLabel(object);
|
||||
}
|
||||
}
|
||||
return object.toString();
|
||||
}
|
||||
|
||||
public Image getImage(Object object)
|
||||
{
|
||||
|
||||
ImageDescriptor descriptor = getAdapterFor(object).getImageDescriptor(object);
|
||||
|
||||
Image image = null;
|
||||
if (descriptor != null)
|
||||
if (object instanceof String)
|
||||
{
|
||||
Object iobj = imageTable.get(descriptor);
|
||||
if (iobj == null)
|
||||
return null;
|
||||
}
|
||||
ISystemViewElementAdapter adapter = getAdapterFor(object);
|
||||
if (adapter != null)
|
||||
{
|
||||
ImageDescriptor descriptor = adapter.getImageDescriptor(object);
|
||||
|
||||
|
||||
if (descriptor != null)
|
||||
{
|
||||
image = descriptor.createImage();
|
||||
imageTable.put(descriptor, image);
|
||||
Object iobj = imageTable.get(descriptor);
|
||||
if (iobj == null)
|
||||
{
|
||||
image = descriptor.createImage();
|
||||
imageTable.put(descriptor, image);
|
||||
}
|
||||
else
|
||||
{
|
||||
image = (Image) iobj;
|
||||
}
|
||||
}
|
||||
else
|
||||
return image;
|
||||
}
|
||||
else if (object instanceof IAdaptable)
|
||||
{
|
||||
IWorkbenchAdapter wa = (IWorkbenchAdapter)((IAdaptable)object).getAdapter(IWorkbenchAdapter.class);
|
||||
if (wa != null)
|
||||
{
|
||||
image = (Image) iobj;
|
||||
ImageDescriptor descriptor = wa.getImageDescriptor(object);
|
||||
if (descriptor != null)
|
||||
{
|
||||
Object iobj = imageTable.get(descriptor);
|
||||
if (iobj == null)
|
||||
{
|
||||
image = descriptor.createImage();
|
||||
imageTable.put(descriptor, image);
|
||||
}
|
||||
else
|
||||
{
|
||||
image = (Image) iobj;
|
||||
}
|
||||
}
|
||||
return image;
|
||||
}
|
||||
}
|
||||
|
||||
return image;
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue