package GUI; import java.awt.BorderLayout; import rmi.*; import server.ServerInterface; import java.awt.Color; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.FlowLayout; import java.awt.Toolkit; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.rmi.RemoteException; import java.util.Properties; 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 com.jcraft.jsch.ChannelExec; import com.jcraft.jsch.JSch; import com.jcraft.jsch.JSchException; import com.jcraft.jsch.Session; import Models.person; import Models.vm; import downloader.UploadTask; 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 Models.User; @SuppressWarnings("serial") public class FTPUploader extends JFrame implements PropertyChangeListener { @SuppressWarnings("unused") private JPanel contentPane; private final JPanel contentPanel = new JPanel(); JLabel lblNewLabel; JProgressBar progressBar; String host="141.79.128.121"; int port=21; User user; String uploadPath="/"; String filename=""; File uploadFile; static String arg=""; UploadTask task; JLabel UpSpeed; JLabel labelfertig; JLabel labelfilesize; JLabel labelZeit; JLabel labelverbleibend; JLabel labeluser; JLabel labelpass; long filesize; double speed; long bytesread; boolean taskrun=false; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { FTPUploader frame = new FTPUploader(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public FTPUploader() { addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent arg0) { if(taskrun==true) { task.cancel(true); } } }); 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(); } //filename=name; setBackground(Color.WHITE); setTitle("Dozentenmodul *Prototyp*"); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); int top=(screenSize.height - 603) / 2; int left=(screenSize.width - 250) / 2; setBounds(left, top, 603, 250); //setBounds(100, 100, 603, 250); getContentPane().setLayout(new BorderLayout()); contentPanel.setBackground(Color.WHITE); contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); getContentPane().add(contentPanel, BorderLayout.CENTER); contentPanel.setLayout(null); { JButton btnSpeicherortAuswhlen = new JButton("VMDK ausw\u00E4hlen"); btnSpeicherortAuswhlen.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { JFileChooser fc=new JFileChooser(); fc.setFileSelectionMode(JFileChooser.FILES_ONLY); fc.showOpenDialog(getParent()); File dir=fc.getSelectedFile(); uploadFile=dir; filename=uploadFile.getName(); lblNewLabel.setText(dir.getAbsolutePath()); } }); btnSpeicherortAuswhlen.setBounds(10, 11, 141, 23); btnSpeicherortAuswhlen.setVerticalAlignment(SwingConstants.TOP); btnSpeicherortAuswhlen.setHorizontalAlignment(SwingConstants.LEFT); contentPanel.add(btnSpeicherortAuswhlen); } lblNewLabel = new JLabel(""); lblNewLabel.setBounds(169, 11, 255, 23); contentPanel.add(lblNewLabel); JButton btnDownloadStarten = new JButton("Upload starten"); btnDownloadStarten.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { buttonUploadActionPerformed(arg0); } }); btnDownloadStarten.setBounds(10, 155, 141, 23); contentPanel.add(btnDownloadStarten); progressBar = new JProgressBar(0,100); progressBar.setStringPainted(true); progressBar.setBounds(10, 45, 577, 30); contentPanel.add(progressBar); JLabel label = new JLabel("Downloadgeschwindigkeit:"); label.setBounds(10, 89, 141, 14); contentPanel.add(label); JLabel label_1 = new JLabel("Fertig:"); label_1.setBounds(10, 114, 46, 14); contentPanel.add(label_1); labelfertig = new JLabel(""); labelfertig.setBounds(66, 114, 108, 14); contentPanel.add(labelfertig); UpSpeed = new JLabel("0"); UpSpeed.setBounds(169, 89, 95, 14); contentPanel.add(UpSpeed); JLabel label_4 = new JLabel("von:"); label_4.setBounds(179, 114, 46, 14); contentPanel.add(label_4); labelfilesize = new JLabel(""); labelfilesize.setBounds(235, 114, 108, 14); contentPanel.add(labelfilesize); JLabel label_6 = new JLabel("Verbleibend:"); label_6.setBounds(353, 114, 71, 14); contentPanel.add(label_6); JLabel label_7 = new JLabel("Gesch\u00E4tzte Verbleibende Zeit:"); label_7.setBounds(274, 89, 150, 14); contentPanel.add(label_7); labelZeit = new JLabel(""); labelZeit.setBounds(425, 89, 117, 14); contentPanel.add(labelZeit); labelverbleibend = new JLabel(""); labelverbleibend.setBounds(434, 114, 108, 14); contentPanel.add(labelverbleibend); labeluser = new JLabel(""); labeluser.setBounds(196, 159, 117, 14); contentPanel.add(labeluser); labelpass = new JLabel(""); labelpass.setBounds(337, 155, 134, 14); contentPanel.add(labelpass); { JPanel buttonPane = new JPanel(); buttonPane.setBackground(UIManager.getColor("Button.background")); buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT)); getContentPane().add(buttonPane, BorderLayout.SOUTH); { JButton okButton = new JButton("OK"); okButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { dispose(); } }); okButton.setActionCommand("OK"); buttonPane.add(okButton); getRootPane().setDefaultButton(okButton); } { JButton cancelButton = new JButton("Zur\u00FCck"); cancelButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dispose(); if(taskrun==true) { task.cancel(true); } } }); cancelButton.setActionCommand("Cancel"); buttonPane.add(cancelButton); } } setVisible(true); } private void buttonUploadActionPerformed(ActionEvent event) { // File (or directory) with old name // File file = new File(lblNewLabel.getText()); // File (or directory) with new name //System.out.println(file.getAbsolutePath().substring(0,file.getAbsolutePath().lastIndexOf("\\"))+"\\"+vm.vl.getLaborname()+".vmdk"); //File file2 = new File(file.getAbsoluteFile()+"\\"+vm.vl.getLaborname()+".vmdk"); // Rename file (or directory) //boolean success = file.renameTo(file2); //if (!success) { // File was not successfully renamed //System.out.println("Not OK"); //} //else //{ //System.out.println("OK"); //} progressBar.setValue(0); RmiClientMethods rmi=new RmiClientMethods(); ServerInterface sint=rmi.getInterface(); try { user=sint.getFtpUser(); } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("username: "+user.getUsername()); labeluser.setText(user.getUsername()); labelpass.setText(user.getPass()); task=new UploadTask(host,port,user.getUsername(),user.getPass(),uploadPath, uploadFile); task.addPropertyChangeListener(this); task.execute(); taskrun=true; //createXML(); //TransferToSatellit(); } public void propertyChange(PropertyChangeEvent arg0) { if ("progress" == arg0.getPropertyName()) { int progress = (Integer) arg0.getNewValue(); progressBar.setValue(progress); } if("speed"==arg0.getPropertyName()){ speed=(double)arg0.getNewValue(); //if(speed<=1){ UpSpeed.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(); labelfertig.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(); labelfilesize.setText((filesize/1024/1024)+" MB"); } } }