/* * 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.generalconfig; import net.java.sip.communicator.plugin.desktoputil.*; import org.jitsi.service.configuration.*; import org.jitsi.service.neomedia.codec.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; /** * Implements the Silk configuration panel. * * @author Boris Grozev */ public class SilkConfigForm extends TransparentPanel { /** * The default value for the SAT setting */ private static final String FEC_SAT_DEFAULT = "0.5"; /** * The default value for the FEC setting */ private static final boolean FEC_DEFAULT = true; /** * The default value for the FEC force packet loss setting */ private static final boolean FEC_FORCE_PL_DEFAULT = true; /** * The default value for the 'advertise FEC' setting */ private static final boolean FEC_ADVERTISE_DEFAULT = false; /** * The "restore defaults" button */ private final JButton restoreButton = new JButton(Resources.getString( "plugin.generalconfig.RESTORE")); /** * The "use fec" checkbox */ private final JCheckBox fecCheckbox = new SIPCommCheckBox(); /** * The "force packet loss" checkbox */ private final JCheckBox assumePLCheckbox = new SIPCommCheckBox(); /** * The " advertise FEC" checkbox */ private final JCheckBox advertiseFECCheckbox = new SIPCommCheckBox(); /** * The "speech activity threshold" field */ private final JTextField SATField = new JTextField(6); /** * The <tt>ConfigurationService</tt> to be used to access configuration */ private final ConfigurationService configurationService = GeneralConfigPluginActivator.getConfigurationService(); /** * Initialize a new <tt>OpusConfigForm</tt> instance. */ public SilkConfigForm() { super(new BorderLayout()); Box box = Box.createVerticalBox(); add(box, BorderLayout.NORTH); TransparentPanel contentPanel = new TransparentPanel(); contentPanel.setLayout(new BorderLayout(10, 10)); box.add(contentPanel); TransparentPanel labelPanel = new TransparentPanel(new GridLayout(0, 1, 2, 2)); TransparentPanel valuePanel = new TransparentPanel(new GridLayout(0, 1, 2, 2)); TransparentPanel southPanel = new TransparentPanel(new GridLayout(0, 1, 2, 2)); contentPanel.add(labelPanel, BorderLayout.WEST); contentPanel.add(valuePanel, BorderLayout.CENTER); contentPanel.add(southPanel, BorderLayout.SOUTH); labelPanel.add(new JLabel(Resources.getString( "plugin.generalconfig.SILK_USE_FEC"))); labelPanel.add(new JLabel(Resources.getString( "plugin.generalconfig.SILK_ALWAYS_ASSUME_PACKET_LOSS"))); labelPanel.add(new JLabel(Resources.getString( "plugin.generalconfig.SILK_SAT"))); labelPanel.add(new JLabel(Resources.getString( "plugin.generalconfig.SILK_ADVERTISE_FEC"))); fecCheckbox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { configurationService.setProperty(Constants.PROP_SILK_FEC, fecCheckbox.isSelected()); } }); fecCheckbox.setSelected(configurationService.getBoolean( Constants.PROP_SILK_FEC, FEC_DEFAULT)); valuePanel.add(fecCheckbox); assumePLCheckbox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { configurationService.setProperty(Constants.PROP_SILK_ASSUME_PL, assumePLCheckbox.isSelected()); } }); assumePLCheckbox.setSelected(configurationService.getBoolean( Constants.PROP_SILK_ASSUME_PL, FEC_FORCE_PL_DEFAULT)); valuePanel.add(assumePLCheckbox); SATField.addFocusListener(new FocusListener() { public void focusGained(FocusEvent focusEvent){} public void focusLost(FocusEvent focusEvent) { configurationService.setProperty(Constants.PROP_SILK_FEC_SAT, SATField.getText()); } }); SATField.setText(configurationService.getString( Constants.PROP_SILK_FEC_SAT, FEC_SAT_DEFAULT)); valuePanel.add(SATField); advertiseFECCheckbox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { configurationService.setProperty( Constants.PROP_SILK_ADVERSISE_FEC, advertiseFECCheckbox.isSelected()); } }); advertiseFECCheckbox.setSelected(configurationService.getBoolean( Constants.PROP_SILK_ADVERSISE_FEC, FEC_ADVERTISE_DEFAULT)); valuePanel.add(advertiseFECCheckbox); southPanel.add(restoreButton); restoreButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { restoreDefaults(); } }); southPanel.add(new JLabel(Resources.getString( "plugin.generalconfig.DEFAULT_LANGUAGE_RESTART_WARN"))); } /** * Restores the UI components and the configuration to their default state */ private void restoreDefaults() { fecCheckbox.setSelected(FEC_DEFAULT); configurationService.setProperty(Constants.PROP_SILK_FEC, FEC_DEFAULT); assumePLCheckbox.setSelected(FEC_FORCE_PL_DEFAULT); configurationService.setProperty( Constants.PROP_SILK_ASSUME_PL, FEC_FORCE_PL_DEFAULT); SATField.setText(FEC_SAT_DEFAULT); configurationService.setProperty( Constants.PROP_SILK_FEC_SAT, FEC_SAT_DEFAULT); advertiseFECCheckbox.setSelected(FEC_ADVERTISE_DEFAULT); configurationService.setProperty( Constants.PROP_SILK_ADVERSISE_FEC, FEC_ADVERTISE_DEFAULT); } }