From 32bcbba8bbd738803fe499ac639cab5d31dd6819 Mon Sep 17 00:00:00 2001 From: Doug Schaefer Date: Mon, 22 Feb 2016 21:05:44 -0500 Subject: [PATCH] Change remote target to new strategy. Allows individual types to reg. Remote connection type providers must also register as target types if they want to show up in the launch bar. This change eliminates the autoregistering we were doing and instead provides reusable classes to handle the interface. Arduino does that coming up. Change-Id: Iafb9305225f1ba3b97640bb3b15bfb671888a914 --- .../META-INF/MANIFEST.MF | 3 +- .../plugin.xml | 7 --- .../RemoteLaunchTargetProvider.java | 53 +++++++++++++----- .../remote/core/internal/Activator.java | 9 --- .../internal/RemoteConnectionListener.java | 38 ------------- .../internal/RemoteTargetAdapterFactory.java | 13 ++--- .../META-INF/MANIFEST.MF | 1 + .../plugin.xml | 7 --- .../ui/RemoteLaunchTargetLabelProvider.java | 48 ++++++++++++++++ .../RemoteLaunchTargetLabelProvider.java | 55 ------------------- 10 files changed, 93 insertions(+), 141 deletions(-) rename bundles/org.eclipse.launchbar.remote.core/src/org/eclipse/launchbar/remote/core/{internal => }/RemoteLaunchTargetProvider.java (51%) delete mode 100644 bundles/org.eclipse.launchbar.remote.core/src/org/eclipse/launchbar/remote/core/internal/RemoteConnectionListener.java create mode 100644 bundles/org.eclipse.launchbar.remote.ui/src/org/eclipse/launchbar/remote/ui/RemoteLaunchTargetLabelProvider.java delete mode 100644 bundles/org.eclipse.launchbar.remote.ui/src/org/eclipse/launchbar/remote/ui/internal/RemoteLaunchTargetLabelProvider.java diff --git a/bundles/org.eclipse.launchbar.remote.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.launchbar.remote.core/META-INF/MANIFEST.MF index e24c43302b8..6ad3819382f 100644 --- a/bundles/org.eclipse.launchbar.remote.core/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.launchbar.remote.core/META-INF/MANIFEST.MF @@ -10,4 +10,5 @@ Require-Bundle: org.eclipse.ui, org.eclipse.remote.core;bundle-version="2.0.0" Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy -Export-Package: org.eclipse.launchbar.remote.core.internal;x-friends:="org.eclipse.launchbar.remote.ui" +Export-Package: org.eclipse.launchbar.remote.core, + org.eclipse.launchbar.remote.core.internal;x-friends:="org.eclipse.launchbar.remote.ui" diff --git a/bundles/org.eclipse.launchbar.remote.core/plugin.xml b/bundles/org.eclipse.launchbar.remote.core/plugin.xml index d8af7c00df5..326a151ef5e 100644 --- a/bundles/org.eclipse.launchbar.remote.core/plugin.xml +++ b/bundles/org.eclipse.launchbar.remote.core/plugin.xml @@ -1,13 +1,6 @@ - - - - T getAdapter(Object adaptableObject, Class adapterType) { if (adaptableObject instanceof ILaunchTarget) { ILaunchTarget target = (ILaunchTarget) adaptableObject; - if (target.getTypeId().equals(RemoteLaunchTargetProvider.TYPE_ID)) { - String[] list = target.getId().split("\\" + RemoteLaunchTargetProvider.DELIMITER); //$NON-NLS-1$ - if (list.length == 2) { - IRemoteConnectionType type = manager.getConnectionType(list[0]); - if (type != null) { - return (T) type.getConnection(list[1]); - } - } + IRemoteConnectionType remoteType = remoteManager.getConnectionType(target.getTypeId()); + if (remoteType != null) { + return (T) remoteType.getConnection(target.getId()); } } return null; diff --git a/bundles/org.eclipse.launchbar.remote.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.launchbar.remote.ui/META-INF/MANIFEST.MF index 0bc662f06a8..99c55974a49 100644 --- a/bundles/org.eclipse.launchbar.remote.ui/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.launchbar.remote.ui/META-INF/MANIFEST.MF @@ -14,3 +14,4 @@ Require-Bundle: org.eclipse.ui, org.eclipse.launchbar.remote.core;bundle-version="1.0.0" Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy +Export-Package: org.eclipse.launchbar.remote.ui diff --git a/bundles/org.eclipse.launchbar.remote.ui/plugin.xml b/bundles/org.eclipse.launchbar.remote.ui/plugin.xml index 21bc68e520e..5535690d377 100644 --- a/bundles/org.eclipse.launchbar.remote.ui/plugin.xml +++ b/bundles/org.eclipse.launchbar.remote.ui/plugin.xml @@ -1,12 +1,5 @@ - - - - diff --git a/bundles/org.eclipse.launchbar.remote.ui/src/org/eclipse/launchbar/remote/ui/RemoteLaunchTargetLabelProvider.java b/bundles/org.eclipse.launchbar.remote.ui/src/org/eclipse/launchbar/remote/ui/RemoteLaunchTargetLabelProvider.java new file mode 100644 index 00000000000..0b412bc4f0b --- /dev/null +++ b/bundles/org.eclipse.launchbar.remote.ui/src/org/eclipse/launchbar/remote/ui/RemoteLaunchTargetLabelProvider.java @@ -0,0 +1,48 @@ +/******************************************************************************* + * Copyright (c) 2015 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + *******************************************************************************/ +package org.eclipse.launchbar.remote.ui; + +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.launchbar.core.target.ILaunchTarget; +import org.eclipse.remote.core.IRemoteConnection; +import org.eclipse.remote.ui.IRemoteUIConnectionService; +import org.eclipse.swt.graphics.Image; + +public class RemoteLaunchTargetLabelProvider extends LabelProvider { + + @Override + public String getText(Object element) { + if (element instanceof ILaunchTarget) { + IRemoteConnection connection = ((ILaunchTarget) element).getAdapter(IRemoteConnection.class); + if (connection != null) { + IRemoteUIConnectionService uiService = connection.getConnectionType() + .getService(IRemoteUIConnectionService.class); + if (uiService != null) { + return uiService.getLabelProvider().getText(connection); + } + } + } + return super.getText(element); + } + + @Override + public Image getImage(Object element) { + if (element instanceof ILaunchTarget) { + IRemoteConnection connection = ((ILaunchTarget) element).getAdapter(IRemoteConnection.class); + if (connection != null) { + IRemoteUIConnectionService uiService = connection.getConnectionType() + .getService(IRemoteUIConnectionService.class); + if (uiService != null) { + return uiService.getLabelProvider().getImage(connection); + } + } + } + return super.getImage(element); + } + +} diff --git a/bundles/org.eclipse.launchbar.remote.ui/src/org/eclipse/launchbar/remote/ui/internal/RemoteLaunchTargetLabelProvider.java b/bundles/org.eclipse.launchbar.remote.ui/src/org/eclipse/launchbar/remote/ui/internal/RemoteLaunchTargetLabelProvider.java deleted file mode 100644 index 776b98a9028..00000000000 --- a/bundles/org.eclipse.launchbar.remote.ui/src/org/eclipse/launchbar/remote/ui/internal/RemoteLaunchTargetLabelProvider.java +++ /dev/null @@ -1,55 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015 QNX Software Systems and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - *******************************************************************************/ -package org.eclipse.launchbar.remote.ui.internal; - -import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.launchbar.core.target.ILaunchTarget; -import org.eclipse.launchbar.remote.core.internal.RemoteLaunchTargetProvider; -import org.eclipse.remote.core.IRemoteConnection; -import org.eclipse.remote.ui.IRemoteUIConnectionService; -import org.eclipse.swt.graphics.Image; - -public class RemoteLaunchTargetLabelProvider extends LabelProvider { - - @Override - public String getText(Object element) { - IRemoteConnection connection = getConnection(element); - if (connection != null) { - IRemoteUIConnectionService uiService = connection.getConnectionType() - .getService(IRemoteUIConnectionService.class); - if (uiService != null) { - return uiService.getLabelProvider().getText(connection); - } - } - return super.getText(element); - } - - @Override - public Image getImage(Object element) { - IRemoteConnection connection = getConnection(element); - if (connection != null) { - IRemoteUIConnectionService uiService = connection.getConnectionType() - .getService(IRemoteUIConnectionService.class); - if (uiService != null) { - return uiService.getLabelProvider().getImage(connection); - } - } - return super.getImage(element); - } - - private IRemoteConnection getConnection(Object element) { - if (element instanceof ILaunchTarget) { - ILaunchTarget target = (ILaunchTarget) element; - if (target.getTypeId().equals(RemoteLaunchTargetProvider.TYPE_ID)) { - IRemoteConnection connection = target.getAdapter(IRemoteConnection.class); - return connection; - } - } - return null; - } -}