/* * 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.autoaway; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; import net.java.sip.communicator.plugin.generalconfig.*; import net.java.sip.communicator.plugin.desktoputil.*; import org.jitsi.service.resources.*; /** * The ConfigurationForm that would be added in the user interface * configuration window. * * @author Damien Roth */ public class AutoAwayConfigurationPanel extends TransparentPanel { /** * Serial version UID. */ private static final long serialVersionUID = 0L; private JCheckBox enable; private JSpinner timer; /** * Create an instance of StatusConfigForm */ public AutoAwayConfigurationPanel() { setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); JPanel pnlSection = GeneralConfigPluginActivator.createConfigSectionComponent( Resources.getString("service.gui.STATUS")); pnlSection.add(createMainPanel()); add(pnlSection); initValues(); } /** * Init the main panel. * @return the created component */ private Component createMainPanel() { ResourceManagementService resources = GeneralConfigPluginActivator.getResources(); enable = new SIPCommCheckBox( resources.getI18NString( "plugin.autoaway.ENABLE_CHANGE_STATUS")); enable.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { timer.setEnabled(enable.isSelected()); saveData(); } }); // Spinner timer = new JSpinner( new SpinnerNumberModel( Preferences.DEFAULT_TIMER, 1, 180, 1)); timer.addChangeListener( new ChangeListener() { public void stateChanged(ChangeEvent e) { saveData(); } }); JPanel timerPanel = new TransparentPanel(new FlowLayout(FlowLayout.LEFT)); // Text timerPanel.add( new JLabel( resources.getI18NString( "plugin.autoaway.AWAY_MINUTES"))); timerPanel.add(timer); try { // changes that are valid will be saved immediately while typing ((DefaultFormatter)((JSpinner.DefaultEditor)timer.getEditor()) .getTextField().getFormatter()).setCommitsOnValidEdit(true); } catch(Throwable t) {} JPanel mainPanel = new TransparentPanel(new BorderLayout(5, 5)); mainPanel.add(enable, BorderLayout.NORTH); mainPanel.add(timerPanel, BorderLayout.WEST); return mainPanel; } /** * Init the values of the widgets */ private void initValues() { boolean enabled = Preferences.isEnabled(); this.enable.setSelected(enabled); this.timer.setEnabled(enabled); int timerValue = Preferences.getTimer(); SpinnerNumberModel model = (SpinnerNumberModel)this.timer.getModel(); if (timerValue < (Integer)model.getMinimum() || timerValue > (Integer)model.getMaximum()) { timerValue = Preferences.DEFAULT_TIMER; } this.timer.setValue(timerValue); } /** * Save data in the configuration file */ private void saveData() { Preferences.saveData(enable.isSelected(), timer.getValue().toString()); } }