### Eclipse Workspace Patch 1.0 #P org.eclipse.tm.terminal Index: src/org/eclipse/tm/internal/terminal/provisional/api/TerminalConnectorExtension.java =================================================================== RCS file: /cvsroot/dsdp/org.eclipse.tm.core/terminal/org.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/provisional/api/TerminalConnectorExtension.java,v retrieving revision 1.7 diff -u -r1.7 TerminalConnectorExtension.java --- src/org/eclipse/tm/internal/terminal/provisional/api/TerminalConnectorExtension.java 6 Jun 2007 17:37:04 -0000 1.7 +++ src/org/eclipse/tm/internal/terminal/provisional/api/TerminalConnectorExtension.java 1 Apr 2008 03:39:31 -0000 @@ -15,7 +15,9 @@ import java.util.ArrayList; import java.util.List; +import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.RegistryFactory; /** @@ -62,7 +64,7 @@ * {@link #setTerminalSize(int, int)}, {@link #save(ISettingsStore)} * */ - static private class TerminalConnectorProxy implements ITerminalConnector { + static private class TerminalConnectorProxy implements ITerminalConnector, IAdaptable { /** * The connector */ @@ -170,6 +172,28 @@ public void initialize() throws Exception { throw new IllegalStateException("Connector already initialized!"); //$NON-NLS-1$ } + public Object getAdapter(Class adapter) { + ITerminalConnector connector=getConnector(); + // if we cannot create the connector then we cannot adapt... + if(connector==null) + return null; + // maybe the connector is adaptable + if(connector instanceof IAdaptable) { + Object result =((IAdaptable)connector).getAdapter(adapter); + // Not sure if the next block is needed.... + if(result==null) + //defer to the platform + result= Platform.getAdapterManager().getAdapter(connector, adapter); + if(result!=null) + return result; + } + // maybe the real adapter is what we need.... + if(adapter.isInstance(connector)) + return connector; + else + // maybe we have to be adapted.... + return Platform.getAdapterManager().getAdapter(this, adapter); + } } /** * @return null or a new connector created from the extension