import java.applet.Applet;
import java.awt.CardLayout;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetAdapter;
import java.awt.dnd.DropTargetDropEvent;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import javax.swing.ImageIcon;
import javax.swing.JApplet;
import javax.swing.JOptionPane;
import javax.swing.JProgressBar;
import java.awt.*;
import javax.swing.*;
public class DFApplet extends Applet {
private String SID="10101";
private String TID="10101";
private String receiveURL;
private String orderno;
private Image img;
private InputStream serverInput;
private static DFApplet appletreference;
private JProgressBar Progress;
private String showurl="";
public void init() {
System.out.println("loading...\ninitializing...");
appletreference = this;
//Parameter aus der Webseite auslesen
SID = getParameter("SID");
TID = getParameter("TID");
showurl = getParameter("startup");
receiveURL = getParameter("receiveURL");
orderno = getParameter("OID");
System.out.println("Show picture at startup: "+showurl);
//Bild anzeigen, falls der User bereits vor Längerem mal eins raufgeschickt hat:
if(showurl != ""){ showPic(); showurl = ""; }
new DropTarget(this, new DropTargetAdapter() {
public void drop(DropTargetDropEvent e) {
try {
Transferable t = e.getTransferable();
DataFlavor d = e.getCurrentDataFlavors()[0];
e.acceptDrop(e.getDropAction());
List a = (List) t.getTransferData(d);
for (int i = 0; i < a.size(); i++) {
File transferfile = (File) a.get(i); //DIE DATEI!!
//VORSCHAU UND ABFRAGE:
Image preview = getImage(transferfile.toURL());
preview = preview.getScaledInstance(getWidth(), getHeight(), preview.SCALE_SMOOTH);
setImage(preview);
preview.flush();
int selection = JOptionPane.showConfirmDialog ( null,
"Möchten Sie dieses Bild hochladen?", // Fragetext
"Bestätigen Sie...", // Titel
JOptionPane.YES_NO_OPTION
);
if(selection == JOptionPane.YES_OPTION){
processFile(transferfile);
} else {
if(showurl != ""){ //URL da zum Anzeigen?
removeAll(); //Sonst alles wieder löschen.
showPic(); //Alte Vorschau wieder rein.
} else { //Wenn nicht...
}
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
System.out.println("Init. Vers. 1.3 - WAYW_");
}
public void processFile(final File f){
Progress = new JProgressBar(0, 100);
//setLayout( new GridLayout( 1, 1 ));
this.add(Progress);
this.validate();
new Thread(){
public void run(){
processFileImpl( f );
}
}.start();
}
public void processFileImpl(final File f) {
System.out.println("Datei erhalten!\nSende...\nTarget: "+receiveURL+"\nSID:"+SID);
try {
ClientHttpRequest transfer = new ClientHttpRequest(appletreference);
serverInput = transfer.post(
new URL("http://www.xxx.de/test/uptest.php"),
new Object[] {
"SID", SID,
"data", f});
} catch (MalformedURLException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
System.out.println("Sendevorgang abgeschlossen.");
String statusmessage = "INITIALISATION ERROR! - FATAL ERROR: Bitte kontaktieren Sie umgehend den Support (info@xxx.de), falls dieses Problem weiterhin besteht!";
String serverresponse = null;
try {
serverresponse = readout(serverInput);
} catch (IOException ex) {
ex.printStackTrace();
}
showurl = serverresponse;
if( "" == serverresponse){ statusmessage = "Es ist ein kritischer Verbindungsfehler aufgetreten. Wenn dieses Problem trotz mehrmaligem Versuchens weiterhin besteht, wenden Sie sich umgehend an den Support (info@xxx.de)."; showurl = "http://www.xxx.de/Pictures/attention.gif";
} else if(serverresponse.equals("101")){ statusmessage = "Zugriff für Upload verweigert!"; showurl = "http://www.xxx.de/Pictures/attention.gif";
} else if(serverresponse.equals("201")){ statusmessage = "Server wird gerade gewartet. Bitte versuchen Sie es später noch einmal!"; showurl = "http://www.xxx.de/Pictures/attention.gif";
} else if(serverresponse.equals("202")){ statusmessage = "Der Upload-Service ist gerade aus technischen Gründen nicht erreichbar. Versuchen Sie es später bitte erneut!"; showurl = "http://www.xxx.de/Pictures/attention.gif";
} else if(serverresponse.indexOf("300") != -1){ statusmessage = "OK";
} else if(serverresponse.equals("301")){ statusmessage = "Transferfehler! Ihre Datei " + f.getName() + " ist zu groß! Bitte komprimieren Sie diese und versuchen Sie es erneut!"; showurl = "http://www.xxx.de/Pictures/attention.gif";
} else if(serverresponse.equals("302")){ statusmessage = "Transferfehler! Ihre Datei " + f.getName() + " konnte nicht hochgeladen werden. Es scheint ein interner Fehler im Server aufgetreten zu sein oder ein Verbindungsfehler ihrerseits besteht. Überprüfen Sie die Verbindung zum Internet und versuchen Sie es erneut. Falls dieses Problem persitiert, bitte umgehend an den Support (info@xxx.de) wenden!";
showurl = "http://www.xxx.de/Pictures/attention.gif";
}
System.out.println("\nServer antwortet mit: " + serverresponse+"\n\n URL: "+showurl);
showPic();
}
public void showPic(){ //Zeigt ein Bild an, was showurl als URL enthält.
try {
MediaTracker mt = new MediaTracker(this);
Image pic = getImage(new URL(showurl));
pic = pic.getScaledInstance(getWidth(), getHeight(), pic.SCALE_SMOOTH);
mt.addImage(pic, 9);
try {
mt.waitForAll();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
setImage(pic);
mt.removeImage(pic);
pic.flush();
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
/** Mit Aufruf dieser Methode kann dem Applet zur Laufzeit von außen ein
* anderes Bild zur Anzeige übergeben werden.
*/
public void setImage(Image img) {
removeAll();
this.img = img;
repaint();
}
public void paint(Graphics g) {
if(img != null) {
g.drawImage(img, 0, 0, this);
}
}
public String readout(InputStream is) throws IOException {
StringBuffer sb = new StringBuffer();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = br.readLine()) != null)
sb.append(line);
return sb.toString();
}
public void setProgressStatus(int percentage){
Progress.setValue(percentage);
// System.out.println("Percentage: "+percentage+"\n");
if(percentage == 100){ this.remove(Progress); }
repaint();
}
}