/* * Jitsi, the OpenSource Java VoIP and Instant Messaging client. * * Copyright @ 2015 Atlassian Pty Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.java.sip.communicator.plugin.contactinfo; import java.util.*; import net.java.sip.communicator.service.browserlauncher.*; import net.java.sip.communicator.service.contactlist.*; import net.java.sip.communicator.service.gui.*; import net.java.sip.communicator.util.*; import org.jitsi.service.configuration.*; import org.osgi.framework.*; /** * The Activator of the Contact Info bundle. * * @author Adam Goldstein * @author Yana Stamcheva */ public class ContactInfoActivator implements BundleActivator { private Logger logger = Logger.getLogger(ContactInfoActivator.class); /** * Indicates if the contact info button is enabled in the chat window. */ private static final String ENABLED_IN_CHAT_WINDOW_PROP = "net.java.sip.communicator.plugin.contactinfo." + "ENABLED_IN_CHAT_WINDOW_PROP"; /** * Indicates if the contact info button is enabled in the call window. */ private static final String ENABLED_IN_CALL_WINDOW_PROP = "net.java.sip.communicator.plugin.contactinfo." + "ENABLED_IN_CALL_WINDOW_PROP"; private static BrowserLauncherService browserLauncherService; /** * The image loader service implementation. */ private static ImageLoaderService imageLoaderService = null; /** * The contact list service implementation. */ private static MetaContactListService metaCListService; static BundleContext bundleContext; /** * Starts this bundle. */ public void start(BundleContext bc) throws Exception { bundleContext = bc; Hashtable containerFilter = new Hashtable(); containerFilter.put( Container.CONTAINER_ID, Container.CONTAINER_CONTACT_RIGHT_BUTTON_MENU.getID()); bundleContext.registerService( PluginComponentFactory.class.getName(), new ContactInfoPluginComponentFactory( Container.CONTAINER_CONTACT_RIGHT_BUTTON_MENU), containerFilter); if(getConfigService().getBoolean(ENABLED_IN_CHAT_WINDOW_PROP, false)) { containerFilter = new Hashtable(); containerFilter.put( Container.CONTAINER_ID, Container.CONTAINER_CHAT_TOOL_BAR.getID()); bundleContext.registerService( PluginComponentFactory.class.getName(), new ContactInfoPluginComponentFactory( Container.CONTAINER_CHAT_TOOL_BAR), containerFilter); } if(getConfigService().getBoolean(ENABLED_IN_CALL_WINDOW_PROP, false)) { containerFilter = new Hashtable(); containerFilter.put( Container.CONTAINER_ID, Container.CONTAINER_CALL_DIALOG.getID()); bundleContext.registerService( PluginComponentFactory.class.getName(), new ContactInfoPluginComponentFactory( Container.CONTAINER_CALL_DIALOG), containerFilter); } if (logger.isInfoEnabled()) logger.info("CONTACT INFO... [REGISTERED]"); } public void stop(BundleContext bc) throws Exception { } /** * Returns the BrowserLauncherService obtained from the bundle * context. * @return the BrowserLauncherService obtained from the bundle * context */ public static BrowserLauncherService getBrowserLauncher() { if (browserLauncherService == null) { ServiceReference serviceReference = bundleContext .getServiceReference(BrowserLauncherService.class.getName()); browserLauncherService = (BrowserLauncherService) bundleContext .getService(serviceReference); } return browserLauncherService; } /** * Returns the imageLoaderService instance, if missing query osgi for it. * @return the imageLoaderService. */ public static ImageLoaderService getImageLoaderService() { if(imageLoaderService == null) { imageLoaderService = ServiceUtils.getService( bundleContext, ImageLoaderService.class); } return imageLoaderService; } /** * Returns the MetaContactListService obtained from the bundle * context. * @return the MetaContactListService obtained from the bundle * context */ public static MetaContactListService getContactListService() { if (metaCListService == null) { metaCListService = ServiceUtils.getService( bundleContext, MetaContactListService.class); } return metaCListService; } /** * Returns a reference to a ConfigurationService implementation currently * registered in the bundle context or null if no such implementation was * found. * * @return a currently valid implementation of the ConfigurationService. */ public static ConfigurationService getConfigService() { return ServiceUtils.getService(bundleContext, ConfigurationService.class); } /** * Contact info create factory. */ private class ContactInfoPluginComponentFactory extends PluginComponentFactory { ContactInfoPluginComponentFactory(Container c) { super(c); } @Override protected PluginComponent getPluginInstance() { return new ContactInfoMenuItem(getContainer(), this); } } }