package gui; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Toolkit; import java.io.File; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JProgressBar; import javax.swing.SwingConstants; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import javax.swing.border.EmptyBorder; import ftp.DownloadTask; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.SystemColor; import java.awt.Font; import javax.swing.JTextPane; import javax.swing.JSeparator; import models.Image; import org.apache.thrift.TException; import server.Server.Client; import server.User; import thrift.ThriftConnection; @SuppressWarnings("serial") public class FTPDownloader_GUI extends JFrame implements PropertyChangeListener { @SuppressWarnings("unused") private JPanel contentPane; private final JPanel contentPanel = new JPanel(); JLabel lblNewLabel; JLabel downspeed; User user; JProgressBar progressBar; String host = "141.79.128.121"; int port = 21; String username = "openslx"; String password = "openslx-ng"; String downloadFile = ""; static String arg = ""; DownloadTask task; JLabel bytesreadlbl; JLabel lblNewLabel_3; JLabel labelVerbleibend; long filesize; double speed; long bytesread; JLabel labelZeit; boolean taskrun = false; ThriftConnection thrift = new ThriftConnection(); Client client = thrift.getThriftConnection(); JButton buttonback = new JButton("Zur\u00FCck"); /** * Launch the application. */ /* * public static void main(String[] args) { EventQueue.invokeLater(new * Runnable() { public void run() { try { FTPDownloader frame = new * FTPDownloader(); frame.setVisible(true); } catch (Exception e) { * e.printStackTrace(); } } }); } */ /** * Create the frame. */ public FTPDownloader_GUI() { addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { if (taskrun == true) { try { client.DeleteFtpUser(user.userName); thrift.closeThriftConnection(); } catch (TException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } task.cancel(true); } dispose(); } }); setResizable(false); // setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e) { // TODO Auto-generated catch block e.printStackTrace(); } setBackground(Color.WHITE); setTitle("Dozentenmodul *Prototyp*"); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); int top = (screenSize.height - 722) / 2; int left = (screenSize.width - 603) / 2; setBounds(left, top, 603, 722); getContentPane().setLayout(new BorderLayout()); contentPanel.setBackground(SystemColor.menu); contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); getContentPane().add(contentPanel, BorderLayout.CENTER); contentPanel.setLayout(null); { JButton btnSpeicherortAuswhlen = new JButton( "Speicherort ausw\u00E4hlen"); btnSpeicherortAuswhlen.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { JFileChooser fc = new JFileChooser(); fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); fc.showOpenDialog(getParent()); File dir = fc.getSelectedFile(); lblNewLabel.setText(dir.getAbsolutePath()); } }); btnSpeicherortAuswhlen.setBounds(57, 124, 141, 23); btnSpeicherortAuswhlen.setVerticalAlignment(SwingConstants.TOP); btnSpeicherortAuswhlen.setHorizontalAlignment(SwingConstants.LEFT); contentPanel.add(btnSpeicherortAuswhlen); } lblNewLabel = new JLabel("C:\\"); lblNewLabel.setBounds(208, 124, 238, 23); contentPanel.add(lblNewLabel); JButton btnDownloadStarten = new JButton("Download starten"); btnDownloadStarten.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { buttonDownloadActionPerformed(arg0); } }); btnDownloadStarten.setBounds(57, 168, 141, 23); contentPanel.add(btnDownloadStarten); progressBar = new JProgressBar(0, 100); progressBar.setStringPainted(true); progressBar.setBounds(57, 202, 497, 30); contentPanel.add(progressBar); JLabel lblDownloadgeschwindigkeit = new JLabel( "Downloadgeschwindigkeit:"); lblDownloadgeschwindigkeit.setBounds(57, 243, 141, 14); contentPanel.add(lblDownloadgeschwindigkeit); downspeed = new JLabel("0"); downspeed.setBounds(308, 243, 95, 14); contentPanel.add(downspeed); JLabel lblNewLabel_1 = new JLabel("Fertig:"); lblNewLabel_1.setBounds(57, 293, 46, 14); contentPanel.add(lblNewLabel_1); bytesreadlbl = new JLabel(""); bytesreadlbl.setBounds(66, 244, 108, 14); contentPanel.add(bytesreadlbl); JLabel lblNewLabel_2 = new JLabel("von:"); lblNewLabel_2.setBounds(226, 293, 46, 14); contentPanel.add(lblNewLabel_2); lblNewLabel_3 = new JLabel(""); lblNewLabel_3.setBounds(235, 244, 108, 14); contentPanel.add(lblNewLabel_3); JLabel lblMbVerbleibend = new JLabel("Verbleibend:"); lblMbVerbleibend.setBounds(57, 318, 71, 14); contentPanel.add(lblMbVerbleibend); labelVerbleibend = new JLabel(""); labelVerbleibend.setBounds(91, 269, 108, 14); contentPanel.add(labelVerbleibend); JLabel lblGeschtzteVerbleibendeZeit = new JLabel( "Gesch\u00E4tzte Verbleibende Zeit:"); lblGeschtzteVerbleibendeZeit.setBounds(57, 268, 150, 14); contentPanel.add(lblGeschtzteVerbleibendeZeit); labelZeit = new JLabel(""); labelZeit.setBounds(261, 219, 117, 14); contentPanel.add(labelZeit); JPanel panel = new JPanel(); panel.setLayout(null); panel.setBackground(SystemColor.menu); panel.setBounds(10, 11, 577, 57); contentPanel.add(panel); JLabel label = new JLabel("Eingabe Ihrer Daten"); label.setFont(new Font("Tahoma", Font.BOLD, 18)); label.setBounds(10, 11, 509, 22); panel.add(label); JTextPane textPane = new JTextPane(); textPane.setText("Geben Sie hier bitte einen sprechenden Imagename sowie Ihre Kontaktdaten an"); textPane.setEditable(false); textPane.setBackground(SystemColor.menu); textPane.setBounds(10, 36, 509, 32); panel.add(textPane); JSeparator separator = new JSeparator(); separator.setBounds(0, 79, 597, 2); contentPanel.add(separator); JLabel label_1 = new JLabel("Hauptmen\u00FC"); label_1.setForeground(Color.BLUE); label_1.setBounds(20, 88, 61, 20); contentPanel.add(label_1); JLabel label_2 = new JLabel(">"); label_2.setBounds(80, 91, 14, 14); contentPanel.add(label_2); JLabel label_3 = new JLabel("VL-Image"); label_3.setForeground(Color.BLUE); label_3.setBounds(91, 88, 46, 20); contentPanel.add(label_3); JLabel label_4 = new JLabel(">"); label_4.setBounds(139, 91, 14, 14); contentPanel.add(label_4); JLabel label_5 = new JLabel("Neu/Bearbeiten"); label_5.setBounds(149, 91, 108, 14); contentPanel.add(label_5); JSeparator separator_1 = new JSeparator(); separator_1.setBounds(-10, 648, 597, 2); contentPanel.add(separator_1); JLabel label_6 = new JLabel("1."); label_6.setBounds(24, 128, 23, 14); contentPanel.add(label_6); JLabel label_7 = new JLabel("2."); label_7.setBounds(24, 172, 23, 14); contentPanel.add(label_7); { JPanel buttonPane = new JPanel(); buttonPane.setBackground(UIManager.getColor("Button.background")); buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT)); getContentPane().add(buttonPane, BorderLayout.SOUTH); { buttonback.setEnabled(false); buttonback.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (taskrun == true) { task.cancel(true); try { client.DeleteFtpUser(user.userName); } catch (TException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } thrift.closeThriftConnection(); SearchEditImage_GUI se=new SearchEditImage_GUI(); se.setVisible(true); dispose(); } }); buttonback.setActionCommand("Cancel"); buttonPane.add(buttonback); } } setVisible(true); } private void buttonDownloadActionPerformed(ActionEvent event) { progressBar.setValue(0); try { user = client.getFtpUser(); downloadFile=client.getPathOfImage(Image.image.getImageId(),Image.image.getVersion()); } catch (TException e) { // TODO Auto-generated catch block e.printStackTrace(); } task = new DownloadTask(host, port, user.userName, user.password, downloadFile, lblNewLabel.getText(), this); task.addPropertyChangeListener(this); task.execute(); taskrun = true; } public void propertyChange(PropertyChangeEvent arg0) { int progress = 0; if ("progress" == arg0.getPropertyName()) { progress = (Integer) arg0.getNewValue(); progressBar.setValue(progress); if (progress == 100) { buttonback.setEnabled(true); } } if ("speed" == arg0.getPropertyName()) { speed = (double) arg0.getNewValue(); // if(speed<=1){ downspeed.setText(String.valueOf(speed).substring(0, String.valueOf(speed).lastIndexOf(".") + 3) + " MB/s"); // }else // { // double MBSpeed=speed/1024; // downspeed.setText(String.valueOf((MBSpeed)).substring(0, // String.valueOf(MBSpeed).indexOf("."))); // } } if ("bytesread" == arg0.getPropertyName()) { bytesread = (long) arg0.getNewValue(); bytesreadlbl.setText((bytesread / 1024 / 1024) + " MB"); labelVerbleibend .setText(((filesize / 1024 / 1024) - (bytesread / 1024 / 1024)) + " MB"); labelZeit .setText(String .valueOf( ((((filesize / 1024 / 1024) - (bytesread / 1024 / 1024)) / speed) / 60) + 1) .substring( 0, String.valueOf( (((filesize / 1024 / 1024) - (bytesread / 1024 / 1024)) / speed) / 60) .lastIndexOf(".")) + " Minuten"); } if ("filesize" == arg0.getPropertyName()) { filesize = (long) arg0.getNewValue(); lblNewLabel_3.setText((filesize / 1024 / 1024) + " MB"); } } }