aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/java/sip/communicator/plugin/ircaccregwizz/IrcAccRegWizzActivator.java
blob: 50bf657da43a994a8c744670fb26179616b53ecf (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
131
132
133
134
135
136
/*
 * 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.ircaccregwizz;

import java.util.*;

import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.util.*;

import org.osgi.framework.*;

/**
 * Registers the <tt>IrcAccountRegistrationWizard</tt> in the UI Service.
 *
 * @author Lionel Ferreira & Michael Tarantino
 * @author Danny van Heumen
 */
public class IrcAccRegWizzActivator
    extends AbstractServiceDependentActivator
{
    private static Logger logger = Logger.getLogger(
        IrcAccRegWizzActivator.class.getName());

    /**
     * OSGi bundle context.
     */
    static BundleContext bundleContext;

    private static UIService uiService;

    private static WizardContainer wizardContainer;

    private IrcAccountRegistrationWizard ircWizard;

    /**
     * Start the IRC account registration wizard.
     *
     * @param dependentService dependent service
     */
    public void start(final Object dependentService)
    {
        if (logger.isInfoEnabled())
        {
            logger.info("Loading irc account wizard.");
        }

        uiService = (UIService) dependentService;

        wizardContainer = uiService.getAccountRegWizardContainer();

        ircWizard = new IrcAccountRegistrationWizard(wizardContainer);

        Hashtable<String, String> containerFilter =
            new Hashtable<String, String>();
        containerFilter
            .put(ProtocolProviderFactory.PROTOCOL, ProtocolNames.IRC);

        bundleContext.registerService(
            AccountRegistrationWizard.class.getName(), ircWizard,
            containerFilter);

        if (logger.isInfoEnabled())
        {
            logger.info("IRC account registration wizard [STARTED].");
        }
    }

    /**
     * Returns dependent service class.
     *
     * @return returns dependent service class
     */
    public Class<?> getDependentServiceClass()
    {
        return UIService.class;
    }

    /**
     * Set the bundle context.
     *
     * @param context bundle context
     */
    @Override
    public void setBundleContext(final BundleContext context)
    {
        IrcAccRegWizzActivator.bundleContext = context;
    }

    /**
     * Stop the IRC account registration wizard.
     *
     * @param bundleContext bundle context
     */
    public void stop(final BundleContext bundleContext)
    {
    }

    /**
     * Returns the <tt>ProtocolProviderFactory</tt> for the IRC protocol.
     *
     * @return the <tt>ProtocolProviderFactory</tt> for the IRC protocol
     */
    public static ProtocolProviderFactory getIrcProtocolProviderFactory()
    {
        ServiceReference<?>[] serRefs = null;

        String osgiFilter = "(" + ProtocolProviderFactory.PROTOCOL + "=IRC)";

        try
        {
            serRefs = bundleContext.getServiceReferences(
                ProtocolProviderFactory.class.getName(), osgiFilter);
        }
        catch (InvalidSyntaxException ex)
        {
            logger.error(ex);
        }

        return (ProtocolProviderFactory) bundleContext.getService(serRefs[0]);
    }

    /**
     * Get UI Service instance.
     *
     * @return returns UIService instance
     */
    public static UIService getUIService()
    {
        return uiService;
    }
}