Package captureplugin.drivers.defaultdriver.configpanels

Source Code of captureplugin.drivers.defaultdriver.configpanels.SettingsPanel

/*
* CapturePlugin by Andreas Hessel (Vidrec@gmx.de), Bodo Tasche
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*
* CVS information:
*  $RCSfile$
*   $Source$
*     $Date: 2010-06-28 19:33:48 +0200 (Mon, 28 Jun 2010) $
*   $Author: bananeweizen $
* $Revision: 6662 $
*/
package captureplugin.drivers.defaultdriver.configpanels;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.TimeZone;

import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JSpinner;
import javax.swing.JTextField;
import javax.swing.SpinnerNumberModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

import util.ui.Localizer;
import util.ui.ProgramReceiveTargetSelectionPanel;
import util.ui.ScrollableJPanel;
import util.ui.UiUtilities;
import captureplugin.CapturePlugin;
import captureplugin.drivers.defaultdriver.DeviceConfig;

import com.jgoodies.forms.builder.PanelBuilder;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;


/**
* Creates the Settings-Panel
*
* @author bodum
*/
public class SettingsPanel extends ScrollableJPanel implements ActionListener, ChangeListener {

    /** Translator */
    private static final Localizer mLocalizer = Localizer.getLocalizerFor(SettingsPanel.class);

    /** GUI */
    private JSpinner mPreTimeSpinner;

    private JSpinner mPostTimeTextField;
   
    private JTextField mUserName = new JTextField();
    private JPasswordField mUserPwd = new JPasswordField();
   
   
    private JSpinner mMaxTimeout;
   
    private JSpinner mMaxSimult;
   
   
    /** Settings */
    private DeviceConfig mData;
   
    private JCheckBox mCheckReturn, mShowOnError, mShowTitleAndTimeDialog, mOldPrograms,
                      mUseTime, mDeleteRemovedPrograms;
   
    private JComboBox mTimeZones;

    private JLabel mTimeZoneLabel;
   
    private ProgramReceiveTargetSelectionPanel mProgramReceiveTargetSelection;

    /**
     * Creates the SettingsPanel
     * @param data Settings
     */
    public SettingsPanel(DeviceConfig data) {
        mData = data;
        createPanel();
    }
   
    /**
     * creates a JPanel for getting the time offsets
     */
    private void createPanel() {
      CellConstraints cc = new CellConstraints();
      PanelBuilder pb = new PanelBuilder(new FormLayout("5dlu,12dlu,pref:grow,5dlu,pref:grow,5dlu",
      "pref,5dlu,pref,1dlu,pref,10dlu,pref,5dlu,pref,1dlu,"+
      "pref,10dlu,pref,5dlu,pref,1dlu,pref,7dlu,pref,pref," +
      "pref,pref,pref,7dlu,pref,pref,10dlu,pref"),this);
      pb.setDefaultDialogBorder();
     
      mPreTimeSpinner = new JSpinner(new SpinnerNumberModel(mData.getPreTime(), 0, null, 1));
      mPostTimeTextField = new JSpinner(new SpinnerNumberModel(mData.getPostTime(), 0, null, 1));
     
      mUserName.setText(mData.getUsername());
      mUserPwd.setText(mData.getPassword());
     
      mMaxSimult = new JSpinner(new SpinnerNumberModel(mData.getMaxSimultanious(), 1, null, 1));
      mMaxTimeout = new JSpinner(new SpinnerNumberModel(mData.getTimeout(), -1, 999, 1));

      mCheckReturn = new JCheckBox(mLocalizer.msg("CheckError", "Check if returns Error"), mData.useReturnValue());
      mShowOnError = new JCheckBox(mLocalizer.msg("ShowResultOnError","Show Result-Dialog only on Error"), mData.getDialogOnlyOnError());
      mShowTitleAndTimeDialog = new JCheckBox(mLocalizer.msg("showTitleAndTime", "Show title and time settings dialog"), mData.getShowTitleAndTimeDialog());
      mDeleteRemovedPrograms = new JCheckBox(mLocalizer.msg("autoDeletePrograms", "Automatically delete programs that were removed during a data update"), mData.getDeleteRemovedPrograms());
      mOldPrograms = new JCheckBox(mLocalizer.msg("OnlyFuture", "Only allow Programs that are in the future"), mData.getOnlyFuturePrograms());
     
      mUseTime = new JCheckBox(mLocalizer.msg("useSystemTimezone","Use timezone provided by OS"), !mData.useTimeZone());
     
      String[] zoneIds = new String[0];
      try {
        zoneIds = TimeZone.getAvailableIDs();
      } catch (Exception e) {
        e.printStackTrace();
      }
      mTimeZones = new JComboBox(zoneIds);
      mTimeZones.setEnabled(mData.useTimeZone() && mTimeZones.getItemCount() > 0);
     
      for (int i=0; i<zoneIds.length; i++) {
        if (zoneIds[i].equals(mData.getTimeZone().getID())) {
          mTimeZones.setSelectedIndex(i); break;
        }
      }
     
      pb.addSeparator(mLocalizer.msg("TimeSettings", "Timesettings"), cc.xyw(1,1,6));
     
      pb.addLabel(mLocalizer.msg("Earlier", "Number of minutes to start erlier"),cc.xyw(2,3,2));
      pb.add(mPreTimeSpinner, cc.xy(5,3));
     
      pb.addLabel(mLocalizer.msg("Later", "Number of minutes to stop later"),cc.xyw(2,5,2));
      pb.add(mPostTimeTextField, cc.xy(5,5));
     
      pb.addSeparator(mLocalizer.msg("User", "User"), cc.xyw(1,7,6));
     
      pb.addLabel(mLocalizer.msg("Username", "Username") + ":", cc.xyw(2,9,2));
      pb.add(mUserName, cc.xy(5,9));
     
      pb.addLabel(mLocalizer.msg("Password", "Password") + ":", cc.xyw(2,11,2));
      pb.add(mUserPwd, cc.xy(5,11));
           
      pb.addSeparator(mLocalizer.msg("Additional", "Additional"), cc.xyw(1,13,6));

      pb.addLabel(mLocalizer.msg("MaxSimult","Maximum simultaneous recordings")+ ":" , cc.xyw(2,15,2));
      pb.add(mMaxSimult,cc.xy(5,15));
     
      pb.addLabel(mLocalizer.msg("Timeout","Wait sec. until Timeout (-1 = disabled)")+ ":", cc.xyw(2,17,2));
      pb.add(mMaxTimeout,cc.xy(5,17));

      pb.add(mCheckReturn, cc.xyw(2,19,4));
      pb.add(mShowOnError, cc.xyw(2,20,4));
      pb.add(mShowTitleAndTimeDialog, cc.xyw(2,21,4));
      pb.add(mDeleteRemovedPrograms, cc.xyw(2,22,4));
      pb.add(mOldPrograms, cc.xyw(2,23,4));
     
      pb.add(mUseTime, cc.xyw(2,25,4));
     
      JPanel timeZonePanel = new JPanel(new FlowLayout(FlowLayout.LEFT,0,0));
      mTimeZoneLabel = new JLabel(mLocalizer.msg("Timezone","Timezone")+": ");
      mTimeZoneLabel.setEnabled(mTimeZones.isEnabled());
      timeZonePanel.add(mTimeZoneLabel);
      timeZonePanel.add(mTimeZones);
     
      pb.add(timeZonePanel, cc.xyw(3,26,3));
     
      mProgramReceiveTargetSelection = new ProgramReceiveTargetSelectionPanel(UiUtilities.getLastModalChildOf(CapturePlugin.getInstance().getSuperFrame()),
          mData.getProgramReceiveTargets(),null,CapturePlugin.getInstance(),true,mLocalizer.msg("sendToTitle","Send scheduled programs to:"));
      mProgramReceiveTargetSelection.addChangeListener(this);
      pb.add(mProgramReceiveTargetSelection, cc.xyw(1,28,5));
     
      // add ChangeListener to the spinners
      mPreTimeSpinner.addChangeListener(this);
      mPostTimeTextField.addChangeListener(this);
      mMaxSimult.addChangeListener(this);
      mMaxTimeout.addChangeListener(this);
     
      // add ActionListener to the check boxes
      mCheckReturn.addActionListener(this);
      mShowOnError.addActionListener(this);
      mShowTitleAndTimeDialog.addActionListener(this);
      mDeleteRemovedPrograms.addActionListener(this);
      mOldPrograms.addActionListener(this);
      mUseTime.addActionListener(this);
     
      mUserName.addFocusListener(new FocusAdapter() {
        public void focusLost(FocusEvent e) {
          mData.setUserName(mUserName.getText());
        }
      });
     
      mUserPwd.addFocusListener(new FocusAdapter() {
        public void focusLost(FocusEvent e) {
          mData.setPassword(new String(mUserPwd.getPassword()));
        }
      });
   
      mTimeZones.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent e) {
          mData.setTimeZone(TimeZone.getTimeZone((String)mTimeZones.getSelectedItem()));
        }
      });
    }

    public void actionPerformed(ActionEvent e) {
      if(e.getSource().equals(mCheckReturn)) {
        mData.setUseReturnValue(mCheckReturn.isSelected());
      } else if(e.getSource().equals(mShowOnError)) {
        mData.setDialogOnlyOnError(mShowOnError.isSelected());
      } else if(e.getSource().equals(mShowTitleAndTimeDialog)) {
        mData.setShowTitleAndTimeDialog(mShowTitleAndTimeDialog.isSelected());
      } else if(e.getSource().equals(mDeleteRemovedPrograms)) {
        mData.setDeleteRemovedPrograms(mDeleteRemovedPrograms.isSelected());
      } else if(e.getSource().equals(mOldPrograms)) {
        mData.setOnlyFuturePrograms(mOldPrograms.isSelected());
      } else if(e.getSource().equals(mUseTime)) {
        mData.setUseTimeZone(!mUseTime.isSelected());
        mTimeZones.setEnabled(!mUseTime.isSelected());
        mTimeZoneLabel.setEnabled(mTimeZones.isEnabled());
      }
     
    }

    public void stateChanged(ChangeEvent e) {
      if(e.getSource().equals(mMaxSimult)) {
        mData.setMaxSimultanious((Integer) mMaxSimult.getValue());
      } else if(e.getSource().equals(mMaxTimeout)) {
        mData.setTimeout((Integer) mMaxTimeout.getValue());
      } else if(e.getSource().equals(mPreTimeSpinner)) {
        mData.setPreTime((Integer) mPreTimeSpinner.getValue());
      } else if(e.getSource().equals(mPostTimeTextField)) {
        mData.setPostTime((Integer) mPostTimeTextField.getValue());
      } else if(e.getSource().equals(mProgramReceiveTargetSelection)) {
        mData.setProgramReceiveTargets(mProgramReceiveTargetSelection.getCurrentSelection());
      }
    }
   


}
TOP

Related Classes of captureplugin.drivers.defaultdriver.configpanels.SettingsPanel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.