1
0
Fork 0
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:
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,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);
}
}
}

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,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;
}