diff --git a/src/exception/LocalException.java b/src/exception/LocalException.java index 2fbc0f2..6ee4520 100644 --- a/src/exception/LocalException.java +++ b/src/exception/LocalException.java @@ -1,5 +1,5 @@ package exception; public abstract class LocalException extends Exception { - private static final long serialVersionUID = 12L; + private static final long serialVersionUID = 13L; } diff --git a/src/gui/ArgumentsGen.java b/src/gui/ArgumentsGen.java new file mode 100644 index 0000000..aefd8c9 --- /dev/null +++ b/src/gui/ArgumentsGen.java @@ -0,0 +1,167 @@ +package gui; + + +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +/** +* @author Louis Royer +* @author Flavien Haas +* @author JS Auge + */ +public class ArgumentsGen extends javax.swing.JPanel { + + /** + * Creates new form ArgumentsGen + */ + public ArgumentsGen() { + initComponents(); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // + private void initComponents() { + + jLabel1 = new javax.swing.JLabel(); + jLabel2 = new javax.swing.JLabel(); + jLabel3 = new javax.swing.JLabel(); + jLabel4 = new javax.swing.JLabel(); + jLabel5 = new javax.swing.JLabel(); + jLabel6 = new javax.swing.JLabel(); + jComboBox1 = new javax.swing.JComboBox<>(); + jTextField1 = new javax.swing.JTextField(); + jTextField2 = new javax.swing.JTextField(); + jTextField3 = new javax.swing.JTextField(); + jTextField4 = new javax.swing.JTextField(); + jButton1 = new javax.swing.JButton(); + + jLabel1.setText("Enter connection informations:"); + + jLabel2.setText("Server hostname:"); + + jLabel3.setText("Server port:"); + + jLabel4.setText("Tracker hostname:"); + + jLabel5.setText("Tracker port:"); + + jLabel6.setText("Client's protocol:"); + + jComboBox1.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "TCP", "UDP" })); + + jTextField1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jTextField1ActionPerformed(evt); + } + }); + + jTextField2.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jTextField2ActionPerformed(evt); + } + }); + + jButton1.setText("Connect"); + jButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton1ActionPerformed(evt); + } + }); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel1) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel2) + .addComponent(jLabel3) + .addComponent(jLabel4) + .addComponent(jLabel5) + .addComponent(jLabel6)) + .addGap(71, 71, 71) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(jTextField1) + .addComponent(jTextField2, javax.swing.GroupLayout.DEFAULT_SIZE, 149, Short.MAX_VALUE) + .addComponent(jTextField3) + .addComponent(jTextField4))))) + .addContainerGap(138, Short.MAX_VALUE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 121, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel1) + .addGap(19, 19, 19) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel2) + .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(7, 7, 7) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel3) + .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(6, 6, 6) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel4) + .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel5)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 12, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jButton1) + .addContainerGap(16, Short.MAX_VALUE)) + ); + }// + + private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) { + // TODO add your handling code here: + } + + private void jTextField2ActionPerformed(java.awt.event.ActionEvent evt) { + // TODO add your handling code here: + } + + private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { + // TODO add your handling code here: + } + + + // Variables declaration - do not modify + private javax.swing.JButton jButton1; + private javax.swing.JComboBox jComboBox1; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel3; + private javax.swing.JLabel jLabel4; + private javax.swing.JLabel jLabel5; + private javax.swing.JLabel jLabel6; + private javax.swing.JTextField jTextField1; + private javax.swing.JTextField jTextField2; + private javax.swing.JTextField jTextField3; + private javax.swing.JTextField jTextField4; + private static final long serialVersionUID = 13L; + // End of variables declaration +} diff --git a/src/gui/downloadSelection.java b/src/gui/DownloadSelection.java similarity index 68% rename from src/gui/downloadSelection.java rename to src/gui/DownloadSelection.java index 9eb809f..213eae5 100644 --- a/src/gui/downloadSelection.java +++ b/src/gui/DownloadSelection.java @@ -6,32 +6,41 @@ import javax.swing.JButton; import javax.swing.JTextField; import javax.swing.JComboBox; import javax.swing.JList; +import javax.swing.JScrollPane; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.GridLayout; -public class downloadSelection extends JPanel { +public class DownloadSelection extends JPanel { private static final long serialVersionUID = 13L; private String[] listFilesToDownload; private JList list1; private JLabel label1; private JButton downloadButton; + private JScrollPane scroll; - public downloadSelection(String[] listFilesToDownload){ + public DownloadSelection(String[] listFilesToDownload){ JPanel p1 = new JPanel(); JPanel p3 = new JPanel(); + JPanel container = new JPanel(); FlowLayout layout = new FlowLayout(); + p1.setLayout(new GridLayout(1, 2)); + container.setLayout(layout); + p3.setLayout(layout); + this.setLayout(new GridLayout(2, 1)); this.listFilesToDownload = listFilesToDownload; this.list1 = new JList<>(listFilesToDownload); this.label1 = new JLabel("List of files you can download: "); this.downloadButton = new JButton("download"); this.list1.setSelectedIndex(0); - p1.setLayout(new GridLayout(1, 2)); - p3.setLayout(layout); - this.setLayout(new GridLayout(2, 1)); + scroll = new JScrollPane(list1); + int verticalPolicy = JScrollPane.VERTICAL_SCROLLBAR_ALWAYS; + scroll.setVerticalScrollBarPolicy(verticalPolicy); + //container.add(list1); + container.add(scroll); p1.add(label1); - p1.add(list1); + p1.add(container); p3.add(downloadButton); this.add(p1); this.add(p3); diff --git a/src/gui/DownloadSelectionGen.java b/src/gui/DownloadSelectionGen.java new file mode 100644 index 0000000..2bb9cfd --- /dev/null +++ b/src/gui/DownloadSelectionGen.java @@ -0,0 +1,99 @@ +package gui; + +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +/** +* @author Louis Royer +* @author Flavien Haas +* @author JS Auge + */ +public class DownloadSelectionGen extends javax.swing.JPanel { + + // Variables declaration - do not modify + private javax.swing.JButton jButton1; + private javax.swing.JLabel jLabel1; + private javax.swing.JList jList1; + private javax.swing.JScrollPane jScrollPane1; + private static final long serialVersionUID = 13L; + private String[] listFilesToDownload; + // End of variables declaration + + /** + * Creates new form ArgumentsGen + */ + public DownloadSelectionGen(String[] listFilesToDownload) { + this.listFilesToDownload = listFilesToDownload; + initComponents(); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // + private void initComponents() { + + jLabel1 = new javax.swing.JLabel(); + jButton1 = new javax.swing.JButton(); + jScrollPane1 = new javax.swing.JScrollPane(); + jList1 = new javax.swing.JList<>(); + + jLabel1.setText("Select a file to download:"); + + jButton1.setText("Download"); + jButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton1ActionPerformed(evt); + } + }); + + jList1.setModel(new javax.swing.AbstractListModel() { + String[] strings = listFilesToDownload; + public int getSize() { return strings.length; } + public String getElementAt(int i) { return strings[i]; } + }); + jScrollPane1.setViewportView(jList1); + jList1.setSelectedIndex(0); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel1) + .addGap(0, 0, Short.MAX_VALUE)) + .addGroup(layout.createSequentialGroup() + .addGap(97, 97, 97) + .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 300, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(104, Short.MAX_VALUE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 121, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(23, 23, 23)) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel1) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 134, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jButton1) + .addContainerGap(24, Short.MAX_VALUE)) + ); + }// + + + private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { + // TODO add your handling code here: + } + +} diff --git a/src/gui/MainWindow.java b/src/gui/MainWindow.java index d6d5cbb..ae8b931 100644 --- a/src/gui/MainWindow.java +++ b/src/gui/MainWindow.java @@ -9,12 +9,15 @@ public class MainWindow extends JFrame{ public MainWindow(){ JFrame fenetre = new JFrame(); fenetre.setTitle("Client"); - fenetre.setSize(550, 200); + fenetre.setSize(550, 250); fenetre.setLocationRelativeTo(null); fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //fenetre.add(new Parameters()); - String[] listTest = {"test", "test2", "test3", "test4", "test5", "test6", "test7"}; - fenetre.add(new downloadSelection(listTest)); + //fenetre.add(new ArgumentsGen()); + String[] listTest = {"test", "test2", "test3", "test4", "test5", "test6", "test7", "fichier1", + "fichier2", "fichier3", "fichier4"}; + //fenetre.add(new DownloadSelection(listTest)); + fenetre.add(new DownloadSelectionGen(listTest)); fenetre.setVisible(true); } diff --git a/src/gui/Parameters.java b/src/gui/Parameters.java index a681cd0..a715d1c 100644 --- a/src/gui/Parameters.java +++ b/src/gui/Parameters.java @@ -28,7 +28,7 @@ public class Parameters extends JPanel{ this.label2 = new JLabel("Server port: "); this.label3 = new JLabel("Tracker hostname: "); this.label4 = new JLabel("Tracker port: "); - this.label5 = new JLabel("Protocol: "); + this.label5 = new JLabel("Client's Protocol: "); this.field1 = new JTextField(20); this.field2 = new JTextField(20); this.field3 = new JTextField(20);