Subversion Repositories eFlore/Archives.cel-v2

Rev

Rev 36 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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