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(); Object element = elements.next();
ISystemViewElementAdapter adapter = getAdapter(element); ISystemViewElementAdapter adapter = getAdapter(element);
if (adapter != null)
{
adapters.put(adapter, element); // want only unique adapters adapters.put(adapter, element); // want only unique adapters
} }
}
Enumeration uniqueAdapters = adapters.keys(); Enumeration uniqueAdapters = adapters.keys();
Shell shell = getShell(); Shell shell = getShell();
while (uniqueAdapters.hasMoreElements()) while (uniqueAdapters.hasMoreElements())
@ -1392,7 +1395,8 @@ public class SystemScratchpadView
{ {
Object element = elements.next(); Object element = elements.next();
ISystemViewElementAdapter adapter = getAdapter(element); ISystemViewElementAdapter adapter = getAdapter(element);
if (adapter != null)
{
if (_selectionShowRefreshAction) if (_selectionShowRefreshAction)
_selectionShowRefreshAction = adapter.showRefresh(element); _selectionShowRefreshAction = adapter.showRefresh(element);
@ -1415,6 +1419,7 @@ public class SystemScratchpadView
if (_selectionIsRemoteObject) if (_selectionIsRemoteObject)
_selectionIsRemoteObject = (getRemoteAdapter(element) != null); _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.jface.viewers.Viewer;
import org.eclipse.rse.ui.view.ISystemViewElementAdapter; import org.eclipse.rse.ui.view.ISystemViewElementAdapter;
import org.eclipse.swt.graphics.Image; 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) 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) public Object getElementAt(Object object, int i)
@ -95,10 +106,13 @@ public class SystemScratchpadViewProvider implements ILabelProvider, ITreeConten
{ {
IAdaptable adapt = (IAdaptable) object; IAdaptable adapt = (IAdaptable) object;
ISystemViewElementAdapter result = (ISystemViewElementAdapter) adapt.getAdapter(ISystemViewElementAdapter.class); ISystemViewElementAdapter result = (ISystemViewElementAdapter) adapt.getAdapter(ISystemViewElementAdapter.class);
if (result != null)
{
result.setPropertySourceInput(object); result.setPropertySourceInput(object);
result.setViewer(_view); result.setViewer(_view);
return result; return result;
} }
}
return null; return null;
} }
@ -113,6 +127,12 @@ public class SystemScratchpadViewProvider implements ILabelProvider, ITreeConten
{ {
results = adapter.getChildren(object); results = adapter.getChildren(object);
} }
else
{
IWorkbenchAdapter wa = (IWorkbenchAdapter)((IAdaptable)object).getAdapter(IWorkbenchAdapter.class);
if (wa != null)
return wa.getChildren(object);
}
} }
if (results == null) if (results == null)
{ {
@ -124,15 +144,39 @@ public class SystemScratchpadViewProvider implements ILabelProvider, ITreeConten
public String getText(Object object) 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) public Image getImage(Object object)
{ {
ImageDescriptor descriptor = getAdapterFor(object).getImageDescriptor(object);
Image image = null; Image image = null;
if (object instanceof String)
{
return null;
}
ISystemViewElementAdapter adapter = getAdapterFor(object);
if (adapter != null)
{
ImageDescriptor descriptor = adapter.getImageDescriptor(object);
if (descriptor != null) if (descriptor != null)
{ {
Object iobj = imageTable.get(descriptor); Object iobj = imageTable.get(descriptor);
@ -146,9 +190,32 @@ public class SystemScratchpadViewProvider implements ILabelProvider, ITreeConten
image = (Image) iobj; image = (Image) iobj;
} }
} }
return image; 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) public void addListener(ILabelProviderListener listener)