/*
* TV-Browser
* Copyright (C) 04-2003 Martin Oberhauser (martin_oat@yahoo.de)
*
* 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.
*/
package tvraterplugin;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import util.browserlauncher.Launch;
import util.io.IOUtilities;
import util.ui.ImageUtilities;
import util.ui.LinkButton;
import util.ui.Localizer;
import com.jgoodies.forms.builder.PanelBuilder;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;
import devplugin.SettingsTab;
/**
* This class contains the Settings-Tab to configurate the plugin
*
* @author bodo tasche
*/
public class TVRaterSettingsTab implements SettingsTab {
private static final Localizer mLocalizer = Localizer.getLocalizerFor(TVRaterSettingsTab.class);
private TVRaterSettings mSettings;
private JTextField mName;
private JPasswordField mPassword;
// private JCheckBox _includeFav;
private JCheckBox mOwnRating;
private JComboBox mUpdateTime;
/**
* @param settings
*/
public TVRaterSettingsTab(TVRaterSettings settings) {
mSettings = settings;
}
public JPanel createSettingsPanel() {
FormLayout layout = new FormLayout("5dlu,pref,5dlu,pref:grow,pref,3dlu,pref,5dlu",
"5dlu,pref,3dlu,pref,10dlu,pref,5dlu,pref,1dlu,pref,2dlu,pref,default:grow,pref");
layout.setColumnGroups(new int[][] {{5,7}});
PanelBuilder pb = new PanelBuilder(layout);
CellConstraints cc = new CellConstraints();
mOwnRating = new JCheckBox(mLocalizer.msg("ownRating", "Use own rating if available"), mSettings.getPreferOwnRating());
String[] updateStrings = { mLocalizer.msg("update", "only when updating TV listings"),
mLocalizer.msg("everyTime", "every Time a rating is made"),
mLocalizer.msg("eachStart", "at each start of TV-Browser"), mLocalizer.msg("manual", "manual Update"), };
mUpdateTime = new JComboBox(updateStrings);
switch (mSettings.getUpdateInterval()) {
case OnDataUpdate: {
mUpdateTime.setSelectedIndex(0);
break;
}
case OnRating: {
mUpdateTime.setSelectedIndex(1);
break;
}
case OnStart: {
mUpdateTime.setSelectedIndex(2);
break;
}
case Manually: {
mUpdateTime.setSelectedIndex(3);
break;
}
default: {
mUpdateTime.setSelectedIndex(0);
}
}
mName = new JTextField(mSettings.getName());
mPassword = new JPasswordField(IOUtilities.xorEncode(mSettings.getPassword(), 21));
JButton newAccount = new JButton(mLocalizer.msg("newAccount", "Create new Account"));
JButton lostPassword = new JButton(mLocalizer.msg("lostPassword", "Lost Password?"));
pb.add(mOwnRating, cc.xyw(2,2,6));
pb.addLabel(mLocalizer.msg("transmit", "Transmit data") + ":", cc.xy(2,4));
pb.add(mUpdateTime, cc.xyw(4,4,4));
pb.addSeparator(mLocalizer.msg("accountsetting", "Account settings"), cc.xyw(1,6,8));
pb.addLabel(mLocalizer.msg("name", "Name") + ":", cc.xy(2,8));
pb.add(mName, cc.xyw(4,8,4));
pb.addLabel(mLocalizer.msg("password", "Password") + ":", cc.xy(2,10));
pb.add(mPassword, cc.xyw(4,10,4));
pb.add(newAccount, cc.xy(5,12));
pb.add(lostPassword, cc.xy(7,12));
LinkButton urlLabel = new LinkButton("http://tvaddicted.de", "http://tvaddicted.de");
urlLabel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0));
JPanel urlPanel = new JPanel(new BorderLayout(0,0));
urlPanel.add(urlLabel, BorderLayout.CENTER);
pb.add(urlPanel, cc.xyw(2,14,6));
newAccount.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
Launch.openURL("http://tvaddicted.de/index.php?Page=newuser");
}
});
lostPassword.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
Launch.openURL("http://tvaddicted.de/index.php?Page=lostpasswd");
}
});
return pb.getPanel();
}
public void saveSettings() {
mSettings.setName(mName.getText());
mSettings.setPassword(IOUtilities.xorEncode(new String(mPassword.getPassword()), 21));
mSettings.setPreferOwnRating(mOwnRating.isSelected());
switch (mUpdateTime.getSelectedIndex()) {
case 0: {
mSettings.setUpdateInterval(UpdateInterval.OnDataUpdate);
break;
}
case 1: {
mSettings.setUpdateInterval(UpdateInterval.OnRating);
break;
}
case 2: {
mSettings.setUpdateInterval(UpdateInterval.OnStart);
break;
}
case 3: {
mSettings.setUpdateInterval(UpdateInterval.Manually);
break;
}
default: {
mSettings.setUpdateInterval(UpdateInterval.OnDataUpdate);
}
}
}
public Icon getIcon() {
String iconName = "tvraterplugin/imgs/tvrater.png";
return ImageUtilities.createImageIconFromJar(iconName, getClass());
}
public String getTitle() {
return mLocalizer.msg("tabName", "TV Rater");
}
}