package main.settings.panels;
import java.awt.event.ActionEvent;
import java.io.File;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import share.folder.Folder;
import main.settings.Settings;
public class SharingSettingPanel extends AbstractSettingPanel
{
private static JPanel panel = new JPanel();
private static JTextField reshareIntervalField;
private static JCheckBox hiddenFoldersCheckBox;
private static JCheckBox hiddenFilesCheckBox;
private static JTextField downloadField;
private static JTextField incompleteField;
private JButton downloadButton;
private JButton incompleteButton;
private static final String BROWSE_DOWNLOAD_ACTION = "browse_download_folder";
private static final String BROWSE_INCOMPLETE_ACTION = "browse_incomplete_folder";
protected SharingSettingPanel()
{
super();
reshareIntervalField = addTextField("Check for new shared files every:",
new Long(Settings.share.update_rate / 1000).toString());
addComponent(new JLabel("seconds"), 0.01);
hiddenFoldersCheckBox = addCheckBox("share hidden folders",
Settings.share.search_hidden_folders);
hiddenFilesCheckBox = addCheckBox("share hidden files",
Settings.share.share_hidden_files);
downloadField = addTextField("Downloaded files folder:",
Settings.share.folder.download);
downloadButton = new JButton("Browse");
downloadButton.setActionCommand(BROWSE_DOWNLOAD_ACTION);
downloadButton.addActionListener(this);
addComponent(downloadButton, 0.01);
incompleteField = addTextField("Incomplete files folder:",
Settings.share.folder.incomplete);
incompleteButton = new JButton("Browse");
incompleteButton.setActionCommand(BROWSE_INCOMPLETE_ACTION);
incompleteButton.addActionListener(this);
addComponent(incompleteButton, 0.01);
addSaveButton();
}
private static void resetFields()
{
reshareIntervalField.setText(new Long(Settings.share.update_rate / 1000)
.toString());
hiddenFoldersCheckBox.setSelected(Settings.share.search_hidden_folders);
hiddenFilesCheckBox.setSelected(Settings.share.share_hidden_files);
downloadField.setText(Settings.share.folder.download);
incompleteField.setText(Settings.share.folder.incomplete);
}
public void actionPerformed(ActionEvent event)
{
super.actionPerformed(event);
if (BROWSE_DOWNLOAD_ACTION.equals(event.getActionCommand()))
{
JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
{
downloadField.setText(cutWorkingDirectory(chooser.getSelectedFile()
.getAbsolutePath()));
}
}
if (BROWSE_INCOMPLETE_ACTION.equals(event.getActionCommand()))
{
JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
{
incompleteField.setText(cutWorkingDirectory(chooser.getSelectedFile()
.getAbsolutePath()));
}
}
}
protected boolean checkFields()
{
if (!reshareIntervalField.getText().matches("[\\d]+"))
{
return false;
}
if (!checkFolder(downloadField.getText()))
{
return false;
}
if (!checkFolder(incompleteField.getText()))
{
return false;
}
return true;
}
protected boolean checkChanges()
{
if (!new Long(Settings.share.update_rate).equals(Long
.parseLong(reshareIntervalField.getText()) * 1000))
{
return true;
}
if (hiddenFoldersCheckBox.isSelected() != Settings.share.search_hidden_folders)
{
return true;
}
if (hiddenFilesCheckBox.isSelected() != Settings.share.share_hidden_files)
{
return true;
}
if (!Settings.share.folder.download.equals(downloadField.getText()))
{
return true;
}
if (!Settings.share.folder.incomplete.equals(incompleteField.getText()))
{
return true;
}
return false;
}
protected void setSettings()
{
Settings.share.update_rate = Long.parseLong(reshareIntervalField.getText()) * 1000;
Settings.share.search_hidden_folders = hiddenFoldersCheckBox.isSelected();
Settings.share.share_hidden_files = hiddenFilesCheckBox.isSelected();
Settings.share.folder.download = downloadField.getText();
Settings.share.folder.incomplete = incompleteField.getText();
}
protected JPanel getPanel()
{
return panel;
}
public static JPanel getStaticPanel()
{
resetFields();
return panel;
}
private String cutWorkingDirectory(String path)
{
String working = System.getProperty("user.dir") + File.separator;
if (path.contains(working))
{
path = path.replace(working, "");
}
return path;
}
private boolean checkFolder(String path)
{
return new Folder(path).isShareable();
}
}