aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYana Stamcheva <yana@jitsi.org>2011-02-24 13:48:24 +0000
committerYana Stamcheva <yana@jitsi.org>2011-02-24 13:48:24 +0000
commitbf3fd3dcdaa47ef8a5e246c5af9915e052d7aa74 (patch)
tree80ee644b2be8a865f2c73f77dc42e21a7166d3fd /src
parent4269c5ff7d9253622fadea90ae5e4bb1f7c154b7 (diff)
downloadjitsi-bf3fd3dcdaa47ef8a5e246c5af9915e052d7aa74.zip
jitsi-bf3fd3dcdaa47ef8a5e246c5af9915e052d7aa74.tar.gz
jitsi-bf3fd3dcdaa47ef8a5e246c5af9915e052d7aa74.tar.bz2
Allow to enable provisioning when you start jitsi for the first time. As part of the solution proposed by Conrad Beckert on dev (subject: "Re: Updates to the Provisioning Plugin").
Diffstat (limited to 'src')
-rw-r--r--src/net/java/sip/communicator/impl/gui/UIServiceImpl.java19
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/chat/toolBars/MainToolBar.java3
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/configforms/ConfigFormList.java54
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/configforms/ConfigurationFrame.java10
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/menus/ToolsMenu.java2
-rw-r--r--src/net/java/sip/communicator/impl/osdependent/jdic/TrayMenuFactory.java2
-rw-r--r--src/net/java/sip/communicator/plugin/advancedconfig/AdvancedConfigActivator.java7
-rw-r--r--src/net/java/sip/communicator/plugin/advancedconfig/AdvancedConfigurationPanel.java76
-rw-r--r--src/net/java/sip/communicator/plugin/provisioning/ProvisioningForm.java14
-rw-r--r--src/net/java/sip/communicator/plugin/simpleaccreg/InitialAccountRegistrationFrame.java60
-rw-r--r--src/net/java/sip/communicator/plugin/simpleaccreg/SimpleAccountRegistrationActivator.java138
-rw-r--r--src/net/java/sip/communicator/service/gui/ConfigurationContainer.java21
-rw-r--r--src/net/java/sip/communicator/service/gui/LazyConfigurationForm.java2
-rw-r--r--src/net/java/sip/communicator/service/gui/UIService.java12
14 files changed, 391 insertions, 29 deletions
diff --git a/src/net/java/sip/communicator/impl/gui/UIServiceImpl.java b/src/net/java/sip/communicator/impl/gui/UIServiceImpl.java
index 61e4450..5598538 100644
--- a/src/net/java/sip/communicator/impl/gui/UIServiceImpl.java
+++ b/src/net/java/sip/communicator/impl/gui/UIServiceImpl.java
@@ -1131,9 +1131,26 @@ public class UIServiceImpl
*/
public void setConfigurationWindowVisible(boolean visible)
{
+ if (isVisible() && configurationFrame == null)
+ configurationFrame = new ConfigurationFrame(mainFrame);
+
+ if (configurationFrame != null)
+ configurationFrame.setVisible(visible);
+ }
+
+ /**
+ * Returns the <tt>ConfigurationContainer</tt> associated with this
+ * <tt>UIService</tt>.
+ *
+ * @return the <tt>ConfigurationContainer</tt> associated with this
+ * <tt>UIService</tt>
+ */
+ public ConfigurationContainer getConfigurationContainer()
+ {
if (configurationFrame == null)
configurationFrame = new ConfigurationFrame(mainFrame);
- configurationFrame.setVisible(visible);
+
+ return configurationFrame;
}
/**
diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/MainToolBar.java b/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/MainToolBar.java
index 33db564..9966384 100644
--- a/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/MainToolBar.java
+++ b/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/MainToolBar.java
@@ -557,7 +557,8 @@ public class MainToolBar
}
else if (buttonText.equals("options"))
{
- GuiActivator.getUIService().setConfigurationWindowVisible(true);
+ GuiActivator.getUIService()
+ .getConfigurationContainer().setVisible(true);
}
else if (buttonText.equals("font"))
chatPanel.showFontChooserDialog();
diff --git a/src/net/java/sip/communicator/impl/gui/main/configforms/ConfigFormList.java b/src/net/java/sip/communicator/impl/gui/main/configforms/ConfigFormList.java
index 09b08cd..2f48398 100644
--- a/src/net/java/sip/communicator/impl/gui/main/configforms/ConfigFormList.java
+++ b/src/net/java/sip/communicator/impl/gui/main/configforms/ConfigFormList.java
@@ -70,19 +70,24 @@ public class ConfigFormList
*/
public void removeConfigForm(ConfigurationForm configForm)
{
- for(int count = listModel.getSize(), i = count - 1; i >= 0; i--)
- {
- ConfigFormDescriptor descriptor
- = (ConfigFormDescriptor) listModel.get(i);
+ ConfigFormDescriptor descriptor = findDescriptor(configForm);
- if(descriptor.getConfigForm().equals(configForm))
- {
- listModel.remove(i);
- /*
- * TODO We may just consider not allowing duplicates on addition
- * and then break here.
- */
- }
+ if (descriptor != null)
+ listModel.removeElement(descriptor);
+ }
+
+ /**
+ * Selects the given <tt>ConfigurationForm</tt>.
+ *
+ * @param configForm the <tt>ConfigurationForm</tt> to select
+ */
+ public void setSelected(ConfigurationForm configForm)
+ {
+ ConfigFormDescriptor descriptor = findDescriptor(configForm);
+
+ if (descriptor != null)
+ {
+ setSelectedValue(descriptor, true);
}
}
@@ -100,4 +105,29 @@ public class ConfigFormList
configFrame.showFormContent(configFormDescriptor);
}
}
+
+ /**
+ * Finds the list descriptor corresponding the given
+ * <tt>ConfigurationForm</tt>.
+ *
+ * @param configForm the <tt>ConfigurationForm</tt>, which descriptor we're
+ * looking for
+ * @return the list descriptor corresponding the given
+ * <tt>ConfigurationForm</tt>
+ */
+ private ConfigFormDescriptor findDescriptor(ConfigurationForm configForm)
+ {
+ for(int i = 0; i < listModel.getSize(); i++)
+ {
+ ConfigFormDescriptor descriptor
+ = (ConfigFormDescriptor) listModel.getElementAt(i);
+
+ if(descriptor.getConfigForm().equals(configForm))
+ {
+ return descriptor;
+ }
+ }
+
+ return null;
+ }
}
diff --git a/src/net/java/sip/communicator/impl/gui/main/configforms/ConfigurationFrame.java b/src/net/java/sip/communicator/impl/gui/main/configforms/ConfigurationFrame.java
index adbc347..31b2aaa 100644
--- a/src/net/java/sip/communicator/impl/gui/main/configforms/ConfigurationFrame.java
+++ b/src/net/java/sip/communicator/impl/gui/main/configforms/ConfigurationFrame.java
@@ -29,7 +29,8 @@ import com.explodingpixels.macwidgets.*;
*/
public class ConfigurationFrame
extends SIPCommDialog
- implements ServiceListener
+ implements ConfigurationContainer,
+ ServiceListener
{
/**
* The <tt>Logger</tt> used by the <tt>ConfigurationFrame</tt> class and its
@@ -231,7 +232,7 @@ public class ConfigurationFrame
*/
public void setVisible(boolean isVisible)
{
- if (isVisible)
+ if (isVisible && configList.getSelectedIndex() < 0)
{
this.configList.setSelectedIndex(0);
}
@@ -320,4 +321,9 @@ public class ConfigurationFrame
{
configList.removeConfigForm(configForm);
}
+
+ public void setSelected(ConfigurationForm configForm)
+ {
+ configList.setSelected(configForm);
+ }
}
diff --git a/src/net/java/sip/communicator/impl/gui/main/menus/ToolsMenu.java b/src/net/java/sip/communicator/impl/gui/main/menus/ToolsMenu.java
index 8981259..4a37678 100644
--- a/src/net/java/sip/communicator/impl/gui/main/menus/ToolsMenu.java
+++ b/src/net/java/sip/communicator/impl/gui/main/menus/ToolsMenu.java
@@ -173,7 +173,7 @@ public class ToolsMenu
*/
void configActionPerformed()
{
- GuiActivator.getUIService().setConfigurationWindowVisible(true);
+ GuiActivator.getUIService().getConfigurationContainer().setVisible(true);
}
/**
diff --git a/src/net/java/sip/communicator/impl/osdependent/jdic/TrayMenuFactory.java b/src/net/java/sip/communicator/impl/osdependent/jdic/TrayMenuFactory.java
index ed43218..6f97465 100644
--- a/src/net/java/sip/communicator/impl/osdependent/jdic/TrayMenuFactory.java
+++ b/src/net/java/sip/communicator/impl/osdependent/jdic/TrayMenuFactory.java
@@ -49,7 +49,7 @@ public final class TrayMenuFactory
if (itemName.equals("settings"))
{
OsDependentActivator.getUIService()
- .setConfigurationWindowVisible(true);
+ .getConfigurationContainer().setVisible(true);
}
else if (itemName.equals("service.gui.QUIT"))
{
diff --git a/src/net/java/sip/communicator/plugin/advancedconfig/AdvancedConfigActivator.java b/src/net/java/sip/communicator/plugin/advancedconfig/AdvancedConfigActivator.java
index abf9b26..5dfc8e4 100644
--- a/src/net/java/sip/communicator/plugin/advancedconfig/AdvancedConfigActivator.java
+++ b/src/net/java/sip/communicator/plugin/advancedconfig/AdvancedConfigActivator.java
@@ -47,12 +47,7 @@ public class AdvancedConfigActivator
bundleContext
.registerService(
ConfigurationForm.class.getName(),
- new LazyConfigurationForm(
- "net.java.sip.communicator.plugin.advancedconfig.AdvancedConfigurationPanel",
- getClass().getClassLoader(),
- "plugin.advancedconfig.PLUGIN_ICON",
- "service.gui.ADVANCED",
- 300),
+ new AdvancedConfigurationPanel(),
properties);
if (logger.isInfoEnabled())
diff --git a/src/net/java/sip/communicator/plugin/advancedconfig/AdvancedConfigurationPanel.java b/src/net/java/sip/communicator/plugin/advancedconfig/AdvancedConfigurationPanel.java
index ef07e3b..aad5dd9 100644
--- a/src/net/java/sip/communicator/plugin/advancedconfig/AdvancedConfigurationPanel.java
+++ b/src/net/java/sip/communicator/plugin/advancedconfig/AdvancedConfigurationPanel.java
@@ -24,7 +24,9 @@ import org.osgi.framework.*;
*/
public class AdvancedConfigurationPanel
extends TransparentPanel
- implements ServiceListener,
+ implements ConfigurationForm,
+ ConfigurationContainer,
+ ServiceListener,
ListSelectionListener
{
/**
@@ -181,8 +183,20 @@ public class AdvancedConfigurationPanel
break;
}
listModel.add(i, configForm);
+ }
- configList.setSelectedIndex(0);
+ /**
+ * Implements <code>ApplicationWindow.show</code> method.
+ *
+ * @param isVisible specifies whether the frame is to be visible or not.
+ */
+ public void setVisible(boolean isVisible)
+ {
+ if (isVisible && configList.getSelectedIndex() < 0)
+ {
+ this.configList.setSelectedIndex(0);
+ }
+ super.setVisible(isVisible);
}
/**
@@ -306,4 +320,62 @@ public class AdvancedConfigurationPanel
showFormContent(configForm);
}
}
+
+ /**
+ * Selects the given <tt>ConfigurationForm</tt>.
+ *
+ * @param configForm the <tt>ConfigurationForm</tt> to select
+ */
+ public void setSelected(ConfigurationForm configForm)
+ {
+ configList.setSelectedValue(configForm, true);
+ }
+
+ /**
+ * Returns the title of the form.
+ * @return the title of the form
+ */
+ public String getTitle()
+ {
+ return AdvancedConfigActivator.getResources()
+ .getI18NString("service.gui.ADVANCED");
+ }
+
+ /**
+ * Returns the icon of the form.
+ * @return a byte array containing the icon of the form
+ */
+ public byte[] getIcon()
+ {
+ return AdvancedConfigActivator.getResources()
+ .getImageInBytes("plugin.advancedconfig.PLUGIN_ICON");
+ }
+
+ /**
+ * Returns the form component.
+ * @return the form component
+ */
+ public Object getForm()
+ {
+ return this;
+ }
+
+ /**
+ * Returns the index of the form in its parent container.
+ * @return the index of the form in its parent container
+ */
+ public int getIndex()
+ {
+ return 300;
+ }
+
+ /**
+ * Indicates if the form is an advanced form.
+ * @return <tt>true</tt> to indicate that this is an advanced form,
+ * otherwise returns <tt>false</tt>
+ */
+ public boolean isAdvanced()
+ {
+ return true;
+ }
}
diff --git a/src/net/java/sip/communicator/plugin/provisioning/ProvisioningForm.java b/src/net/java/sip/communicator/plugin/provisioning/ProvisioningForm.java
index 39f429f..e91bc5a 100644
--- a/src/net/java/sip/communicator/plugin/provisioning/ProvisioningForm.java
+++ b/src/net/java/sip/communicator/plugin/provisioning/ProvisioningForm.java
@@ -142,6 +142,20 @@ public class ProvisioningForm
c.gridy = 3;
mainPanel.add(uriField, c);
+ JTextPane pane = new JTextPane();
+ pane.setForeground(Color.RED);
+ pane.setEditable(false);
+ pane.setOpaque(false);
+ pane.setText(ProvisioningActivator.getResourceService().getI18NString(
+ "plugin.provisioning.RESTART_WARNING"));
+
+ c.fill = GridBagConstraints.HORIZONTAL;
+ c.weightx = 1.0;
+ c.insets = new Insets(30, 10, 0, 0);
+ c.gridx = 0;
+ c.gridy = 4;
+ mainPanel.add(pane, c);
+
initButtonStates();
initListeners();
}
diff --git a/src/net/java/sip/communicator/plugin/simpleaccreg/InitialAccountRegistrationFrame.java b/src/net/java/sip/communicator/plugin/simpleaccreg/InitialAccountRegistrationFrame.java
index f02fd64..9ce5a7c 100644
--- a/src/net/java/sip/communicator/plugin/simpleaccreg/InitialAccountRegistrationFrame.java
+++ b/src/net/java/sip/communicator/plugin/simpleaccreg/InitialAccountRegistrationFrame.java
@@ -68,8 +68,6 @@ public class InitialAccountRegistrationFrame
= new TransparentPanel(new BorderLayout());
mainPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
-
-
JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
JButton cancelButton
= new JButton(Resources.getString("service.gui.CANCEL"));
@@ -94,6 +92,8 @@ public class InitialAccountRegistrationFrame
mainAccountsPanel.add(accountsPanel, BorderLayout.CENTER);
+ initProvisioningPanel();
+
mainAccountsPanel.setOpaque(false);
accountsPanel.setOpaque(false);
buttonPanel.setOpaque(false);
@@ -137,6 +137,62 @@ public class InitialAccountRegistrationFrame
}
}
+ /**
+ * Initializes the provisioning panel.
+ */
+ private void initProvisioningPanel()
+ {
+ JPanel provisioningPanel = new TransparentPanel();
+
+ final JLabel provisioningLabel =
+ new JLabel("<html><a href=''>"
+ + SimpleAccountRegistrationActivator
+ .getResources().getI18NString("service.gui.USE_PROVISIONING")
+ + "</a></html>");
+
+ provisioningLabel.setCursor(new Cursor(Cursor.HAND_CURSOR));
+ provisioningLabel.setToolTipText(
+ SimpleAccountRegistrationActivator
+ .getResources().getI18NString("service.gui.USE_PROVISIONING"));
+
+ provisioningLabel.addMouseListener(new MouseAdapter()
+ {
+ public void mousePressed(MouseEvent e)
+ {
+ ConfigurationContainer configContainer
+ = SimpleAccountRegistrationActivator.getUIService()
+ .getConfigurationContainer();
+
+ ConfigurationForm advancedConfigForm
+ = SimpleAccountRegistrationActivator.getAdvancedConfigForm();
+
+ if (advancedConfigForm != null)
+ {
+ configContainer.setSelected(advancedConfigForm);
+
+ if (advancedConfigForm instanceof ConfigurationContainer)
+ {
+ ConfigurationForm provisioningForm
+ = SimpleAccountRegistrationActivator
+ .getProvisioningConfigForm();
+
+ if (provisioningForm != null)
+ {
+ ((ConfigurationContainer) advancedConfigForm)
+ .setSelected(provisioningForm);
+ }
+ }
+ }
+
+ configContainer.setVisible(true);
+ }
+ });
+
+ provisioningPanel.add(provisioningLabel);
+
+ mainAccountsPanel.add(provisioningPanel, BorderLayout.SOUTH);
+ }
+
private void initAccountWizards()
{
String simpleWizards
diff --git a/src/net/java/sip/communicator/plugin/simpleaccreg/SimpleAccountRegistrationActivator.java b/src/net/java/sip/communicator/plugin/simpleaccreg/SimpleAccountRegistrationActivator.java
index b5e8f3a..3c35917 100644
--- a/src/net/java/sip/communicator/plugin/simpleaccreg/SimpleAccountRegistrationActivator.java
+++ b/src/net/java/sip/communicator/plugin/simpleaccreg/SimpleAccountRegistrationActivator.java
@@ -12,18 +12,38 @@ import java.util.*;
import net.java.sip.communicator.service.contactlist.*;
import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.protocol.*;
+import net.java.sip.communicator.service.resources.*;
import net.java.sip.communicator.util.*;
import org.osgi.framework.*;
+/**
+ *
+ * @author Yana Stamcheva
+ */
public class SimpleAccountRegistrationActivator
implements BundleActivator
{
private static final Logger logger
= Logger.getLogger(SimpleAccountRegistrationActivator.class);
+ /**
+ * Advanced config form class name.
+ */
+ private static final String advancedConfigFormClassName
+ = "net.java.sip.communicator.plugin" +
+ ".advancedconfig.AdvancedConfigurationPanel";
+
+ /**
+ * Provisioning form class name.
+ */
+ private static final String provisioningFormClassName
+ = "net.java.sip.communicator.plugin.provisioning.ProvisioningForm";
+
public static BundleContext bundleContext;
+ private static ResourceManagementService resourcesService;
+
public void start(BundleContext bc) throws Exception
{
bundleContext = bc;
@@ -172,4 +192,122 @@ public class SimpleAccountRegistrationActivator
return (UIService) bundleContext
.getService(serviceReference);
}
+
+ /**
+ * Returns the <tt>ResourceManagementService</tt>, through which we will
+ * access all resources.
+ *
+ * @return the <tt>ResourceManagementService</tt>, through which we will
+ * access all resources.
+ */
+ public static ResourceManagementService getResources()
+ {
+ if (resourcesService == null)
+ {
+ resourcesService
+ = ServiceUtils.getService(
+ bundleContext,
+ ResourceManagementService.class);
+ }
+ return resourcesService;
+ }
+
+ /**
+ * Returns the first available advanced configuration form.
+ *
+ * @return the first available advanced configuration form
+ */
+ public static ConfigurationForm getAdvancedConfigForm()
+ {
+ // General configuration forms only.
+ String osgiFilter = "("
+ + ConfigurationForm.FORM_TYPE
+ + "="+ConfigurationForm.GENERAL_TYPE+")";
+
+ ServiceReference[] confFormsRefs = null;
+ try
+ {
+ confFormsRefs = bundleContext
+ .getServiceReferences(
+ ConfigurationForm.class.getName(),
+ osgiFilter);
+ }
+ catch (InvalidSyntaxException ex)
+ {}
+
+ if(confFormsRefs != null)
+ {
+ for (int i = 0; i < confFormsRefs.length; i++)
+ {
+ ConfigurationForm form
+ = (ConfigurationForm) bundleContext
+ .getService(confFormsRefs[i]);
+
+ if (form instanceof LazyConfigurationForm)
+ {
+ LazyConfigurationForm lazyConfigForm
+ = (LazyConfigurationForm) form;
+
+ if (lazyConfigForm.getFormClassName().equals(
+ advancedConfigFormClassName))
+ return form;
+ }
+ else if (form.getClass().getName().equals(
+ advancedConfigFormClassName))
+ {
+ return form;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Returns the first available provisioning configuration form.
+ *
+ * @return the first available provisioning configuration form
+ */
+ public static ConfigurationForm getProvisioningConfigForm()
+ {
+ // General configuration forms only.
+ String osgiFilter = "("
+ + ConfigurationForm.FORM_TYPE
+ + "="+ConfigurationForm.ADVANCED_TYPE+")";
+
+ ServiceReference[] confFormsRefs = null;
+ try
+ {
+ confFormsRefs = bundleContext
+ .getServiceReferences(
+ ConfigurationForm.class.getName(),
+ osgiFilter);
+ }
+ catch (InvalidSyntaxException ex)
+ {}
+
+ if(confFormsRefs != null)
+ {
+ for (int i = 0; i < confFormsRefs.length; i++)
+ {
+ ConfigurationForm form
+ = (ConfigurationForm) bundleContext
+ .getService(confFormsRefs[i]);
+
+ if (form instanceof LazyConfigurationForm)
+ {
+ LazyConfigurationForm lazyConfigForm
+ = (LazyConfigurationForm) form;
+
+ if (lazyConfigForm.getFormClassName().equals(
+ provisioningFormClassName))
+ {
+ return form;
+ }
+ }
+ }
+ }
+
+ return null;
+ }
}
diff --git a/src/net/java/sip/communicator/service/gui/ConfigurationContainer.java b/src/net/java/sip/communicator/service/gui/ConfigurationContainer.java
new file mode 100644
index 0000000..ed94a1b
--- /dev/null
+++ b/src/net/java/sip/communicator/service/gui/ConfigurationContainer.java
@@ -0,0 +1,21 @@
+package net.java.sip.communicator.service.gui;
+
+public interface ConfigurationContainer
+{
+ /**
+ * Shows or hides this configuration container depending on the value of
+ * parameter <code>visible</code>.
+ *
+ * @param visible if <code>true</code>, shows the main application window;
+ * otherwise, hides the main application window.
+ */
+ public void setVisible(boolean visible);
+
+ /**
+ * Selects the given <tt>ConfigurationForm</tt> if it exists in this
+ * container.
+ *
+ * @param configForm the <tt>ConfigurationForm</tt> to select
+ */
+ public void setSelected(ConfigurationForm configForm);
+}
diff --git a/src/net/java/sip/communicator/service/gui/LazyConfigurationForm.java b/src/net/java/sip/communicator/service/gui/LazyConfigurationForm.java
index 9208450..7ae01b6 100644
--- a/src/net/java/sip/communicator/service/gui/LazyConfigurationForm.java
+++ b/src/net/java/sip/communicator/service/gui/LazyConfigurationForm.java
@@ -158,7 +158,7 @@ public class LazyConfigurationForm
* Returns the form class name.
* @return the form class name
*/
- protected String getFormClassName()
+ public String getFormClassName()
{
return formClassName;
}
diff --git a/src/net/java/sip/communicator/service/gui/UIService.java b/src/net/java/sip/communicator/service/gui/UIService.java
index 3c90878..b3705ec 100644
--- a/src/net/java/sip/communicator/service/gui/UIService.java
+++ b/src/net/java/sip/communicator/service/gui/UIService.java
@@ -372,10 +372,22 @@ public interface UIService
*
* @param visible <tt>true</tt> to show the "Tools &gt; Settings"
* configuration window; <tt>false</tt> to hide it
+ *
+ * @deprecated instead use getConfigurationContainer().setVisible(visible)
*/
+ @Deprecated
public void setConfigurationWindowVisible(boolean visible);
/**
+ * Returns the <tt>ConfigurationContainer</tt> associated with this
+ * <tt>UIService</tt>.
+ *
+ * @return the <tt>ConfigurationContainer</tt> associated with this
+ * <tt>UIService</tt>
+ */
+ public ConfigurationContainer getConfigurationContainer();
+
+ /**
* Adds the given <tt>WindowListener</tt> listening for events triggered
* by the main UIService component. This is normally the main application
* window component, the one containing the contact list. This listener