package gui;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
import javax.swing.border.TitledBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import util.UserPreferences;
import api.GetToken;
public class PreferencesScreen extends JFrame {
private static final long serialVersionUID = -4807862182563388227L;
// Own reference
protected PreferencesScreen preferencesScreen;
// Main screen reference
protected MainScreen mainScreen;
// Content area
protected JPanel contentPanel;
protected JTabbedPane tabbedPanel;
// Connection tab
protected JPanel connectionTabPanel;
// User settings
protected JPanel userSettingsPanel;
protected JPanel userSettingsV1Panel;
protected JLabel usernameLabel;
protected JTextField usernameText;
protected JLabel apiSecretLabel;
protected JPasswordField apiSecretText;
protected JLabel passwordLabel;
protected JPasswordField passwordText;
protected JPanel userTokenPanel;
protected JLabel userTokenLabel;
protected JTextField userTokenText;
protected JButton userTokenButton;
// Proxy settings
protected JPanel proxySettingsPanel;
protected JCheckBox proxyUseCheck;
protected JLabel proxyAddressLabel;
protected JTextField proxyAddressText;
protected JLabel proxyPortLabel;
protected JTextField proxyPortText;
// Server settings
protected JPanel serverSettingsPanel;
protected JPanel serverCheckPanel;
protected JLabel serverCheckIntervalLabel;
protected JTextField serverCheckIntervalText;
protected JCheckBox autoCleanCheck;
protected JPanel serverSortByPanel;
protected JLabel serverSortByLabel;
protected JComboBox<String> serverSortByCombo;
protected JPanel serverFriendPanel;
protected JCheckBox loadSharedCheck;
// Startup settings
protected JPanel startupSettingsPanel;
protected JCheckBox autoConnectCheck;
protected JCheckBox startInTrayCheck;
// Download settings
protected JPanel downloadSettingsPanel;
protected JPanel autoDownloadPanel;
protected JCheckBox autoDownloadCheck;
protected JPanel downloadTargetPanel;
protected JLabel downloadTargetLabel;
protected JTextField downloadTargetText;
protected JButton fileChooserButton;
protected JFileChooser fileChooser;
protected JPanel downloadWhatPanel;
protected JLabel downloadWhatLabel;
protected JRadioButton everythingRadio;
protected JRadioButton selFoldersRadio;
protected ButtonGroup downloadWhatGroup;
protected JPanel downloadPartsPanel;
protected JLabel maxParallelDownloadsLabel;
protected JTextField maxParallelDownloadsText;
protected JLabel downloadPartsLabel;
protected JTextField downloadPartsText;
protected JPanel fileSizeCheckPanel;
protected JCheckBox fileSizeCheckCheck;
protected JTextField fileSizeCheckText;
protected JPanel fileSizeDeletePanel;
protected JCheckBox fileSizeDeleteCheck;
// Conflict settings
protected JPanel conflictSettingsPanel;
protected JPanel redownloadPanel;
protected JCheckBox redownloadCheck;
protected JComboBox<String> redownloadCombo;
protected JPanel overwritePanel;
protected JCheckBox overwriteCheck;
protected JPanel overwriteComboPanel;
protected JComboBox<String> overwriteCombo;
// Buttons
protected JPanel buttonsPanel;
protected JButton saveAndCloseButton;
protected JButton closeButton;
/**
* Constructor
* @param ms Reference of MainScreen
*/
public PreferencesScreen(MainScreen ms) {
preferencesScreen = this;
mainScreen = ms;
initWindow();
}
/**
* Initializes components of the window
*/
private void initWindow() {
// Content
contentPanel = new JPanel();
contentPanel.setLayout(new BoxLayout(contentPanel, BoxLayout.PAGE_AXIS));
contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
tabbedPanel = new JTabbedPane();
tabbedPanel.setPreferredSize( new Dimension( 500, 800 ) );
connectionTabPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
// User settings
userSettingsPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
userSettingsPanel.setLayout(new BoxLayout(userSettingsPanel, BoxLayout.PAGE_AXIS));
userSettingsPanel.setBorder(new TitledBorder("User Settings"));
userSettingsV1Panel = new JPanel(new FlowLayout(FlowLayout.LEFT));
usernameLabel = new JLabel("Username:");
usernameText = new JTextField(UserPreferences.PREF_USERNAME, 6);
apiSecretLabel = new JLabel("API Secret:");
apiSecretText = new JPasswordField(UserPreferences.PREF_API_SECRET, 6);
passwordLabel = new JLabel("Password:");
passwordText = new JPasswordField(UserPreferences.PREF_PASSWORD, 6);
userSettingsV1Panel.add(usernameLabel);
userSettingsV1Panel.add(usernameText);
userSettingsV1Panel.add(apiSecretLabel);
userSettingsV1Panel.add(apiSecretText);
userSettingsV1Panel.add(passwordLabel);
userSettingsV1Panel.add(passwordText);
userTokenPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
userTokenPanel.setPreferredSize( new Dimension( 443, 40 ) );
userTokenLabel = new JLabel("Token:");
userTokenText = new JTextField(UserPreferences.PREF_USERTOKEN, 10);
userTokenButton = new JButton("Get your token");
userTokenButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
GetToken.browse();
}
});
userTokenPanel.add(userTokenLabel);
userTokenPanel.add(userTokenText);
userTokenPanel.add(userTokenButton);
//userSettingsPanel.add(userSettingsV1Panel);
userSettingsPanel.add(userTokenPanel);
// Proxy settings
proxySettingsPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
proxyUseCheck = new JCheckBox("Use Proxy", UserPreferences.PREF_USE_PROXY);
proxyUseCheck.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
if (proxyUseCheck.isSelected()) {
proxyAddressText.setEnabled(true);
proxyPortText.setEnabled(true);
} else {
proxyAddressText.setEnabled(false);
proxyPortText.setEnabled(false);
}
}
});
proxySettingsPanel.setBorder(new TitledBorder("Proxy Settings"));
proxyAddressLabel = new JLabel("Proxy:");
proxyAddressText = new JTextField(UserPreferences.PREF_PROXY_ADDRESS, 15);
proxyPortLabel = new JLabel("Port:");
proxyPortText = new JTextField(UserPreferences.PREF_PROXY_PORT, 3);
proxySettingsPanel.add(proxyUseCheck);
proxySettingsPanel.add(proxyAddressLabel);
proxySettingsPanel.add(proxyAddressText);
proxySettingsPanel.add(proxyPortLabel);
proxySettingsPanel.add(proxyPortText);
proxySettingsPanel.setPreferredSize( new Dimension( 455, 60 ) );
// Server settings
serverSettingsPanel = new JPanel();
serverSettingsPanel.setLayout(new BoxLayout(serverSettingsPanel, BoxLayout.PAGE_AXIS));
serverSettingsPanel.setBorder(new TitledBorder("Server Settings"));
serverCheckPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
serverCheckIntervalLabel = new JLabel("Server check interval (sec):");
serverCheckIntervalText = new JTextField(String.valueOf(UserPreferences.PREF_SERVER_CHECK_INTERVAL), 3);
autoCleanCheck = new JCheckBox("Delete empty folders (keeps account clean)", UserPreferences.PREF_AUTO_CLEAN);
serverCheckPanel.add(serverCheckIntervalLabel);
serverCheckPanel.add(serverCheckIntervalText);
serverCheckPanel.add(autoCleanCheck);
serverSortByPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
serverSortByLabel = new JLabel("Sort by default:");
serverSortByCombo = new JComboBox<String>(new String[] {"Name", "Date"});
serverSortByCombo.setSelectedIndex(UserPreferences.PREF_BEHAVIOR_SORT_BY);
serverSortByPanel.add(serverSortByLabel);
serverSortByPanel.add(serverSortByCombo);
serverFriendPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
loadSharedCheck = new JCheckBox("Load friends' files (this could take some time to load)", UserPreferences.PREF_LOAD_SHARED);
serverFriendPanel.add(loadSharedCheck);
serverSettingsPanel.add(serverCheckPanel);
serverSettingsPanel.add(serverSortByPanel);
serverSettingsPanel.add(serverFriendPanel);
serverSettingsPanel.setPreferredSize( new Dimension( 455, 120 ) );
connectionTabPanel.add(userSettingsPanel);
connectionTabPanel.add(proxySettingsPanel);
connectionTabPanel.add(serverSettingsPanel);
tabbedPanel.addTab("Connection", null, connectionTabPanel);
// Startup settings
startupSettingsPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
autoConnectCheck = new JCheckBox("Connect on start automatically", UserPreferences.PREF_AUTO_CONNECT);
startInTrayCheck = new JCheckBox("Start in system tray", UserPreferences.PREF_START_IN_TRAY);
startupSettingsPanel.setBorder(new TitledBorder("Startup Settings"));
startupSettingsPanel.add(autoConnectCheck);
startupSettingsPanel.add(startInTrayCheck);
tabbedPanel.addTab("Startup", null, startupSettingsPanel);
// Download Settings
downloadSettingsPanel = new JPanel();
downloadSettingsPanel.setLayout(new BoxLayout(downloadSettingsPanel, BoxLayout.PAGE_AXIS));
downloadSettingsPanel.setBorder(new TitledBorder("Download Settings"));
autoDownloadPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
autoDownloadCheck = new JCheckBox("Download on connect", UserPreferences.PREF_AUTO_DOWNLOAD);
autoDownloadPanel.add(autoDownloadCheck);
downloadTargetPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
downloadTargetLabel = new JLabel("Target:");
downloadTargetText = new JTextField(UserPreferences.PREF_DOWNLOAD_TARGET, 20);
downloadTargetText.setEditable(false);
fileChooserButton = new JButton("Browse");
fileChooserButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (fileChooser.showOpenDialog(preferencesScreen) == JFileChooser.APPROVE_OPTION) {
downloadTargetText.setText(fileChooser.getSelectedFile().getAbsolutePath());
}
}
});
fileChooser = new JFileChooser(downloadTargetText.getText());
fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fileChooser.setDialogTitle("Select download directory");
fileChooser.setAcceptAllFileFilterUsed(false);
downloadTargetPanel.add(downloadTargetLabel);
downloadTargetPanel.add(downloadTargetText);
downloadTargetPanel.add(fileChooserButton);
downloadWhatPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
downloadWhatLabel = new JLabel("Download:");
everythingRadio = new JRadioButton("everything");
selFoldersRadio = new JRadioButton("selected folders");
selFoldersRadio.setToolTipText( "Right clic folder -> Add to automatic download" );
downloadWhatGroup = new ButtonGroup();
downloadWhatGroup.add( everythingRadio );
downloadWhatGroup.add( selFoldersRadio );
downloadWhatPanel.add( downloadWhatLabel );
downloadWhatPanel.add( everythingRadio );
downloadWhatPanel.add( selFoldersRadio );
downloadPartsPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
maxParallelDownloadsLabel = new JLabel("Max parallel downloads:");
maxParallelDownloadsText = new JTextField(String.valueOf(UserPreferences.PREF_MAX_DOWNLOADS), 2);
downloadPartsLabel = new JLabel("Parts for each download:");
downloadPartsText = new JTextField(String.valueOf(UserPreferences.PREF_DOWNLOAD_PART_COUNT), 2);
downloadPartsPanel.add(maxParallelDownloadsLabel);
downloadPartsPanel.add(maxParallelDownloadsText);
downloadPartsPanel.add(downloadPartsLabel);
downloadPartsPanel.add(downloadPartsText);
fileSizeCheckPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
fileSizeCheckCheck = new JCheckBox("Skip download if size of the file is smaller than (MB):", UserPreferences.PREF_FILE_SIZE_CHECK);
fileSizeCheckCheck.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
fileSizeCheckText.setEnabled(fileSizeCheckCheck.isSelected());
fileSizeDeleteCheck.setEnabled(fileSizeCheckCheck.isSelected());
}
});
fileSizeCheckText = new JTextField(String.valueOf(UserPreferences.PREF_FILE_SIZE_FOR_CHECK), 4);
fileSizeCheckText.setEnabled(fileSizeCheckCheck.isSelected());
fileSizeCheckPanel.add(fileSizeCheckCheck);
fileSizeCheckPanel.add(fileSizeCheckText);
fileSizeDeletePanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
fileSizeDeleteCheck = new JCheckBox("Also delete it from server automatically", UserPreferences.PREF_FILE_SIZE_DELETE);
fileSizeDeleteCheck.setEnabled(UserPreferences.PREF_FILE_SIZE_CHECK);
fileSizeDeletePanel.add(fileSizeDeleteCheck);
downloadSettingsPanel.add(autoDownloadPanel);
downloadSettingsPanel.add(downloadTargetPanel);
downloadSettingsPanel.add(downloadWhatPanel);
downloadSettingsPanel.add(downloadPartsPanel);
downloadSettingsPanel.add(fileSizeCheckPanel);
downloadSettingsPanel.add(fileSizeDeletePanel);
tabbedPanel.addTab("Download", null, downloadSettingsPanel);
// Conflict settings
conflictSettingsPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
conflictSettingsPanel.setBorder(new TitledBorder("Conflict Settings"));
redownloadPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
redownloadCheck = new JCheckBox("Do not ask if file already downloaded. Apply following: ", UserPreferences.PREF_DONT_ASK_DOWNLOAD_AGAIN);
redownloadCheck.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
redownloadCombo.setEnabled(redownloadCheck.isSelected());
}
});
redownloadCombo = new JComboBox<String>(new String[] {"Download again", "Skip", "Skip and delete"});
redownloadCombo.setSelectedIndex(UserPreferences.PREF_BEHAVIOR_DOWNLOAD_AGAIN);
redownloadCombo.setEnabled(UserPreferences.PREF_DONT_ASK_DOWNLOAD_AGAIN);
redownloadPanel.add(redownloadCheck);
redownloadPanel.add(redownloadCombo);
overwritePanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
overwriteCheck = new JCheckBox("Do not ask if file already exits on disc. Apply following: ", UserPreferences.PREF_DONT_ASK_OVERWRITE);
overwriteCheck.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
overwriteCombo.setEnabled(overwriteCheck.isSelected());
}
});
overwriteComboPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
overwriteCombo = new JComboBox<String>(new String[] {"Overwrite", "Skip", "Skip and delete from server", "Skip in case of same size", "Skip in case of same size and delete from server"});
overwriteCombo.setSelectedIndex(UserPreferences.PREF_BEHAVIOR_OVERWRITE);
overwriteCombo.setEnabled(UserPreferences.PREF_DONT_ASK_OVERWRITE);
overwritePanel.add(overwriteCheck);
overwriteComboPanel.add(overwriteCombo);
conflictSettingsPanel.add(redownloadPanel);
conflictSettingsPanel.add(overwritePanel);
conflictSettingsPanel.add(overwriteComboPanel);
tabbedPanel.addTab("Conflict", null, conflictSettingsPanel);
// Buttons
buttonsPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
saveAndCloseButton = new JButton("Save & Close");
saveAndCloseButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (saveSettings()) {
preferencesScreen.setVisible(false);
}
}
});
closeButton = new JButton("Close");
closeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
preferencesScreen.setVisible(false);
}
});
buttonsPanel.add(saveAndCloseButton);
buttonsPanel.add(closeButton);
// Add to content pane
contentPanel.add(tabbedPanel);
contentPanel.add(buttonsPanel);
this.getContentPane().add(contentPanel, BorderLayout.CENTER);
this.setTitle("Preferences");
this.setSize(new Dimension(490, 370));
this.setResizable(false);
}
/**
* Saves all user preferences
* @return True if save operation was successful
*/
private boolean saveSettings() {
int maxDownloads, downloadPartCount, serverCheckInterval;
float deleteLimit;
try {
maxDownloads = Integer.parseInt(maxParallelDownloadsText.getText());
if (maxDownloads < 0)
throw new NumberFormatException();
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null, "Please enter a valid number as maximum parallel downloads!", "Error", JOptionPane.ERROR_MESSAGE);
return false;
}
try {
downloadPartCount = Integer.parseInt(downloadPartsText.getText());
if (downloadPartCount < 1)
throw new NumberFormatException();
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null, "Please enter a valid number as download part count!", "Error", JOptionPane.ERROR_MESSAGE);
return false;
}
try {
serverCheckInterval = Integer.parseInt(serverCheckIntervalText.getText());
if (serverCheckInterval < 0)
throw new NumberFormatException();
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null, "Please enter a valid number as server check interval!", "Error", JOptionPane.ERROR_MESSAGE);
return false;
}
try {
deleteLimit = Float.parseFloat(fileSizeCheckText.getText());
if (deleteLimit < 0.0f)
throw new NumberFormatException();
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null, "Please enter a valid number as the limit for deleting small files!", "Error", JOptionPane.ERROR_MESSAGE);
return false;
}
UserPreferences.PREF_USERNAME = usernameText.getText();
UserPreferences.PREF_API_SECRET = String.valueOf(apiSecretText.getPassword());
UserPreferences.PREF_PASSWORD = String.valueOf(passwordText.getPassword());
UserPreferences.PREF_USERTOKEN = userTokenText.getText();
UserPreferences.PREF_USE_PROXY = proxyUseCheck.isSelected();
UserPreferences.PREF_PROXY_ADDRESS = proxyAddressText.getText();
UserPreferences.PREF_PROXY_PORT = proxyPortText.getText();
UserPreferences.PREF_AUTO_CONNECT = autoConnectCheck.isSelected();
UserPreferences.PREF_START_IN_TRAY = startInTrayCheck.isSelected();
UserPreferences.PREF_AUTO_DOWNLOAD = autoDownloadCheck.isSelected();
UserPreferences.PREF_DOWNLOAD_TARGET = downloadTargetText.getText();
UserPreferences.PREF_MAX_DOWNLOADS = maxDownloads;
UserPreferences.PREF_DOWNLOAD_PART_COUNT = downloadPartCount;
UserPreferences.PREF_FILE_SIZE_CHECK = fileSizeCheckCheck.isSelected();
UserPreferences.PREF_FILE_SIZE_FOR_CHECK = deleteLimit;
UserPreferences.PREF_FILE_SIZE_DELETE = fileSizeDeleteCheck.isSelected();
UserPreferences.PREF_AUTO_CLEAN = autoCleanCheck.isSelected();
UserPreferences.PREF_LOAD_SHARED = loadSharedCheck.isSelected();
UserPreferences.PREF_SERVER_CHECK_INTERVAL = serverCheckInterval;
UserPreferences.PREF_DONT_ASK_DOWNLOAD_AGAIN = redownloadCheck.isSelected();
UserPreferences.PREF_BEHAVIOR_DOWNLOAD_AGAIN = redownloadCombo.getSelectedIndex();
UserPreferences.PREF_DONT_ASK_OVERWRITE = overwriteCheck.isSelected();
UserPreferences.PREF_BEHAVIOR_OVERWRITE = overwriteCombo.getSelectedIndex();
UserPreferences.PREF_BEHAVIOR_SORT_BY = serverSortByCombo.getSelectedIndex();
UserPreferences.PREF_BEHAVIOR_DOWNLOAD_EVERYTHING = everythingRadio.isSelected();
UserPreferences.saveUserPreferences();
return true;
}
/**
* Loads all user preferences
*/
protected void loadSettings() {
usernameText.setText(UserPreferences.PREF_USERNAME);
apiSecretText.setText(UserPreferences.PREF_API_SECRET);
passwordText.setText(UserPreferences.PREF_PASSWORD);
userTokenText.setText(UserPreferences.PREF_USERTOKEN);
proxyUseCheck.setSelected(UserPreferences.PREF_USE_PROXY);
proxyAddressText.setText(UserPreferences.PREF_PROXY_ADDRESS);
proxyPortText.setText(UserPreferences.PREF_PROXY_PORT);
autoDownloadCheck.setSelected(UserPreferences.PREF_AUTO_DOWNLOAD);
downloadTargetText.setText(UserPreferences.PREF_DOWNLOAD_TARGET);
maxParallelDownloadsText.setText(String.valueOf(UserPreferences.PREF_MAX_DOWNLOADS));
downloadPartsText.setText(String.valueOf(UserPreferences.PREF_DOWNLOAD_PART_COUNT));
fileSizeCheckCheck.setSelected(UserPreferences.PREF_FILE_SIZE_CHECK);
fileSizeCheckText.setText(String.valueOf(UserPreferences.PREF_FILE_SIZE_FOR_CHECK));
fileSizeDeleteCheck.setSelected(UserPreferences.PREF_FILE_SIZE_DELETE);
autoCleanCheck.setSelected(UserPreferences.PREF_AUTO_CLEAN);
loadSharedCheck.setSelected(UserPreferences.PREF_LOAD_SHARED);
serverCheckIntervalText.setText(String.valueOf(UserPreferences.PREF_SERVER_CHECK_INTERVAL));
redownloadCheck.setSelected(UserPreferences.PREF_DONT_ASK_DOWNLOAD_AGAIN);
redownloadCombo.setSelectedIndex(UserPreferences.PREF_BEHAVIOR_DOWNLOAD_AGAIN);
overwriteCheck.setSelected(UserPreferences.PREF_DONT_ASK_OVERWRITE);
overwriteCombo.setSelectedIndex(UserPreferences.PREF_BEHAVIOR_OVERWRITE);
serverSortByCombo.setSelectedIndex(UserPreferences.PREF_BEHAVIOR_SORT_BY);
if (UserPreferences.PREF_BEHAVIOR_DOWNLOAD_EVERYTHING) {
everythingRadio.setSelected( true );
selFoldersRadio.setSelected( false );
}
else {
everythingRadio.setSelected( false );
selFoldersRadio.setSelected( true );
}
usernameText.setEnabled(!mainScreen.getDownloadManager().getConnection().isConnected());
apiSecretText.setEnabled(!mainScreen.getDownloadManager().getConnection().isConnected());
passwordText.setEnabled(!mainScreen.getDownloadManager().getConnection().isConnected());
proxyUseCheck.setEnabled(!mainScreen.getDownloadManager().getConnection().isConnected());
proxyAddressText.setEnabled(!mainScreen.getDownloadManager().getConnection().isConnected() && proxyUseCheck.isSelected());
proxyPortText.setEnabled(!mainScreen.getDownloadManager().getConnection().isConnected() && proxyUseCheck.isSelected());
}
}