Subversion Repositories eFlore/Applications.cel

Rev

Rev 2 | Rev 140 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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