aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/java/sip/communicator/impl/growlnotification/GrowlNotificationActivator.java
blob: 4dff18bd4c72fcddd09e99abcbe733c4a4c63825 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/*
 * 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.impl.growlnotification;

import net.java.sip.communicator.service.resources.*;
import net.java.sip.communicator.service.systray.*;
import net.java.sip.communicator.util.*;

import org.jitsi.service.configuration.*;
import org.jitsi.service.resources.*;
import org.osgi.framework.*;

/**
 * Activates the GrowlNotificationService
 *
 * @author Romain Kuntz
 * @author Egidijus Jankauskas
 */
public class GrowlNotificationActivator
    implements BundleActivator
{
    /**
     * The bundle context in which we started
     */
    public static BundleContext bundleContext;

    /**
     * The <tt>Logger</tt> instance used by the
     * <tt>GrowlNotificationActivator</tt> class and its instances for logging
     * output.
     */
    private static final Logger logger =
        Logger.getLogger(GrowlNotificationActivator.class);

    /**
     * A reference to the configuration service.
     */
    private static ConfigurationService configService;

    /**
     * A reference to the resource management service.
     */
    private static ResourceManagementService resourcesService;

    /**
     * A reference to the Growl notification service
     */
    private static GrowlNotificationServiceImpl handler;

    /**
     * Initialize and start Growl Notifications Service
     *
     * @param bc BundleContext
     * @throws Exception if initializing and starting this service fails
     */
    public void start(BundleContext bc) throws Exception
    {
        if (logger.isInfoEnabled())
            logger.info("Growl Notification ...[Starting]");
        bundleContext  = bc;

        getConfigurationService();

        handler = new GrowlNotificationServiceImpl();

        if (handler.isGrowlInstalled() && handler.isGrowlRunning())
        {
            handler.start(bc);
            bc.registerService(PopupMessageHandler.class.getName(), handler, null);
        } else
        {
            if (logger.isInfoEnabled())
                logger.info("Growl Notification ...[Aborted]");
            return;
        }

        if (logger.isInfoEnabled())
            logger.info("Growl Notification ...[Started]");
    }

    /**
     * Stops this bundle.
     *
     * @param bContext the <tt>BundleContext</tt>
     * @throws Exception if the stop operation goes wrong
     */
    public void stop(BundleContext bContext) throws Exception
    {
        handler.stop(bContext);
        if (logger.isInfoEnabled())
            logger.info("Growl Notification Service ...[Stopped]");
    }

    /**
     * Returns the <tt>ConfigurationService</tt> obtained from the bundle
     * context.
     * @return the <tt>ConfigurationService</tt> 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 the <tt>ResourceManagementService</tt> obtained from the bundle
     * context.
     * @return the <tt>ResourceManagementService</tt> obtained from the bundle
     * context
     */
    public static ResourceManagementService getResources()
    {
        if (resourcesService == null)
            resourcesService =
                ResourceManagementServiceUtils.getService(bundleContext);
        return resourcesService;
    }
}