mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-09 10:05:24 +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,8 +1137,11 @@ public class SystemScratchpadView
|
|||
{
|
||||
Object element = elements.next();
|
||||
ISystemViewElementAdapter adapter = getAdapter(element);
|
||||
if (adapter != null)
|
||||
{
|
||||
adapters.put(adapter, element); // want only unique adapters
|
||||
}
|
||||
}
|
||||
Enumeration uniqueAdapters = adapters.keys();
|
||||
Shell shell = getShell();
|
||||
while (uniqueAdapters.hasMoreElements())
|
||||
|
@ -1392,7 +1395,8 @@ public class SystemScratchpadView
|
|||
{
|
||||
Object element = elements.next();
|
||||
ISystemViewElementAdapter adapter = getAdapter(element);
|
||||
|
||||
if (adapter != null)
|
||||
{
|
||||
if (_selectionShowRefreshAction)
|
||||
_selectionShowRefreshAction = adapter.showRefresh(element);
|
||||
|
||||
|
@ -1415,6 +1419,7 @@ public class SystemScratchpadView
|
|||
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,10 +106,13 @@ public class SystemScratchpadViewProvider implements ILabelProvider, ITreeConten
|
|||
{
|
||||
IAdaptable adapt = (IAdaptable) object;
|
||||
ISystemViewElementAdapter result = (ISystemViewElementAdapter) adapt.getAdapter(ISystemViewElementAdapter.class);
|
||||
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,15 +144,39 @@ 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 (object instanceof String)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
ISystemViewElementAdapter adapter = getAdapterFor(object);
|
||||
if (adapter != null)
|
||||
{
|
||||
ImageDescriptor descriptor = adapter.getImageDescriptor(object);
|
||||
|
||||
|
||||
if (descriptor != null)
|
||||
{
|
||||
Object iobj = imageTable.get(descriptor);
|
||||
|
@ -146,9 +190,32 @@ public class SystemScratchpadViewProvider implements ILabelProvider, ITreeConten
|
|||
image = (Image) iobj;
|
||||
}
|
||||
}
|
||||
|
||||
return image;
|
||||
}
|
||||
else if (object instanceof IAdaptable)
|
||||
{
|
||||
IWorkbenchAdapter wa = (IWorkbenchAdapter)((IAdaptable)object).getAdapter(IWorkbenchAdapter.class);
|
||||
if (wa != null)
|
||||
{
|
||||
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 null;
|
||||
}
|
||||
|
||||
|
||||
public void addListener(ILabelProviderListener listener)
|
||||
|
|
Loading…
Add table
Reference in a new issue