Subversion Repositories eFlore/Archives.cel-v2

Rev

Rev 36 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
12 aperonnet 1
package org.tela_botanica.client.modeles;
2
 
36 aperonnet 3
import org.tela_botanica.client.image.ImageModele;
18 aperonnet 4
 
48 aperonnet 5
import com.google.gwt.user.client.Timer;
18 aperonnet 6
import com.gwtext.client.core.UrlParam;
7
import com.gwtext.client.widgets.Panel;
12 aperonnet 8
import com.gwtext.client.widgets.Window;
18 aperonnet 9
import com.gwtext.client.widgets.event.WindowListenerAdapter;
12 aperonnet 10
import com.gwtextux.client.widgets.upload.UploadDialog;
18 aperonnet 11
import com.gwtextux.client.widgets.upload.UploadDialogListenerAdapter;
12 aperonnet 12
 
13
 
14
/**
15
 * DAO un peu particulier car il crée une fenetre d'upload différente
16
 * suivant que le plugin Java est détecté ou non
17
 *
18
 *
19
 */
20
public class ImageUploaderAsynchroneDAO {
21
 
36 aperonnet 22
	/**
23
	 * Modele associé au DAO
24
	 */
25
	private static ImageModele iModele ;
12 aperonnet 26
 
48 aperonnet 27
	public ImageUploaderAsynchroneDAO(ImageModele im)
28
	{
29
		iModele = im ;
30
	}
31
 
36 aperonnet 32
	/**
33
	 * Setteur pour le modele
34
	 * @param im le modèle à associer au DAO
35
	 */
36
	public void setIModele(ImageModele im)
18 aperonnet 37
	{
36 aperonnet 38
		iModele = im ;
18 aperonnet 39
	}
40
 
36 aperonnet 41
	/**
42
	 * Crée un panel d'upload simple aux fonctions réduites mais utilisant uniquement javascript
43
	 * (pour les utilisateurs qui n'ont pas java)
44
	 */
12 aperonnet 45
	private static void appelerUploadSimple()
46
	{
47
 
48
		 UploadDialog up = new UploadDialog("Upload simple de fichiers") ;
49
		 up.setUrl("jrest/InventoryImage");
36 aperonnet 50
		 UrlParam id = new UrlParam("identifiant",iModele.getIdentifiant()) ;
18 aperonnet 51
		 UrlParam[] params = {id} ;
52
		 up.setBaseParams(params);
48 aperonnet 53
		 up.setModal(true) ;
18 aperonnet 54
 
55
		 up.addListener(new UploadDialogListenerAdapter() {
48 aperonnet 56
 
18 aperonnet 57
			public void onClose(Panel panel) {
58
 
36 aperonnet 59
				iModele.requeteTerminee() ;
18 aperonnet 60
			}
61
		 });
62
 
12 aperonnet 63
		 up.show();
48 aperonnet 64
 
12 aperonnet 65
	}
66
 
36 aperonnet 67
	/**
68
	 * Crée une fenêtre contenant une applet java pour uploader plusieurs fichiers à la fois avec quelques
69
	 * fonctions avancées (nécessite le plugin java pour le navigateur)
70
	 */
12 aperonnet 71
	private static void appelerUploadMultiple()
72
	{
48 aperonnet 73
 
12 aperonnet 74
		final Window nPan = new Window("Upload multiple");
31 aperonnet 75
		nPan.setWidth(640) ;
12 aperonnet 76
 
48 aperonnet 77
		final String warning = "<p class=\"warning_upload\"> A la fin de l'envoi, veuillez fermer la fenêtre pour accéder aux images. </p>" ;
78
 
31 aperonnet 79
		final String applet = "<applet code=\"wjhk.jupload2.JUploadApplet\" archive=\"wjhk.jupload.jar\" alt=\"\" mayscript=\"\" height=\"350\" width=\"625\">";
12 aperonnet 80
		final String paramPostTarget = "<param name=\"postURL\" value=\"jrest/InventoryImage/\">";
81
		final String paramUploadPolicy = "<param name=\"uploadPolicy\" value=\"PictureUploadPolicy\">";
82
		final String paramMaxChunkSize = "<param name=\"maxChunkSize\" value=\"0\">";
83
		final String paramMaxFileSize = "<param name=\"maxFileSize\" value=\"10000000\">";
84
		final String paramTransmitMetaData = "<param name=\"pictureTransmitMetadata\" value=\"true\">";
85
		final String paramFilesPerRequest = "<param name=\"nbFilesPerRequest\" value=\"1\">";
86
		final String paramAllowedExtensions = "<param name=\"allowedFileExtensions\" value=\"jpg/jpeg/\">";
87
		final String paramUploadSuccess = "<param name=\"stringUploadSuccess\" value=\"OK\">" ;
88
		final String paramShowLogWindow = "<param name=\"showLogWindow\" value=\"false\">";
18 aperonnet 89
		final String paramFormdata = "<param name=\"formData\" value=\"postid\">" ;
12 aperonnet 90
		final String finApplet = "</applet>";
91
 
92
		final String appelApplet = applet
93
				+ paramPostTarget
94
				+ paramUploadPolicy
95
				+ paramMaxChunkSize
96
				+ paramMaxFileSize
97
				+ paramTransmitMetaData
98
				+ paramFilesPerRequest
99
				+ paramAllowedExtensions
100
				+ paramUploadSuccess
101
				+ paramShowLogWindow
18 aperonnet 102
				+paramFormdata
12 aperonnet 103
				+ finApplet;
18 aperonnet 104
 
105
		final String htmlForm =
106
			"<form method=\"post\" name=\"postid\">"
36 aperonnet 107
			+"<input type=\"hidden\" name=\"identifiant\" value=\""+iModele.getIdentifiant()+"\">"
18 aperonnet 108
			+"</form>" ;
12 aperonnet 109
 
48 aperonnet 110
		nPan.setHtml(warning+appelApplet+htmlForm);
18 aperonnet 111
 
48 aperonnet 112
		nPan.setModal(true) ;
113
 
18 aperonnet 114
		nPan.addListener(new WindowListenerAdapter() {
115
 
116
 
48 aperonnet 117
 
18 aperonnet 118
			public void onClose(Panel panel) {
119
 
36 aperonnet 120
				iModele.requeteTerminee() ;
18 aperonnet 121
 
122
			}
123
 
124
 
125
		});
126
 
12 aperonnet 127
		nPan.show();
128
	}
129
 
36 aperonnet 130
	/**
131
	 * Fonction javascript native qui détecte la présence du plugin java pour le navigateur
132
	 * et appelle la méthode d'upload adaptée (appelerUploadSimple ou appelerUploadMultiple)
133
	 */
12 aperonnet 134
	public static native void choisirMethodeUpload() /*-{
135
 
136
	  	var agt=navigator.userAgent.toLowerCase();
137
		var ie  = (agt.indexOf("msie") != -1);
138
		var ns  = (navigator.appName.indexOf("Netscape") != -1);
139
		var win = ((agt.indexOf("win")!=-1) || (agt.indexOf("32bit")!=-1));
140
		var mac = (agt.indexOf("mac")!=-1);
141
 
142
		function detectIE(ClassID,name) { result = false; document.write('<SCRIPT LANGUAGE=VBScript>\n on error resume next \n result = IsObject(CreateObject("' + ClassID + '"))</SCRIPT>\n'); if (result) return name+','; else return ''; }
143
		function detectNS(ClassID,name) { n = ""; if (nse.indexOf(ClassID) != -1) if (navigator.mimeTypes[ClassID].enabledPlugin != null) n = name+","; return n; }
144
 
145
		if (ie && win) {	pluginlist = detectIE("Adobe.SVGCtl","SVG Viewer") + detectIE("SWCtl.SWCtl.1","Shockwave Director") + detectIE("ShockwaveFlash.ShockwaveFlash.1","Shockwave Flash") + detectIE("rmocx.RealPlayer G2 Control.1","RealPlayer") + detectIE("QuickTimeCheckObject.QuickTimeCheck.1","QuickTime") + detectIE("MediaPlayer.MediaPlayer.1","Windows Media Player") + detectIE("PDF.PdfCtrl.5","Acrobat Reader"); }
146
		if (ns || !win) {
147
				nse = ""; for (var i=0;i<navigator.mimeTypes.length;i++) nse += navigator.mimeTypes[i].type.toLowerCase();
148
				pluginlist = detectNS("image/svg-xml","SVG Viewer") + detectNS("application/x-director","Shockwave Director") + detectNS("application/x-shockwave-flash","Shockwave Flash") + detectNS("audio/x-pn-realaudio-plugin","RealPlayer") + detectNS("video/quicktime","QuickTime") + detectNS("application/x-mplayer2","Windows Media Player") + detectNS("application/pdf","Acrobat Reader");
149
		}
150
 
151
		pluginlist += navigator.javaEnabled() ? "Java," : "";
152
		if (pluginlist.length > 0) pluginlist = pluginlist.substring(0,pluginlist.length-1);
153
 
154
	  if(pluginlist.indexOf("Java")!=-1)
155
	  {
156
	  	@org.tela_botanica.client.modeles.ImageUploaderAsynchroneDAO::appelerUploadMultiple()() ;
157
	  }
158
	  else
159
	  {
160
	  	@org.tela_botanica.client.modeles.ImageUploaderAsynchroneDAO::appelerUploadSimple()() ;
161
	  }
162
 
163
	}-*/;
164
 
165
}