summaryrefslogtreecommitdiffstats
path: root/Dozentenmodul/src/main/java/gui/image/FTPDownloader_GUI.java
diff options
context:
space:
mode:
Diffstat (limited to 'Dozentenmodul/src/main/java/gui/image/FTPDownloader_GUI.java')
-rw-r--r--Dozentenmodul/src/main/java/gui/image/FTPDownloader_GUI.java484
1 files changed, 484 insertions, 0 deletions
diff --git a/Dozentenmodul/src/main/java/gui/image/FTPDownloader_GUI.java b/Dozentenmodul/src/main/java/gui/image/FTPDownloader_GUI.java
new file mode 100644
index 00000000..d21da67e
--- /dev/null
+++ b/Dozentenmodul/src/main/java/gui/image/FTPDownloader_GUI.java
@@ -0,0 +1,484 @@
+package gui.image;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.FlowLayout;
+import java.awt.Font;
+import java.awt.SystemColor;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.File;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import javax.swing.JButton;
+import javax.swing.JFileChooser;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JProgressBar;
+import javax.swing.JSeparator;
+import javax.swing.JTextPane;
+import javax.swing.SwingConstants;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.border.EmptyBorder;
+
+import models.Image;
+import models.Links;
+import models.SessionData;
+
+import org.apache.thrift.TException;
+
+import server.Server.Client;
+import server.User;
+import thrift.ThriftConnection;
+import util.GuiOrganizer;
+import util.OpenLinks;
+import ftp.DownloadTask;
+import gui.intro.About_GUI;
+import gui.intro.MainMenue_GUI;
+
+@SuppressWarnings("serial")
+public class FTPDownloader_GUI extends JFrame implements PropertyChangeListener {
+
+ @SuppressWarnings("unused")
+ private JPanel contentPane;
+ private final JPanel contentPanel = new JPanel();
+ JLabel lblPath;
+ JLabel downspeed;
+ User user;
+ JProgressBar progressBar;
+ String host = SessionData.session.getServerAdress();
+ int port = 21;
+ String downloadFile = "";
+ static String arg = "";
+ DownloadTask task;
+ JLabel lblBytesread;
+ JLabel lblNewLabel_3;
+ JLabel labelVerbleibend;
+ long filesize;
+ double speed;
+ int progress = 0; // progress of download
+ long bytesread;
+ JLabel labelZeit;
+ boolean taskrun = false;
+ ThriftConnection con = new ThriftConnection();
+ Client client = models.Client.clientcon.getClient();
+ JButton btnZurck = new JButton("Zur\u00FCck");
+ JButton btnDownloadStarten = new JButton("Download starten");
+ JButton btnMainMenu = new JButton("Hauptmen\u00FC");
+
+
+ /**
+ * Create the frame.
+ */
+ public FTPDownloader_GUI() {
+ addWindowListener(new WindowAdapter() {
+ @Override
+ public void windowClosing(WindowEvent e) {
+ if (taskrun == true) {
+ try {
+ client.DeleteFtpUser(user.userName);
+ con.closeThriftConnection();
+ } catch (TException e1) {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ JOptionPane.showMessageDialog(null,
+ e1.getCause()+"\n"+e1.getMessage(),
+ "Debug-Message", JOptionPane.ERROR_MESSAGE);
+ }
+ task.cancel(true);
+ }
+ //dispose();
+ System.exit(0);
+ }//end window closing
+ });
+ 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* - Image herunterladen");
+
+ setBounds(0, 0, 603, 722);
+ GuiOrganizer.centerGUI(this);
+
+ 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();
+ // check if directory is selected
+ if (dir != null) {
+ // is selected
+ lblPath.setText(dir.getAbsolutePath());
+ } else {
+ // no directory selected
+ lblPath.setText("");
+ }// end if
+ }
+ });
+
+ btnSpeicherortAuswhlen.setBounds(102, 124, 173, 23);
+ btnSpeicherortAuswhlen.setVerticalAlignment(SwingConstants.TOP);
+ contentPanel.add(btnSpeicherortAuswhlen);
+ }
+
+ lblPath = new JLabel("");
+ lblPath.addPropertyChangeListener(new PropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent arg0) {
+ if (lblPath.getText().isEmpty()) {
+ // wenn leer, dann upload button nicht freigeben
+ btnDownloadStarten.setEnabled(false);
+ btnDownloadStarten.setText("Bitte warten");
+ } else {
+ // wenn leer, dann upload button nicht freigeben
+ btnDownloadStarten.setEnabled(true);
+ btnDownloadStarten.setText("Download starten");
+ }
+ }
+ });
+ lblPath.setBounds(102, 158, 485, 23);
+ contentPanel.add(lblPath);
+
+ btnDownloadStarten.setEnabled(false);
+ btnDownloadStarten.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent arg0) {
+ buttonDownloadActionPerformed(arg0);
+ }
+ });
+
+ btnDownloadStarten.setBounds(102, 200, 173, 23);
+ contentPanel.add(btnDownloadStarten);
+
+ progressBar = new JProgressBar(0, 100);
+ progressBar.setStringPainted(true);
+
+ progressBar.setBounds(102, 234, 485, 30);
+ contentPanel.add(progressBar);
+
+ JLabel lblDownloadgeschwindigkeit = new JLabel(
+ "Downloadgeschwindigkeit:");
+ lblDownloadgeschwindigkeit.setBounds(102, 275, 141, 14);
+ contentPanel.add(lblDownloadgeschwindigkeit);
+
+ downspeed = new JLabel("0");
+ downspeed.setBounds(374, 275, 117, 14);
+ contentPanel.add(downspeed);
+
+ JLabel lblFertig = new JLabel("Fertig:");
+ lblFertig.setBounds(102, 325, 46, 14);
+ contentPanel.add(lblFertig);
+
+ lblBytesread = new JLabel("0");
+ lblBytesread.setBounds(183, 325, 108, 14);
+ contentPanel.add(lblBytesread);
+
+ JLabel lblVon = new JLabel("von:");
+ lblVon.setBounds(318, 325, 46, 14);
+ contentPanel.add(lblVon);
+
+ lblNewLabel_3 = new JLabel("0");
+ lblNewLabel_3.setBounds(374, 325, 117, 14);
+ contentPanel.add(lblNewLabel_3);
+
+ JLabel lblMbVerbleibend = new JLabel("Verbleibend:");
+ lblMbVerbleibend.setBounds(102, 350, 71, 14);
+ contentPanel.add(lblMbVerbleibend);
+
+ labelVerbleibend = new JLabel("0");
+ labelVerbleibend.setBounds(183, 350, 108, 14);
+ contentPanel.add(labelVerbleibend);
+
+ JLabel lblGeschtzteVerbleibendeZeit = new JLabel(
+ "Gesch\u00E4tzte Verbleibende Zeit:");
+ lblGeschtzteVerbleibendeZeit.setBounds(102, 300, 150, 14);
+ contentPanel.add(lblGeschtzteVerbleibendeZeit);
+
+ labelZeit = new JLabel("0");
+ labelZeit.setBounds(374, 300, 117, 14);
+ contentPanel.add(labelZeit);
+
+ JPanel panel = new JPanel();
+ panel.setLayout(null);
+ panel.setBackground(SystemColor.menu);
+ panel.setBounds(10, 24, 577, 57);
+ contentPanel.add(panel);
+
+ JLabel lblImageDownloader = new JLabel("Image Downloader");
+ lblImageDownloader.setFont(new Font("Tahoma", Font.BOLD, 18));
+ lblImageDownloader.setBounds(10, 11, 509, 22);
+ panel.add(lblImageDownloader);
+
+ JTextPane txtpnWhlenSieEinen = new JTextPane();
+ txtpnWhlenSieEinen.setText("W\u00E4hlen Sie einen Ort aus, um das von Ihnen gw\u00E4hlte Image erunter zu laden.");
+ txtpnWhlenSieEinen.setEditable(false);
+ txtpnWhlenSieEinen.setBackground(SystemColor.menu);
+ txtpnWhlenSieEinen.setBounds(10, 36, 509, 32);
+ panel.add(txtpnWhlenSieEinen);
+
+ JSeparator separator = new JSeparator();
+ separator.setBounds(0, 88, 597, 2);
+ contentPanel.add(separator);
+
+ JLabel label_1 = new JLabel("Hauptmen\u00FC");
+ label_1.setForeground(Color.BLUE);
+ label_1.setBounds(20, 92, 61, 20);
+ contentPanel.add(label_1);
+
+ JLabel label_2 = new JLabel(">");
+ label_2.setBounds(80, 95, 14, 14);
+ contentPanel.add(label_2);
+
+ JLabel label_3 = new JLabel("VL-Image");
+ label_3.setForeground(Color.BLUE);
+ label_3.setBounds(91, 92, 46, 20);
+ contentPanel.add(label_3);
+
+ JLabel label_4 = new JLabel(">");
+ label_4.setBounds(139, 95, 14, 14);
+ contentPanel.add(label_4);
+
+ JLabel label_5 = new JLabel("Neu/Bearbeiten");
+ label_5.setBounds(149, 95, 108, 14);
+ contentPanel.add(label_5);
+
+ JSeparator separator_1 = new JSeparator();
+ separator_1.setBounds(-10, 648, 597, 2);
+ contentPanel.add(separator_1);
+
+ JLabel lblSchritt = new JLabel("Schritt 1:");
+ lblSchritt.setBounds(24, 128, 57, 14);
+ contentPanel.add(lblSchritt);
+
+ JLabel lblSchritt_1 = new JLabel("Schritt 2:");
+ lblSchritt_1.setBounds(24, 204, 57, 14);
+ contentPanel.add(lblSchritt_1);
+
+ JLabel lblSchritt_3 = new JLabel("Schritt 3:");
+ lblSchritt_3.setBounds(20, 423, 57, 14);
+ contentPanel.add(lblSchritt_3);
+
+ JLabel lblKlickenSieAuf = new JLabel(
+ "Klicken Sie auf \"Fertigstellen\".");
+ lblKlickenSieAuf.setBounds(98, 423, 241, 14);
+ contentPanel.add(lblKlickenSieAuf);
+
+ JMenuBar menuBar = new JMenuBar();
+ menuBar.setBounds(0, 0, 597, 21);
+ contentPanel.add(menuBar);
+
+ JMenu menu = new JMenu("Hilfe");
+ menuBar.add(menu);
+
+ JMenuItem menuItem = new JMenuItem("FAQ");
+ menuItem.addMouseListener(new MouseAdapter() {
+ @Override
+ public void mousePressed(MouseEvent arg0) {
+
+ OpenLinks open = new OpenLinks();
+
+ URI windows;
+ try {
+ windows = new URI(Links.getFAQ());
+
+ open.openWebpage(windows);
+
+ } catch (URISyntaxException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ }
+ });
+
+ menu.add(menuItem);
+
+ JMenuItem menuItem_1 = new JMenuItem("OTRS");
+ menuItem_1.addMouseListener(new MouseAdapter() {
+ @Override
+ public void mousePressed(MouseEvent arg0) {
+
+ OpenLinks open = new OpenLinks();
+
+ URI windows;
+ try {
+ windows = new URI(Links.getOTRS());
+
+ open.openWebpage(windows);
+
+ } catch (URISyntaxException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ }
+ });
+
+ menu.add(menuItem_1);
+
+ JMenuItem mntmAbout = new JMenuItem("About");
+ mntmAbout.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ About_GUI ab = new About_GUI();
+ ab.setVisible(true);
+ }
+ });
+ menu.add(mntmAbout);
+ {
+ JPanel buttonPane = new JPanel();
+ buttonPane.setBackground(UIManager.getColor("Button.background"));
+ buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
+ getContentPane().add(buttonPane, BorderLayout.SOUTH);
+ {
+ btnZurck.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();
+ JOptionPane.showMessageDialog(null,
+ e1.getCause()+"\n"+e1.getMessage(),
+ "Debug-Message", JOptionPane.ERROR_MESSAGE);
+ }
+ }
+
+ SearchEditImage_GUI se = new SearchEditImage_GUI();
+ se.setVisible(true);
+ dispose();
+ }
+ });
+ btnZurck.setActionCommand("Cancel");
+ buttonPane.add(btnZurck);
+ }
+
+
+ btnMainMenu.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent arg0) {
+
+ MainMenue_GUI mm = new MainMenue_GUI();
+ mm.setVisible(true);
+ dispose();
+ }
+ });
+ btnMainMenu.setActionCommand("Cancel");
+ buttonPane.add(btnMainMenu);
+ }
+ setVisible(true);
+
+ }
+
+ private void buttonDownloadActionPerformed(ActionEvent event) {
+
+ progressBar.setValue(0);
+ btnDownloadStarten.setEnabled(false); // verhindert schnellen zweiten
+ // Klick
+ btnDownloadStarten.setText("Bitte warten");
+ try {
+ user = client.getFtpUser();
+
+ downloadFile = user.path+"/"+client.getPathOfImage(Image.image.getImageId(),
+ Image.image.getVersion());
+
+ } catch (TException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ JOptionPane.showMessageDialog(null,
+ e.getCause()+"\n"+e.getMessage(),
+ "Debug-Message", JOptionPane.ERROR_MESSAGE);
+ }
+
+ task = new DownloadTask(host, port, user.userName, user.password,
+ downloadFile, lblPath.getText(), this);
+ task.addPropertyChangeListener(this);
+ task.execute();
+ taskrun = true;
+
+ }
+
+ public void propertyChange(PropertyChangeEvent arg0) {
+
+ progress = 0;
+ if ("progress" == arg0.getPropertyName()) {
+ progress = (Integer) arg0.getNewValue();
+ progressBar.setValue(progress);
+
+ // Button zum Fertigstellen freischalten, wenn 100% erreicht sind
+ if (progress == 0 || progress == 100) {
+ // not uploading currently
+ btnZurck.setEnabled(true);
+ btnMainMenu.setEnabled(true);
+ } else {
+ // currently uploading, don't let user interact
+ btnZurck.setEnabled(false);
+ btnMainMenu.setEnabled(false);
+ }
+ }
+
+ 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");
+
+ }
+ if ("bytesread" == arg0.getPropertyName()) {
+ bytesread = (long) arg0.getNewValue();
+ lblBytesread.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");
+
+ }
+
+ }
+} \ No newline at end of file