/*
* Jitsi, the OpenSource Java VoIP and Instant Messaging client.
*
* Copyright @ 2015 Atlassian Pty Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.java.sip.communicator.plugin.addrbook;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import net.java.sip.communicator.plugin.addrbook.macosx.*;
import net.java.sip.communicator.plugin.addrbook.msoutlook.*;
import net.java.sip.communicator.plugin.desktoputil.*;
import net.java.sip.communicator.service.calendar.CalendarService;
import org.jitsi.util.*;
/**
* Implementation of the advanced address book configuration form.
*
* @author Yana Stamcheva
*/
public class AdvancedConfigForm
extends TransparentPanel
{
/**
* Serial version UID.
*/
private static final long serialVersionUID = 0L;
/**
* Creates the form.
*/
public AdvancedConfigForm()
{
super(new BorderLayout());
JPanel propertiesPanel = new TransparentPanel();
propertiesPanel.setLayout(
new BoxLayout(propertiesPanel, BoxLayout.Y_AXIS));
JTextPane descriptionTextPane = new JTextPane();
descriptionTextPane.setEditable(false);
descriptionTextPane.setOpaque(false);
descriptionTextPane.setText(
AddrBookActivator.getResources().getI18NString(
"plugin.addrbook.DESCRIPTION"));
descriptionTextPane.setAlignmentX(Component.LEFT_ALIGNMENT);
propertiesPanel.add(descriptionTextPane);
propertiesPanel.add(Box.createVerticalStrut(15));
if (OSUtils.IS_MAC)
propertiesPanel.add(createEnableCheckBox(
AddrBookActivator.PNAME_ENABLE_MACOSX_ADDRESS_BOOK_SEARCH,
"plugin.addrbook.ENABLE_MACOSX_ADDRESSBOOK", true));
if (OSUtils.IS_WINDOWS)
{
propertiesPanel.add(createEnableCheckBox(
AddrBookActivator.PNAME_ENABLE_MICROSOFT_OUTLOOK_SEARCH,
"plugin.addrbook.ENABLE_MICROSOFT_OUTLOOK", true));
propertiesPanel.add(createEnableCheckBox(
CalendarService.PNAME_FREE_BUSY_STATUS_DISABLED,
"plugin.addrbook.ENABLE_OUTLOOK_CALENDAR", false));
if(AddrBookActivator.getConfigService().getBoolean(
AddrBookActivator.PNAME_ENABLE_DEFAULT_IM_APPLICATION_CHANGE,
true))
propertiesPanel.add(createDefaultIMApplicationCheckBox(
AddrBookActivator.PNAME_MAKE_JITSI_DEFAULT_IM_APPLICATION,
"plugin.addrbook.DEFAULT_IM_APP"));
}
propertiesPanel.add(Box.createVerticalStrut(15));
propertiesPanel.add(createPrefixPanel());
add(propertiesPanel, BorderLayout.NORTH);
}
/**
* Creates the enable check box.
*
* @return the created enable check box
*/
private Component createEnableCheckBox(final String configPropName,
String labelNameKey,
boolean defaultValue)
{
final JCheckBox checkBox = new SIPCommCheckBox(AddrBookActivator
.getResources().getI18NString(
labelNameKey),
AddrBookActivator.getConfigService().getBoolean(configPropName,
defaultValue));
checkBox.setAlignmentX(Component.LEFT_ALIGNMENT);
checkBox.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
AddrBookActivator.getConfigService().setProperty(
configPropName,
new Boolean(checkBox.isSelected()).toString());
if (checkBox.isSelected())
{
AddrBookActivator.startService();
AddrBookActivator.startCalendarService();
}
else
{
AddrBookActivator.stopService();
AddrBookActivator.stopCalendarService();
}
}
});
return checkBox;
}
/**
* Creates the default IM application check box.
*
* @return the default IM application check box.
*/
private Component createDefaultIMApplicationCheckBox(
final String configPropName, String labelNameKey)
{
final JCheckBox checkBox = new SIPCommCheckBox(AddrBookActivator
.getResources().getI18NString(
labelNameKey),
AddrBookActivator.getConfigService().getBoolean(configPropName,
false));
checkBox.setAlignmentX(Component.LEFT_ALIGNMENT);
checkBox.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
AddrBookActivator.getConfigService().setProperty(
configPropName,
new Boolean(checkBox.isSelected()).toString());
if (checkBox.isSelected())
AddrBookActivator.setAsDefaultIMApplication();
else
AddrBookActivator.unsetDefaultIMApplication();
}
});
return checkBox;
}
/**
* Creates the prefix panel.
*
* @return the created prefix panel
*/
private JComponent createPrefixPanel()
{
JLabel prefixLabel = new JLabel(AddrBookActivator
.getResources().getI18NString("plugin.addrbook.PREFIX"));
final SIPCommTextField prefixField = new SIPCommTextField(
AddrBookActivator.getResources()
.getI18NString("plugin.addrbook.PREFIX_EXAMPLE"));
String storedPrefix = null;
if (OSUtils.IS_MAC)
storedPrefix = AddrBookActivator.getConfigService().getString(
MacOSXAddrBookContactSourceService
.MACOSX_ADDR_BOOK_PREFIX);
if (OSUtils.IS_WINDOWS)
storedPrefix = AddrBookActivator.getConfigService().getString(
MsOutlookAddrBookContactSourceService
.OUTLOOK_ADDR_BOOK_PREFIX);
if (storedPrefix != null && storedPrefix.length() > 0)
prefixField.setText(storedPrefix);
JPanel prefixPanel = new TransparentPanel();
prefixPanel.setLayout(new BoxLayout(prefixPanel, BoxLayout.X_AXIS));
prefixPanel.add(prefixLabel);
prefixPanel.add(Box.createHorizontalStrut(10));
prefixPanel.add(prefixField);
prefixPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
prefixField.addFocusListener(new FocusAdapter()
{
@Override
public void focusLost(FocusEvent e)
{
String prefix = prefixField.getText();
if (prefix == null || prefix.length() <= 0)
return;
if (OSUtils.IS_MAC)
AddrBookActivator.getConfigService().setProperty(
MacOSXAddrBookContactSourceService
.MACOSX_ADDR_BOOK_PREFIX,
prefix);
if (OSUtils.IS_WINDOWS)
AddrBookActivator.getConfigService().setProperty(
MsOutlookAddrBookContactSourceService
.OUTLOOK_ADDR_BOOK_PREFIX,
prefix);
}
});
return prefixPanel;
}
}