Package main.settings.panels

Source Code of main.settings.panels.SharingSettingPanel

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();
  }

}
TOP

Related Classes of main.settings.panels.SharingSettingPanel

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.