1
0
Fork 0
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:
David McKnight 2006-10-23 17:18:03 +00:00
parent 3a86c51d61
commit 505f66e7de
2 changed files with 113 additions and 41 deletions

View file

@ -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);
}
}
}

View file

@ -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)