package org.lodder.subtools.multisubdownloader.gui.dialog; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.util.ArrayList; import javax.swing.DefaultComboBoxModel; import javax.swing.DefaultListModel; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSeparator; import javax.swing.JSlider; import javax.swing.JTabbedPane; import javax.swing.JTextField; import javax.swing.border.EmptyBorder; import net.miginfocom.swing.MigLayout; import org.lodder.subtools.multisubdownloader.Messages; import org.lodder.subtools.multisubdownloader.framework.event.Emitter; import org.lodder.subtools.multisubdownloader.framework.event.Event; import org.lodder.subtools.multisubdownloader.gui.extra.JListWithImages; import org.lodder.subtools.multisubdownloader.gui.extra.MemoryFolderChooser; import org.lodder.subtools.multisubdownloader.gui.panels.DefaultSelectionPanel; import org.lodder.subtools.multisubdownloader.gui.panels.EpisodeLibraryPanel; import org.lodder.subtools.multisubdownloader.gui.panels.MovieLibraryPanel; import org.lodder.subtools.multisubdownloader.settings.SettingsControl; import org.lodder.subtools.multisubdownloader.settings.model.LibrarySettings; import org.lodder.subtools.multisubdownloader.settings.model.SettingsExcludeItem; import org.lodder.subtools.multisubdownloader.settings.model.SettingsExcludeType; import org.lodder.subtools.multisubdownloader.settings.model.SettingsProcessEpisodeSource; import org.lodder.subtools.multisubdownloader.settings.model.UpdateCheckPeriod; import org.lodder.subtools.sublibrary.Manager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class PreferenceDialog extends MultiSubDialog { /** * */ private static final long serialVersionUID = -5730220264781738564L; private final JPanel contentPanel = new JPanel(); private final Emitter eventEmitter; private JCheckBox chkOnlyFound, chkAlwaysConfirm, chkSubtitleExactMethod, chkSubtitleKeywordMethod; private SettingsControl settingsCtrl; private EpisodeLibraryPanel pnlEpisodeLibrary; private JListWithImages excludeList; private JCheckBox chkStopOnSearchError; private MovieLibraryPanel pnlMovieLibrary; private JTextField txtProxyHost, txtAddic7edUsername; private JTextField txtProxyPort, txtAddic7edPassword; private JCheckBox chkProxyserverGebruiken, chkUserAddic7edLogin, chkExcludeHearingImpaired; private JListWithImages defaultIncomingFoldersList, localSourcesFoldersList; private JCheckBox chkSerieSourceAddic7ed, chkSerieSourceTvSubtitles, chkSerieSourcePodnapisi, chkSerieSourceOpensubtitles, chkSerieSourceLocal, chkSerieSourceSubsMax; private JComboBox<SettingsProcessEpisodeSource> cbxEpisodeProcessSource; private JCheckBox chkMinScoreSelection; private JSlider sldMinScoreSelection; private Manager manager; private JComboBox<UpdateCheckPeriod> cbxUpdateCheckPeriod; private JCheckBox chkDefaultSelection; private DefaultSelectionPanel pnlDefaultSelection; private static final Logger LOGGER = LoggerFactory.getLogger(PreferenceDialog.class); /** * Create the dialog. */ public PreferenceDialog(JFrame frame, final SettingsControl settingsCtrl, Emitter eventEmitter, Manager manager) { super(frame, Messages.getString("PreferenceDialog.Title"), true); this.settingsCtrl = settingsCtrl; this.eventEmitter = eventEmitter; this.manager = manager; initialize(); setPreferenceSettings(); repaint(); } private void initialize() { setResizable(false); setModalityType(ModalityType.APPLICATION_MODAL); setBounds(100, 100, 650, 700); getContentPane().setLayout(new BorderLayout()); contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); getContentPane().add(contentPanel, BorderLayout.CENTER); contentPanel.setLayout(new BorderLayout(0, 0)); { JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP); tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); contentPanel.add(tabbedPane); { JPanel pnlGeneral = new JPanel(); tabbedPane .addTab(Messages.getString("PreferenceDialog.TabGeneral"), null, pnlGeneral, null); pnlGeneral.setLayout(new MigLayout("", "[127px,grow][grow][grow]", "[23px][grow][][][grow,center][][grow]")); { JLabel lblDefaultIncomingFolder = new JLabel(Messages.getString("PreferenceDialog.DefaultIncomingFolder")); pnlGeneral.add(lblDefaultIncomingFolder, "cell 0 0,alignx left,aligny center"); } { JButton btnBrowse = new JButton(Messages.getString("PreferenceDialog.AddFolder")); btnBrowse.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { File path = MemoryFolderChooser.getInstance().selectDirectory(getContentPane(), Messages.getString("PreferenceDialog.SelectFolder")); if (defaultIncomingFoldersList.getModel().getSize() == 0) { defaultIncomingFoldersList.addItem(SettingsExcludeType.FOLDER, path.getAbsolutePath()); } else { boolean exists = false; for (int i = 0; i < defaultIncomingFoldersList.getModel().getSize(); i++) { if (defaultIncomingFoldersList.getDescription(i) != null && defaultIncomingFoldersList.getDescription(i) .equals(path.getAbsolutePath())) { exists = true; } } if (!exists) { defaultIncomingFoldersList.addItem(SettingsExcludeType.FOLDER, path.getAbsolutePath()); } } } }); pnlGeneral.add(btnBrowse, "cell 1 0,alignx left,aligny top"); } { JButton button = new JButton(Messages.getString("PreferenceDialog.DeleteFolder")); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { DefaultListModel<JPanel> model = (DefaultListModel<JPanel>) defaultIncomingFoldersList.getModel(); int selected = defaultIncomingFoldersList.getSelectedIndex(); if (model.size() > 0 && selected >= 0) { model.removeElementAt(selected); } } }); pnlGeneral.add(button, "cell 2 0"); } { JScrollPane scrollPane = new JScrollPane(); pnlGeneral.add(scrollPane, "cell 1 1 2 1,grow"); { defaultIncomingFoldersList = new JListWithImages(); scrollPane.setViewportView(defaultIncomingFoldersList); } } { JLabel lblUitsluitLijst = new JLabel(Messages.getString("PreferenceDialog.ExcludeList")); pnlGeneral.add(lblUitsluitLijst, "cell 0 2,alignx right,gaptop 10"); } { JButton btnAddUitsluitMap = new JButton(Messages.getString("PreferenceDialog.AddFolder")); btnAddUitsluitMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { addExcludeItem(SettingsExcludeType.FOLDER); } }); pnlGeneral.add(btnAddUitsluitMap, "cell 1 2,alignx center,gaptop 10"); } { JButton btnVerwijderUitsluitMap = new JButton(Messages.getString("PreferenceDialog.DeleteItem")); btnVerwijderUitsluitMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { removeExcludeItem(); } }); pnlGeneral.add(btnVerwijderUitsluitMap, "cell 2 2,alignx center,gaptop 10"); } { JButton btnAddUitsluitRegex = new JButton(Messages.getString("PreferenceDialog.RegexToevoegen")); btnAddUitsluitRegex.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { addExcludeItem(SettingsExcludeType.REGEX); } }); pnlGeneral.add(btnAddUitsluitRegex, "cell 1 3,alignx center"); } { JScrollPane scrollPane = new JScrollPane(); pnlGeneral.add(scrollPane, "cell 1 4 2 1,grow"); { excludeList = new JListWithImages(); scrollPane.setViewportView(excludeList); } } { JLabel lblNewUpdateCheck = new JLabel(Messages.getString("PreferenceDialog.NewUpdateCheck")); pnlGeneral.add(lblNewUpdateCheck, "cell 0 5 2 1"); } { cbxUpdateCheckPeriod = new JComboBox<UpdateCheckPeriod>(); cbxUpdateCheckPeriod.setModel(new DefaultComboBoxModel<UpdateCheckPeriod>( UpdateCheckPeriod.values())); pnlGeneral.add(cbxUpdateCheckPeriod, "cell 2 5,growx"); } { JPanel pnlProxySettings = new JPanel(); pnlGeneral.add(pnlProxySettings, "cell 0 6 3 1,grow"); pnlProxySettings.setLayout(new MigLayout("", "[50px:n][][grow][grow]", "[][][][]")); pnlProxySettings.add(new JLabel(Messages.getString("PreferenceDialog.ConfigureProxy")), "cell 0 0 4 1,gapy 5"); pnlProxySettings.add(new JSeparator(), "cell 0 0 4 1,growx,gapy 5"); { chkProxyserverGebruiken = new JCheckBox(Messages.getString("PreferenceDialog.UseProxyServer")); pnlProxySettings.add(chkProxyserverGebruiken, "cell 0 1 3 1"); } { JLabel lblProxyHost = new JLabel(Messages.getString("PreferenceDialog.Hostname")); pnlProxySettings.add(lblProxyHost, "cell 1 2,alignx trailing"); } { txtProxyHost = new JTextField(); pnlProxySettings.add(txtProxyHost, "cell 2 2,growx"); txtProxyHost.setColumns(10); } { JLabel lblProxyPoort = new JLabel(Messages.getString("PreferenceDialog.Port")); pnlProxySettings.add(lblProxyPoort, "cell 1 3,alignx trailing"); } { txtProxyPort = new JTextField(); pnlProxySettings.add(txtProxyPort, "cell 2 3,growx"); txtProxyPort.setColumns(10); } } } { pnlEpisodeLibrary = new EpisodeLibraryPanel(settingsCtrl.getSettings().getEpisodeLibrarySettings(), manager, false); tabbedPane.addTab(Messages.getString("PreferenceDialog.SerieLibrary"), null, pnlEpisodeLibrary, null); } { pnlMovieLibrary = new MovieLibraryPanel(settingsCtrl.getSettings().getMovieLibrarySettings(), manager, false); tabbedPane.addTab(Messages.getString("PreferenceDialog.MovieLibrary"), null, pnlMovieLibrary, null); } { JPanel pnlOptions = new JPanel(); tabbedPane.addTab(Messages.getString("PreferenceDialog.Options"), null, pnlOptions, null); pnlOptions.setLayout(new MigLayout("", "[][433px,grow][433px,grow][100px,grow][]", "[][][][][grow][][25px][][][][23px][][23px][][]")); pnlOptions.add(new JLabel(Messages.getString("PreferenceDialog.DownloadOptions")), "cell 0 0 5 1"); pnlOptions.add(new JSeparator(), "cell 0 0 5 1,growx"); chkAlwaysConfirm = new JCheckBox(Messages.getString("PreferenceDialog.CheckBeforeDownloading")); pnlOptions.add(chkAlwaysConfirm, "cell 1 1 3 1,grow"); { chkMinScoreSelection = new JCheckBox(Messages.getString("PreferenceDialog.MinAutomaticScoreSelection")); pnlOptions.add(chkMinScoreSelection, "cell 1 2"); } { sldMinScoreSelection = new JSlider(); sldMinScoreSelection.setMinimum(0); sldMinScoreSelection.setMaximum(100); pnlOptions.add(sldMinScoreSelection, "cell 2 2"); } { chkDefaultSelection = new JCheckBox(Messages.getString("PreferenceDialog.DefaultSelection")); chkDefaultSelection.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { pnlDefaultSelection.setEnabled(chkDefaultSelection.isSelected()); } }); pnlOptions.add(chkDefaultSelection, "cell 1 3"); } { pnlDefaultSelection = new DefaultSelectionPanel(); pnlDefaultSelection.setEnabled(false); pnlOptions.add(pnlDefaultSelection, "cell 1 4 2 1,grow"); } pnlOptions.add(new JLabel(Messages.getString("PreferenceDialog.SearchFilter")), "cell 0 5 5 1"); pnlOptions.add(new JSeparator(), "cell 0 5 5 1,growx"); chkSubtitleExactMethod = new JCheckBox(Messages.getString("PreferenceDialog.SearchFilterExact")); pnlOptions.add(chkSubtitleExactMethod, "cell 1 6 3 1,grow"); { chkSubtitleKeywordMethod = new JCheckBox(Messages.getString("PreferenceDialog.SearchFilterKeyword")); pnlOptions.add(chkSubtitleKeywordMethod, "cell 1 7 3 1"); } { chkExcludeHearingImpaired = new JCheckBox(Messages.getString("PreferenceDialog.ExcludeHearingImpaired")); pnlOptions.add(chkExcludeHearingImpaired, "cell 1 8 3 1"); } pnlOptions.add(new JLabel(Messages.getString("PreferenceDialog.TableOptions")), "cell 0 9 5 1"); pnlOptions.add(new JSeparator(), "cell 0 9 5 1,growx"); chkOnlyFound = new JCheckBox(Messages.getString("PreferenceDialog.ShowOnlyFound")); pnlOptions.add(chkOnlyFound, "cell 1 10 3 1,growx,aligny center"); pnlOptions.add(new JLabel(Messages.getString("PreferenceDialog.ErrorHandlingOption")), "cell 0 11 5 1"); pnlOptions.add(new JSeparator(), "cell 0 11 5 1,growx"); chkStopOnSearchError = new JCheckBox(Messages.getString("PreferenceDialog.StopAfterError")); pnlOptions.add(chkStopOnSearchError, "cell 1 12 3 1,alignx left,aligny center"); { JLabel label = new JLabel(Messages.getString("PreferenceDialog.SerieDatabaseSource")); pnlOptions.add(label, "cell 0 13 5 1"); pnlOptions.add(new JSeparator(), "cell 0 13 5 1,growx"); } { cbxEpisodeProcessSource = new JComboBox<SettingsProcessEpisodeSource>(); cbxEpisodeProcessSource.setModel(new DefaultComboBoxModel<SettingsProcessEpisodeSource>( SettingsProcessEpisodeSource.values())); cbxEpisodeProcessSource.setEnabled(false); pnlOptions.add(cbxEpisodeProcessSource, "cell 1 14,growx"); } } { JPanel pnlSerieSources = new JPanel(); tabbedPane.addTab(Messages.getString("PreferenceDialog.SerieSources"), null, pnlSerieSources, null); pnlSerieSources.setLayout(new MigLayout("", "[grow]", "[][top][]")); JPanel pnlSerieSourcesSelectionSettings = new JPanel(); pnlSerieSources.add(pnlSerieSourcesSelectionSettings, "cell 0 0 3 1,grow"); pnlSerieSourcesSelectionSettings.setLayout(new MigLayout("", "[50px:n][][100.00,grow][grow][grow]", "[][][][][][][]")); pnlSerieSourcesSelectionSettings.add(new JLabel("Selecteer de gewenste providers"), "cell 0 0 5 1,gapy 5"); pnlSerieSources.add(pnlSerieSourcesSelectionSettings, "cell 0 0 3 1,grow"); pnlSerieSourcesSelectionSettings.add(new JSeparator(), "cell 0 0 5 1,growx,gapy 5"); chkSerieSourceAddic7ed = new JCheckBox("Addic7ed"); pnlSerieSourcesSelectionSettings.add(chkSerieSourceAddic7ed, "cell 0 1 2 1"); chkSerieSourceTvSubtitles = new JCheckBox("Tv Subtitles"); pnlSerieSourcesSelectionSettings.add(chkSerieSourceTvSubtitles, "cell 0 2 2 1"); chkSerieSourcePodnapisi = new JCheckBox("Podnapisi"); pnlSerieSourcesSelectionSettings.add(chkSerieSourcePodnapisi, "cell 0 3 2 1"); chkSerieSourceOpensubtitles = new JCheckBox("Opensubtitles"); pnlSerieSourcesSelectionSettings.add(chkSerieSourceOpensubtitles, "cell 0 4 2 1"); chkSerieSourceLocal = new JCheckBox("Lokaal"); pnlSerieSourcesSelectionSettings.add(chkSerieSourceLocal, "cell 0 5 2 1"); { chkSerieSourceSubsMax = new JCheckBox("SubsMax"); pnlSerieSourcesSelectionSettings.add(chkSerieSourceSubsMax, "cell 0 6"); } JPanel pnlAddic7edLoginSettings = new JPanel(); pnlSerieSources.add(pnlAddic7edLoginSettings, "cell 0 1 3 1,grow"); pnlAddic7edLoginSettings.setLayout(new MigLayout("", "[50px:n][][grow][grow]", "[][][][]")); pnlAddic7edLoginSettings .add(new JLabel(Messages.getString("PreferenceDialog.Addic7edLogin")), "cell 0 0 4 1,gapy 5"); pnlAddic7edLoginSettings.add(new JSeparator(), "cell 0 0 4 1,growx,gapy 5"); { chkUserAddic7edLogin = new JCheckBox(Messages.getString("PreferenceDialog.UseAddic7edLogin")); pnlAddic7edLoginSettings.add(chkUserAddic7edLogin, "cell 0 1 3 1"); } { JLabel lblUsername = new JLabel(Messages.getString("PreferenceDialog.Username")); pnlAddic7edLoginSettings.add(lblUsername, "cell 1 2,alignx trailing"); } { txtAddic7edUsername = new JTextField(); pnlAddic7edLoginSettings.add(txtAddic7edUsername, "cell 2 2,growx"); txtAddic7edUsername.setColumns(10); } { JLabel lblAddic7edPassword = new JLabel(Messages.getString("PreferenceDialog.Password")); pnlAddic7edLoginSettings.add(lblAddic7edPassword, "cell 1 3,alignx trailing"); } { txtAddic7edPassword = new JTextField(); pnlAddic7edLoginSettings.add(txtAddic7edPassword, "cell 2 3,growx"); txtAddic7edPassword.setColumns(10); } JPanel pnlLocalSourcesSettings = new JPanel(); pnlSerieSources.add(pnlLocalSourcesSettings, "cell 0 2 3 1,grow"); pnlLocalSourcesSettings.setLayout(new MigLayout("", "[][][][grow]", "[][][]")); pnlLocalSourcesSettings.add( new JLabel(Messages.getString("PreferenceDialog.LocalFolders")), "cell 0 0 5 1,gapy 5"); pnlLocalSourcesSettings.add(new JSeparator(), "cell 0 0 5 1,growx,gapy 5"); { JLabel lblLocalSources = new JLabel(Messages.getString("PreferenceDialog.LocalFolderWithSubtitles")); pnlLocalSourcesSettings.add(lblLocalSources, "cell 0 1,alignx left,aligny center"); } { JButton btnBrowseLocalSources = new JButton(Messages.getString("PreferenceDialog.AddFolder")); btnBrowseLocalSources.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { File path = MemoryFolderChooser.getInstance().selectDirectory(getContentPane(), Messages.getString("PreferenceDialog.SelectFolder")); if (localSourcesFoldersList.getModel().getSize() == 0) { localSourcesFoldersList.addItem(SettingsExcludeType.FOLDER, path.getAbsolutePath()); } else { boolean exists = false; for (int i = 0; i < localSourcesFoldersList.getModel().getSize(); i++) { if (localSourcesFoldersList.getDescription(i) != null && localSourcesFoldersList.getDescription(i).equals(path.getAbsolutePath())) { exists = true; } } if (!exists) { localSourcesFoldersList.addItem(SettingsExcludeType.FOLDER, path.getAbsolutePath()); } } } }); pnlLocalSourcesSettings.add(btnBrowseLocalSources, "cell 1 1,alignx left,aligny top"); } { JButton btnRemoveLocalSources = new JButton(Messages.getString("PreferenceDialog.DeleteFolder")); btnRemoveLocalSources.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { DefaultListModel<JPanel> model = (DefaultListModel<JPanel>) localSourcesFoldersList.getModel(); int selected = localSourcesFoldersList.getSelectedIndex(); if (model.size() > 0 && selected >= 0) { model.removeElementAt(selected); } } }); pnlLocalSourcesSettings.add(btnRemoveLocalSources, "cell 2 1"); } { JScrollPane scrlPlocalSources = new JScrollPane(); pnlLocalSourcesSettings.add(scrlPlocalSources, "cell 1 2 2 1,grow"); { localSourcesFoldersList = new JListWithImages(); scrlPlocalSources.setViewportView(localSourcesFoldersList); } } } } { JPanel buttonPane = new JPanel(); buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT)); getContentPane().add(buttonPane, BorderLayout.SOUTH); { JButton okButton = new JButton(Messages.getString("PreferenceDialog.OK")); okButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { testAndSaveValues(); } }); okButton.setActionCommand(Messages.getString("PreferenceDialog.OK")); buttonPane.add(okButton); getRootPane().setDefaultButton(okButton); } { JButton cancelButton = new JButton(Messages.getString("PreferenceDialog.Cancel")); cancelButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { setVisible(false); } }); cancelButton.setActionCommand("Cancel"); buttonPane.add(cancelButton); } } } private void setPreferenceSettings() { for (int i = 0; i < settingsCtrl.getSettings().getExcludeList().size(); i++) { excludeList.addItem(settingsCtrl.getSettings().getExcludeList().get(i).getType(), settingsCtrl.getSettings().getExcludeList().get(i).getDescription()); } for (int i = 0; i < settingsCtrl.getSettings().getDefaultIncomingFolders().size(); i++) { defaultIncomingFoldersList.addItem(SettingsExcludeType.FOLDER, settingsCtrl.getSettings() .getDefaultIncomingFolders().get(i).getAbsolutePath()); } for (int i = 0; i < settingsCtrl.getSettings().getLocalSourcesFolders().size(); i++) { localSourcesFoldersList.addItem(SettingsExcludeType.FOLDER, settingsCtrl.getSettings() .getLocalSourcesFolders().get(i).getAbsolutePath()); } chkProxyserverGebruiken.setSelected(settingsCtrl.getSettings().isGeneralProxyEnabled()); txtProxyHost.setText(settingsCtrl.getSettings().getGeneralProxyHost()); txtProxyPort.setText(String.valueOf(settingsCtrl.getSettings().getGeneralProxyPort())); chkAlwaysConfirm.setSelected(settingsCtrl.getSettings().isOptionsAlwaysConfirm()); chkMinScoreSelection.setSelected(settingsCtrl.getSettings().isOptionsMinAutomaticSelection()); sldMinScoreSelection .setValue(settingsCtrl.getSettings().getOptionsMinAutomaticSelectionValue()); chkSubtitleExactMethod.setSelected(settingsCtrl.getSettings().isOptionSubtitleExactMatch()); chkSubtitleKeywordMethod.setSelected(settingsCtrl.getSettings().isOptionSubtitleKeywordMatch()); chkExcludeHearingImpaired.setSelected(settingsCtrl.getSettings() .isOptionSubtitleExcludeHearingImpaired()); chkOnlyFound.setSelected(settingsCtrl.getSettings().isOptionsShowOnlyFound()); chkStopOnSearchError.setSelected(settingsCtrl.getSettings().isOptionsStopOnSearchError()); cbxEpisodeProcessSource.setSelectedItem(settingsCtrl.getSettings().getProcessEpisodeSource()); pnlEpisodeLibrary.setLibrarySettings(settingsCtrl.getSettings().getEpisodeLibrarySettings()); pnlMovieLibrary.setLibrarySettings(settingsCtrl.getSettings().getMovieLibrarySettings()); chkUserAddic7edLogin.setSelected(settingsCtrl.getSettings().isLoginAddic7edEnabled()); txtAddic7edUsername.setText(settingsCtrl.getSettings().getLoginAddic7edUsername()); txtAddic7edPassword.setText(settingsCtrl.getSettings().getLoginAddic7edPassword()); chkSerieSourceAddic7ed.setSelected(settingsCtrl.getSettings().isSerieSourceAddic7ed()); chkSerieSourceTvSubtitles.setSelected(settingsCtrl.getSettings().isSerieSourceTvSubtitles()); chkSerieSourcePodnapisi.setSelected(settingsCtrl.getSettings().isSerieSourcePodnapisi()); chkSerieSourceOpensubtitles .setSelected(settingsCtrl.getSettings().isSerieSourceOpensubtitles()); chkSerieSourceLocal.setSelected(settingsCtrl.getSettings().isSerieSourceLocal()); chkSerieSourceSubsMax.setSelected(settingsCtrl.getSettings().isSerieSourceSubsMax()); cbxUpdateCheckPeriod.setSelectedItem(settingsCtrl.getSettings().getUpdateCheckPeriod()); chkDefaultSelection.setSelected(settingsCtrl.getSettings().isOptionsDefaultSelection()); pnlDefaultSelection.setDefaultSelectionList(settingsCtrl.getSettings() .getOptionsDefaultSelectionQualityList()); } protected boolean testOptionsTab() { return true; } protected boolean testGeneralTab() { try { Integer.parseInt(txtProxyPort.getText()); } catch (Exception e) { String message = Messages.getString("PreferenceDialog.ProxyPortNumericRequired"); JOptionPane.showConfirmDialog(this, message, Messages.getString("PreferenceDialog.Name"), JOptionPane.CLOSED_OPTION, JOptionPane.ERROR_MESSAGE); LOGGER.debug("testGeneralTab: De proxy poort moet een numerische waarde zijn!"); return false; } return true; } protected boolean testSerieSourcesTab() { if (chkUserAddic7edLogin.isSelected()) { if (txtAddic7edUsername.getText().isEmpty() || txtAddic7edPassword.getText().isEmpty()) { String message = Messages.getString("PreferenceDialog.Addic7edLoginSelectEnterUsernamePassword"); JOptionPane.showConfirmDialog(this, message, Messages.getString("PreferenceDialog.Name"), JOptionPane.CLOSED_OPTION, JOptionPane.ERROR_MESSAGE); LOGGER.debug("testSerieSourcesTab: Addic7ed login geselecteerd! Gelieve een username en pasword in te vullen."); return false; } } return true; } private void addExcludeItem(SettingsExcludeType seType) { if (seType == SettingsExcludeType.FOLDER) { File path = MemoryFolderChooser.getInstance().selectDirectory(getContentPane(), Messages.getString("PreferenceDialog.SelectExcludeFolder")); excludeList.addItem(seType, path.getAbsolutePath()); } else if (seType == SettingsExcludeType.REGEX) { String regex = JOptionPane.showInputDialog(Messages.getString("PreferenceDialog.EnterRegex")); excludeList.addItem(seType, regex); } } private void removeExcludeItem() { DefaultListModel<JPanel> model = (DefaultListModel<JPanel>) excludeList.getModel(); int selected = excludeList.getSelectedIndex(); if (model.size() > 0 && selected >= 0) { model.removeElementAt(selected); } } private void testAndSaveValues() { boolean status = true; if (testGeneralTab()) { ArrayList<File> folList = new ArrayList<File>(); for (int i = 0; i < defaultIncomingFoldersList.getModel().getSize(); i++) { folList.add(new File(defaultIncomingFoldersList.getDescription(i))); } settingsCtrl.getSettings().setDefaultIncomingFolders(folList); ArrayList<SettingsExcludeItem> list = new ArrayList<SettingsExcludeItem>(); for (int i = 0; i < excludeList.getModel().getSize(); i++) { SettingsExcludeType excludeListType = excludeList.getType(i); if (excludeListType == null || excludeList.getDescription(i) == null) continue; SettingsExcludeItem sei = new SettingsExcludeItem(excludeList.getDescription(i), excludeListType); list.add(sei); } settingsCtrl.getSettings().setExcludeList(list); settingsCtrl.getSettings().setUpdateCheckPeriod( (UpdateCheckPeriod) cbxUpdateCheckPeriod.getSelectedItem()); settingsCtrl.getSettings().setGeneralProxyEnabled(chkProxyserverGebruiken.isSelected()); settingsCtrl.getSettings().setGeneralProxyHost(txtProxyHost.getText()); settingsCtrl.getSettings().setGeneralProxyPort(Integer.parseInt(txtProxyPort.getText())); } else { status = false; } if (pnlEpisodeLibrary.isValidPanelValues()) { LibrarySettings libs = pnlEpisodeLibrary.getLibrarySettings(); settingsCtrl.getSettings().setEpisodeLibrarySettings(libs); } else { status = false; } if (pnlMovieLibrary.isValidPanelValues()) { LibrarySettings libs = pnlMovieLibrary.getLibrarySettings(); settingsCtrl.getSettings().setMovieLibrarySettings(libs); } else { status = false; } if (testOptionsTab()) { settingsCtrl.getSettings().setOptionsAlwaysConfirm(chkAlwaysConfirm.isSelected()); settingsCtrl.getSettings().setOptionsMinAutomaticSelection(chkMinScoreSelection.isSelected()); settingsCtrl.getSettings().setOptionsMinAutomaticSelectionValue( sldMinScoreSelection.getValue()); settingsCtrl.getSettings().setOptionSubtitleExactMatch(chkSubtitleExactMethod.isSelected()); settingsCtrl.getSettings().setOptionSubtitleKeywordMatch( chkSubtitleKeywordMethod.isSelected()); settingsCtrl.getSettings().setOptionSubtitleExcludeHearingImpaired( chkExcludeHearingImpaired.isSelected()); settingsCtrl.getSettings().setOptionsShowOnlyFound(chkOnlyFound.isSelected()); settingsCtrl.getSettings().setOptionsStopOnSearchError(chkStopOnSearchError.isSelected()); settingsCtrl.getSettings().setProcessEpisodeSource( (SettingsProcessEpisodeSource) cbxEpisodeProcessSource.getSelectedItem()); settingsCtrl.getSettings().setOptionsDefaultSelection(this.chkDefaultSelection.isSelected()); settingsCtrl.getSettings().setOptionsDefaultSelectionQualityList( this.pnlDefaultSelection.getDefaultSelectionList()); } else { status = false; } if (testSerieSourcesTab()) { settingsCtrl.getSettings().setLoginAddic7edEnabled(chkUserAddic7edLogin.isSelected()); settingsCtrl.getSettings().setLoginAddic7edUsername(txtAddic7edUsername.getText()); settingsCtrl.getSettings().setLoginAddic7edPassword(txtAddic7edPassword.getText()); ArrayList<File> folList = new ArrayList<File>(); for (int i = 0; i < localSourcesFoldersList.getModel().getSize(); i++) { folList.add(new File(localSourcesFoldersList.getDescription(i))); } settingsCtrl.getSettings().setLocalSourcesFolders(folList); settingsCtrl.getSettings().setSerieSourceAddic7ed(chkSerieSourceAddic7ed.isSelected()); settingsCtrl.getSettings().setSerieSourceTvSubtitles(chkSerieSourceTvSubtitles.isSelected()); settingsCtrl.getSettings().setSerieSourcePodnapisi(chkSerieSourcePodnapisi.isSelected()); settingsCtrl.getSettings().setSerieSourceOpensubtitles( chkSerieSourceOpensubtitles.isSelected()); settingsCtrl.getSettings().setSerieSourceLocal(chkSerieSourceLocal.isSelected()); settingsCtrl.getSettings().setSerieSourceSubsMax(chkSerieSourceSubsMax.isSelected()); } else { status = false; } if (status) { setVisible(false); settingsCtrl.store(); } this.eventEmitter.fire(new Event("providers.settings.change")); } }