From 084a3ce496c1019b64308ee393a9236a6715082b Mon Sep 17 00:00:00 2001 From: Uwe Stieber Date: Fri, 16 Feb 2007 10:26:08 +0000 Subject: [PATCH] [fix] 174418 SystemAdapterHelpers.getAdapter(Object) try to find adapter twice --- .../rse/core/SystemAdapterHelpers.java | 133 +++++++++--------- 1 file changed, 67 insertions(+), 66 deletions(-) diff --git a/rse/plugins/org.eclipse.rse.ui/systems/org/eclipse/rse/core/SystemAdapterHelpers.java b/rse/plugins/org.eclipse.rse.ui/systems/org/eclipse/rse/core/SystemAdapterHelpers.java index 04566d010b6..076ff77f5ee 100644 --- a/rse/plugins/org.eclipse.rse.ui/systems/org/eclipse/rse/core/SystemAdapterHelpers.java +++ b/rse/plugins/org.eclipse.rse.ui/systems/org/eclipse/rse/core/SystemAdapterHelpers.java @@ -29,87 +29,88 @@ import org.eclipse.rse.ui.view.SystemViewAdapterFactory; /** * This class has static helper methods that will get an adapter given an object. */ -public class SystemAdapterHelpers -{ - - - /** +public class SystemAdapterHelpers { + + /** * Returns the implementation of ISystemViewElement for the given * object. Returns null if the adapter is not defined or the * object is not adaptable. */ public static ISystemViewElementAdapter getAdapter(Object o) { ISystemViewElementAdapter adapter = null; + + // In case the object itself is an adaptable, call the objects getAdapter() method if (o instanceof IAdaptable) { - adapter = (ISystemViewElementAdapter) ((IAdaptable) o).getAdapter(ISystemViewElementAdapter.class); - } if (o != null) { - adapter = (ISystemViewElementAdapter) Platform.getAdapterManager().getAdapter(o, ISystemViewElementAdapter.class); + adapter = (ISystemViewElementAdapter)((IAdaptable)o).getAdapter(ISystemViewElementAdapter.class); + } else if (o != null) { + // object is not an adaptable itself, call the adapter manager + adapter = (ISystemViewElementAdapter)Platform.getAdapterManager().getAdapter(o, ISystemViewElementAdapter.class); } + return adapter; } - - /** - * Overload to use when calling from a viewer. This not only finds and returns - * the adapter, but also sets its viewer to the given viewer. Many actions rely - * on this being set. - */ - public static ISystemViewElementAdapter getAdapter(Object o, Viewer viewer) - { - ISystemViewElementAdapter adapter = getAdapter(o); - if (adapter != null) - adapter.setViewer(viewer); - return adapter; - } - - /** - * Overload to use when calling from a viewer. This not only finds and returns - * the adapter, but also sets its viewer and input provider to the given viewer. - * Many actions rely on this being set. - */ - public static ISystemViewElementAdapter getAdapter(Object o, Viewer viewer, ISystemViewInputProvider inputProvider) - { - ISystemViewElementAdapter adapter = getAdapter(o, viewer); - - if (adapter != null) { - adapter.setInput(inputProvider); - } - - return adapter; - } - /** - * Returns the implementation of ISystemRemoteElementAdapter for the given - * remote object. Returns null if this object does not adaptable to this. - */ - public static ISystemRemoteElementAdapter getRemoteAdapter(Object o) - { - ISystemRemoteElementAdapter adapter = null; - if (!(o instanceof IAdaptable)) - adapter = (ISystemRemoteElementAdapter)Platform.getAdapterManager().getAdapter(o,ISystemRemoteElementAdapter.class); - else - adapter = (ISystemRemoteElementAdapter)((IAdaptable)o).getAdapter(ISystemRemoteElementAdapter.class); - return adapter; - } - - /** - * Overload to use when calling from a viewer. This not only finds and returns - * the adapter, but also sets its viewer to the given viewer. Many actions rely - * on this being set. - */ - public static ISystemRemoteElementAdapter getRemoteAdapter(Object o, Viewer viewer) - { - ISystemRemoteElementAdapter adapter = getRemoteAdapter(o); - if ((adapter != null) && (adapter instanceof ISystemViewElementAdapter)) - ((ISystemViewElementAdapter)adapter).setViewer(viewer); - return adapter; - } + /** + * Overload to use when calling from a viewer. This not only finds and returns + * the adapter, but also sets its viewer to the given viewer. Many actions rely + * on this being set. + */ + public static ISystemViewElementAdapter getAdapter(Object o, Viewer viewer) { + ISystemViewElementAdapter adapter = getAdapter(o); + if (adapter != null) + adapter.setViewer(viewer); + return adapter; + } + + /** + * Overload to use when calling from a viewer. This not only finds and returns + * the adapter, but also sets its viewer and input provider to the given viewer. + * Many actions rely on this being set. + */ + public static ISystemViewElementAdapter getAdapter(Object o, Viewer viewer, ISystemViewInputProvider inputProvider) { + ISystemViewElementAdapter adapter = getAdapter(o, viewer); + + if (adapter != null) { + adapter.setInput(inputProvider); + } + + return adapter; + } + + /** + * Returns the implementation of ISystemRemoteElementAdapter for the given + * remote object. Returns null if this object does not adaptable to this. + */ + public static ISystemRemoteElementAdapter getRemoteAdapter(Object o) { + ISystemRemoteElementAdapter adapter = null; + + // In case the object itself is an adaptable, call the objects getAdapter() method + if (o instanceof IAdaptable) { + adapter = (ISystemRemoteElementAdapter)((IAdaptable)o).getAdapter(ISystemRemoteElementAdapter.class); + } else if (o != null) { + // object is not an adaptable itself, call the adapter manager + adapter = (ISystemRemoteElementAdapter)Platform.getAdapterManager().getAdapter(o, ISystemRemoteElementAdapter.class); + } + + return adapter; + } + + /** + * Overload to use when calling from a viewer. This not only finds and returns + * the adapter, but also sets its viewer to the given viewer. Many actions rely + * on this being set. + */ + public static ISystemRemoteElementAdapter getRemoteAdapter(Object o, Viewer viewer) { + ISystemRemoteElementAdapter adapter = getRemoteAdapter(o); + if ((adapter != null) && (adapter instanceof ISystemViewElementAdapter)) + ((ISystemViewElementAdapter)adapter).setViewer(viewer); + return adapter; + } /** * For pathpath access to our adapters for non-local objects in our model. Exploits the knowledge we use singleton adapters. */ - public SystemViewAdapterFactory getSystemViewAdapterFactory() - { + public SystemViewAdapterFactory getSystemViewAdapterFactory() { return RSEUIPlugin.getDefault().getSystemViewAdapterFactory(); } - } \ No newline at end of file