/*
* Jitsi, the OpenSource Java VoIP and Instant Messaging client.
*
* Distributable under LGPL license. See terms of license at gnu.org.
*/
package net.java.sip.communicator.plugin.chatconfig;
import java.awt.*;
import java.util.*;
import javax.swing.*;
import net.java.sip.communicator.service.configuration.*;
import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.replacement.*;
import net.java.sip.communicator.service.resources.*;
import net.java.sip.communicator.util.*;
import net.java.sip.communicator.util.swing.*;
import org.osgi.framework.*;
/**
* The chat configuration form activator.
*
* @author Purvesh Sahoo
*/
public class ChatConfigActivator
implements BundleActivator
{
/**
* The Logger used by the ChatConfigActivator class.
*/
private final static Logger logger =
Logger.getLogger(ChatConfigActivator.class);
/**
* The currently valid bundle context.
*/
public static BundleContext bundleContext;
/**
* The configuration service.
*/
private static ConfigurationService configService;
/**
* The resource management service.
*/
private static ResourceManagementService resourceService;
/**
* The Replacement sources map.
*/
private static final Map
replacementSourcesMap = new Hashtable();
/**
* Indicates if the chat configuration form should be disabled, i.e.
* not visible to the user.
*/
private static final String DISABLED_PROP
= "net.java.sip.communicator.plugin.chatconfig.DISABLED";
/**
* Starts this bundle.
*
* @param bc the BundleContext
* @throws Exception if some of the operations executed in the start method
* fails
*/
public void start(BundleContext bc) throws Exception
{
bundleContext = bc;
// If the chat configuration form is disabled don't continue.
if (getConfigurationService().getBoolean(DISABLED_PROP, false))
return;
Dictionary properties = new Hashtable();
properties.put(ConfigurationForm.FORM_TYPE,
ConfigurationForm.GENERAL_TYPE);
bundleContext.registerService(ConfigurationForm.class.getName(),
new LazyConfigurationForm(
"net.java.sip.communicator.plugin.chatconfig.ChatConfigPanel",
getClass().getClassLoader(), "plugin.chatconfig.PLUGIN_ICON",
"plugin.chatconfig.TITLE", 40), properties);
if (logger.isTraceEnabled())
logger.trace("Chat Configuration: [ STARTED ]");
}
/**
* Stops this bundle.
*
* @param bc the bundle context
* @throws Exception if something goes wrong
*/
public void stop(BundleContext bc) throws Exception {}
/**
* Gets the service giving access to all application resources.
*
* @return the service giving access to all application resources.
*/
public static ResourceManagementService getResources()
{
if (resourceService == null)
resourceService =
ResourceManagementServiceUtils.getService(bundleContext);
return resourceService;
}
/**
* Creates a config section label from the given text.
*
* @param labelText the text of the label.
* @return the created label
*/
public static Component createConfigSectionComponent(String labelText)
{
JLabel label = new JLabel(labelText);
label.setFont(label.getFont().deriveFont(Font.BOLD));
label.setAlignmentX(Component.RIGHT_ALIGNMENT);
JPanel parentPanel = new TransparentPanel(new BorderLayout());
parentPanel.add(label, BorderLayout.NORTH);
parentPanel.setPreferredSize(new Dimension(180, 25));
return parentPanel;
}
/**
* Returns the ConfigurationService obtained from the bundle
* context.
*
* @return the ConfigurationService obtained from the bundle
* context
*/
public static ConfigurationService getConfigurationService()
{
if (configService == null)
{
ServiceReference configReference =
bundleContext.getServiceReference(ConfigurationService.class
.getName());
configService =
(ConfigurationService) bundleContext
.getService(configReference);
}
return configService;
}
/**
* Returns all ReplacementServices obtained from the bundle
* context.
*
* @return all ReplacementService implementation obtained from the
* bundle context
*/
public static Map getReplacementSources()
{
ServiceReference[] serRefs = null;
try
{
// get all registered sources
serRefs =
bundleContext.getServiceReferences(ReplacementService.class
.getName(), null);
}
catch (InvalidSyntaxException e)
{
logger.error("Error : " + e);
}
if (serRefs != null)
{
for (int i = 0; i < serRefs.length; i++)
{
ReplacementService replacementSources =
(ReplacementService) bundleContext.getService(serRefs[i]);
replacementSourcesMap.put((String)serRefs[i]
.getProperty(ReplacementService.SOURCE_NAME),
replacementSources);
}
}
return replacementSourcesMap;
}
}