diff options
Diffstat (limited to 'framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/remoteserviceadmin/ui/rsa/AbstractRemoteServiceAdminView.java')
-rw-r--r-- | framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/remoteserviceadmin/ui/rsa/AbstractRemoteServiceAdminView.java | 69 |
1 files changed, 68 insertions, 1 deletions
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/remoteserviceadmin/ui/rsa/AbstractRemoteServiceAdminView.java b/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/remoteserviceadmin/ui/rsa/AbstractRemoteServiceAdminView.java index eb3ee4c92..43914dd45 100644 --- a/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/remoteserviceadmin/ui/rsa/AbstractRemoteServiceAdminView.java +++ b/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/remoteserviceadmin/ui/rsa/AbstractRemoteServiceAdminView.java @@ -13,19 +13,32 @@ import org.eclipse.core.runtime.Status; import org.eclipse.ecf.internal.remoteservices.ui.Activator; import org.eclipse.ecf.internal.remoteservices.ui.DiscoveryComponent; import org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteServiceAdmin; +import org.eclipse.ecf.remoteservice.ui.services.IServicesView; import org.eclipse.ecf.remoteserviceadmin.ui.rsa.model.AbstractRSAContentProvider; import org.eclipse.ecf.remoteserviceadmin.ui.rsa.model.AbstractRSANode; +import org.eclipse.ecf.remoteserviceadmin.ui.rsa.model.ExportRegistrationNode; +import org.eclipse.ecf.remoteserviceadmin.ui.rsa.model.ImportRegistrationNode; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITreeSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Menu; +import org.eclipse.ui.IViewPart; import org.eclipse.ui.IViewSite; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PlatformUI; import org.eclipse.ui.model.WorkbenchLabelProvider; import org.eclipse.ui.part.ViewPart; +import org.osgi.framework.Constants; +import org.osgi.framework.ServiceReference; /** * @since 3.3 @@ -81,7 +94,48 @@ public abstract class AbstractRemoteServiceAdminView extends ViewPart { protected void updateModel() { } - protected abstract void setupListeners(); + protected void setupListeners() { + + } + + protected void setupSelectionListeners() { + final String servicesViewId = Activator.getDefault().getLocalServicesViewId(); + if (servicesViewId != null) { + viewer.addSelectionChangedListener(new ISelectionChangedListener() { + @Override + public void selectionChanged(SelectionChangedEvent event) { + ISelection sel = event.getSelection(); + Object selection = null; + if (sel instanceof IStructuredSelection) + selection = ((IStructuredSelection) sel).getFirstElement(); + ServiceReference sr = null; + if (selection instanceof ExportRegistrationNode) { + sr = ((ExportRegistrationNode) selection).getServiceReference(); + } else if (selection instanceof ImportRegistrationNode) { + sr = ((ImportRegistrationNode) selection).getServiceReference(); + } + if (sr != null) + selectServiceInServicesView(servicesViewId, (Long) sr.getProperty(Constants.SERVICE_ID)); + } + }); + } + } + + protected void selectServiceInServicesView(String servicesViewId, final long serviceId) { + try { + IViewPart view = findView(servicesViewId); + if (view != null) { + if (view instanceof IServicesView) { + IServicesView sv = (IServicesView) view; + sv.selectService(serviceId); + } else { + logWarning("Could not select services on viewId="+servicesViewId, null); + } + } + } catch (Exception e) { + logWarning("Could not show services in PDE Plugin view", e); //$NON-NLS-1$ + } + } protected void log(int level, String message, Throwable e) { Activator.getDefault().getLog().log(new Status(level, Activator.PLUGIN_ID, message, e)); @@ -115,11 +169,24 @@ public abstract class AbstractRemoteServiceAdminView extends ViewPart { setupListeners(); + setupSelectionListeners(); + RemoteServiceAdmin rsa = getLocalRSA(); if (rsa != null) updateModel(); } + protected IViewPart findView(String viewId) { + IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); + if (window != null) { + IWorkbenchPage page = window.getActivePage(); + if (page != null) + return page.findView(viewId); // $NON-NLS-1$ + } + return null; + } + + @Override public void setFocus() { } |