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").

cusax-fix
Yana Stamcheva 15 years ago
parent 4269c5ff7d
commit bf3fd3dcda

@ -430,6 +430,7 @@ service.gui.ACCOUNT_CREATION_FAILED=We failed to create your account due to the
service.gui.UNKNOWN=Unknown user
service.gui.UNKNOWN_STATUS=Unknown state
service.gui.UNREGISTERED_MESSAGE=Unable to connect the following account: User name: {0}, Server name: {1}. You are currently offline.
service.gui.USE_PROVISIONING=Use online provisioning
service.gui.VIDEO_CALL=&Video call
service.gui.VIA_SMS=Via SMS
service.gui.VIEW=&View
@ -1112,6 +1113,7 @@ plugin.provisioning.DNS=DNS
plugin.provisioning.BONJOUR=Bonjour
plugin.provisioning.MANUAL=Manually specify a provisioning URI
plugin.provisioning.URI=URI
plugin.provisioning.RESTART_WARNING=Note that your changes will take effect on next restart!
# packet logging service
plugin.loggingutils.PACKET_LOGGING_CONFIG=Logging

@ -1130,10 +1130,27 @@ public void beginShutdown()
* <tt>false</tt> - otherwise
*/
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;
}
/**

@ -557,7 +557,8 @@ else if (contactOpSetSupported.size() > 1)
}
else if (buttonText.equals("options"))
{
GuiActivator.getUIService().setConfigurationWindowVisible(true);
GuiActivator.getUIService()
.getConfigurationContainer().setVisible(true);
}
else if (buttonText.equals("font"))
chatPanel.showFontChooserDialog();

@ -70,19 +70,24 @@ public void addConfigForm(ConfigurationForm configForm)
*/
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 void valueChanged(ListSelectionEvent e)
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;
}
}

@ -29,7 +29,8 @@
*/
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 void showFormContent(ConfigFormDescriptor configFormDescriptor)
*/
public void setVisible(boolean isVisible)
{
if (isVisible)
if (isVisible && configList.getSelectedIndex() < 0)
{
this.configList.setSelectedIndex(0);
}
@ -320,4 +321,9 @@ private void removeConfigurationForm(ConfigurationForm configForm)
{
configList.removeConfigForm(configForm);
}
public void setSelected(ConfigurationForm configForm)
{
configList.setSelected(configForm);
}
}

@ -173,7 +173,7 @@ else if (itemName.equals("sound"))
*/
void configActionPerformed()
{
GuiActivator.getUIService().setConfigurationWindowVisible(true);
GuiActivator.getUIService().getConfigurationContainer().setVisible(true);
}
/**

@ -49,7 +49,7 @@ private static void actionPerformed(ActionEvent evt)
if (itemName.equals("settings"))
{
OsDependentActivator.getUIService()
.setConfigurationWindowVisible(true);
.getConfigurationContainer().setVisible(true);
}
else if (itemName.equals("service.gui.QUIT"))
{

@ -47,12 +47,7 @@ public void start(BundleContext bc)
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())

@ -24,7 +24,9 @@
*/
public class AdvancedConfigurationPanel
extends TransparentPanel
implements ServiceListener,
implements ConfigurationForm,
ConfigurationContainer,
ServiceListener,
ListSelectionListener
{
/**
@ -181,8 +183,20 @@ public void addConfigForm(ConfigurationForm configForm)
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 void valueChanged(ListSelectionEvent e)
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;
}
}

@ -142,6 +142,20 @@ public 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();
}

@ -68,8 +68,6 @@ public 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 InitialAccountRegistrationFrame()
mainAccountsPanel.add(accountsPanel, BorderLayout.CENTER);
initProvisioningPanel();
mainAccountsPanel.setOpaque(false);
accountsPanel.setOpaque(false);
buttonPanel.setOpaque(false);
@ -137,6 +137,62 @@ public 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

@ -12,18 +12,38 @@
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 static UIService getUIService()
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;
}
}

@ -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);
}

@ -158,7 +158,7 @@ protected ClassLoader getFormClassLoader()
* Returns the form class name.
* @return the form class name
*/
protected String getFormClassName()
public String getFormClassName()
{
return formClassName;
}

@ -372,9 +372,21 @@ public SecurityAuthority getDefaultSecurityAuthority(
*
* @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

Loading…
Cancel
Save