package com.dedupeer.gui.component.dialog; import java.awt.BorderLayout; import java.awt.Container; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.Toolkit; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JSeparator; import javax.swing.JTextField; import javax.swing.SwingConstants; import com.dedupeer.dao.CassandraManager; import com.dedupeer.dao.Login; import com.dedupeer.utils.FileUtils; /** * @author Paulo Fernando (pf@paulofernando.net.br) */ public class SettingsDialog { private JDialog dialog; private JPanel mainPanel; private JButton btDelete, btSave, btCancel; private JTextField tfChunkSize; private JTextField tfChunksToLoad; private JCheckBox check; private JFrame parentFrame; private Login login; public SettingsDialog(JFrame parentFrame, Login login) { this.parentFrame = parentFrame; this.login = login; this.dialog = new JDialog(parentFrame, "Settings", true); this.dialog.setResizable(false); this.dialog.getContentPane().add(createPane()); this.dialog.pack(); this.dialog.setSize(350, 120); this.dialog.setLocation(new Double((Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2) - (dialog.getWidth() / 2)).intValue(), new Double((Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2) - (dialog.getHeight() / 2)).intValue()); tfChunksToLoad.setText(FileUtils.getPropertiesLoader().getProperties().getProperty("chunks.to.load")); tfChunkSize.setText(FileUtils.getPropertiesLoader().getProperties().getProperty("default.chunk.size")); check.setSelected(FileUtils.getPropertiesLoader().getProperties().getProperty("calculate.all.hashes").equals("true")); this.dialog.setVisible(true); } protected Container createPane() { mainPanel = new JPanel(); mainPanel.setLayout(new BorderLayout()); JPanel centerPanel = new JPanel(new GridLayout(0, 2,5,2)); JLabel lbChunkSize = new JLabel("Default chunk size (bytes):", JLabel.RIGHT); JLabel lbChunksToLoad = new JLabel("Chunks to load by time:", JLabel.RIGHT); tfChunkSize = new JTextField(20); tfChunksToLoad = new JTextField(20); check = new JCheckBox("Just calculate hashes of chunks with default size"); centerPanel.add(lbChunkSize); centerPanel.add(tfChunkSize); centerPanel.add(lbChunksToLoad); centerPanel.add(tfChunksToLoad); mainPanel.add(centerPanel, BorderLayout.CENTER); mainPanel.add(check, BorderLayout.NORTH); JPanel buttons = new JPanel(new FlowLayout(FlowLayout.CENTER)); btDelete = new JButton("Delete All Files", new ImageIcon("resources/images/warning.png")); btDelete.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { int response = JOptionPane.showConfirmDialog(parentFrame, "Do you want really delete ALL files?", "Delete all files", JOptionPane.WARNING_MESSAGE); if(response == JOptionPane.OK_OPTION) { CassandraManager cm = new CassandraManager(); if(cm.dropDedupeerDataModel()) { JOptionPane.showMessageDialog(parentFrame, "All files were deleted!", "Files deleted", JOptionPane.INFORMATION_MESSAGE); cm.createDedupeerDataModel(); login.loadFiles(); } else { JOptionPane.showMessageDialog(parentFrame, "Error when deleting files!", "Error", JOptionPane.ERROR_MESSAGE); } } } }); btSave = new JButton("Save"); btSave.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { FileUtils.getPropertiesLoader().getProperties().setProperty("chunks.to.load", tfChunksToLoad.getText()); FileUtils.getPropertiesLoader().getProperties().setProperty("default.chunk.size", tfChunkSize.getText()); FileUtils.getPropertiesLoader().getProperties().setProperty("calculate.all.hashes", check.isSelected() ? "true" : "false"); OutputStream out; try { out = new FileOutputStream(new File("dedupeer.properties")); FileUtils.getPropertiesLoader().getProperties().store(out, ""); } catch (FileNotFoundException e1) { JOptionPane.showMessageDialog(parentFrame, "File not found", "Error", JOptionPane.ERROR_MESSAGE); e1.printStackTrace(); } catch (IOException e1) { JOptionPane.showMessageDialog(parentFrame, "Error on write", "Error", JOptionPane.ERROR_MESSAGE); e1.printStackTrace(); } close(); } }); btCancel = new JButton("Cancel"); btCancel.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { close(); } }); buttons.add(btDelete); buttons.add(btSave); buttons.add(btCancel); mainPanel.add(buttons, BorderLayout.SOUTH); return mainPanel; } protected void close() { this.dialog.dispose(); this.dialog.setVisible(false); } }