package com.netifera.platform.host.internal.processes.ui; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.util.tracker.ServiceTracker; import com.netifera.platform.api.model.ISpace; import com.netifera.platform.api.probe.IProbe; import com.netifera.platform.api.probe.IProbeManagerService; import com.netifera.platform.host.processes.IProcessManagerFactory; import com.netifera.platform.ui.images.ImageCache; import com.netifera.platform.ui.spaces.SpaceEditorInput; import com.netifera.platform.ui.util.BalloonManager; public class Activator implements BundleActivator { public final static String PLUGIN_ID = "com.netifera.platform.host.processes.ui"; private static Activator instance; private ImageCache imageCache; private BalloonManager balloonManager; private ServiceTracker processManagerFactoryTracker; private ServiceTracker probeManagerTracker; public static Activator getInstance() { return instance; } /* * (non-Javadoc) * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext) */ public void start(BundleContext context) throws Exception { instance = this; imageCache = new ImageCache(PLUGIN_ID); processManagerFactoryTracker = new ServiceTracker(context, IProcessManagerFactory.class.getName(), null); processManagerFactoryTracker.open(); probeManagerTracker = new ServiceTracker(context, IProbeManagerService.class.getName(), null); probeManagerTracker.open(); } /* * (non-Javadoc) * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext) */ public void stop(BundleContext context) throws Exception { imageCache.dispose(); imageCache = null; } public ImageCache getImageCache() { return imageCache; } public synchronized BalloonManager getBalloonManager() { if (balloonManager == null) balloonManager = new BalloonManager(); return balloonManager; } public IProcessManagerFactory getProcessManagerFactory() { return (IProcessManagerFactory) processManagerFactoryTracker.getService(); } public IProbeManagerService getProbeManager() { return (IProbeManagerService) probeManagerTracker.getService(); } public ISpace getCurrentSpace() { IWorkbenchPage page = getWindow().getActivePage(); if(page == null) { return null; } IEditorPart editor = page.getActiveEditor(); if(editor == null || !(editor.getEditorInput() instanceof SpaceEditorInput)) { return null; } return ((SpaceEditorInput)editor.getEditorInput()).getSpace(); } public IProbe getCurrentProbe() { final ISpace space = getCurrentSpace(); if(space == null) return null; return getProbeManager().getProbeById(getCurrentSpace().getProbeId()); } private IWorkbenchWindow getWindow() { IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows(); if(windows.length == 0) { return null; } return windows[0]; } }