Hello,
I have some serious rendering issues with opera. I have a gwt uploader palced in a smartgwt layout + window. The uploader appears, but when move over the uploader with the mouse, the uploader disappears and is not visible anymore. Any ideas? The GWT uploader is needed, because I need a upload finished event, which is not provided by smartGWT 3.1.
I have some serious rendering issues with opera. I have a gwt uploader palced in a smartgwt layout + window. The uploader appears, but when move over the uploader with the mouse, the uploader disappears and is not visible anymore. Any ideas? The GWT uploader is needed, because I need a upload finished event, which is not provided by smartGWT 3.1.
Code:
package com.uds.webadmin.client; import java.util.Date; import com.google.gwt.core.client.GWT; import com.google.gwt.http.client.Request; import com.google.gwt.http.client.RequestBuilder; import com.google.gwt.http.client.RequestCallback; import com.google.gwt.http.client.RequestException; import com.google.gwt.http.client.Response; import com.google.gwt.i18n.client.DateTimeFormat; import com.google.gwt.user.client.ui.FileUpload; import com.google.gwt.user.client.ui.FormPanel; import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteEvent; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.VerticalPanel; import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.Label; import com.smartgwt.client.widgets.Window; import com.smartgwt.client.widgets.form.DynamicForm; import com.smartgwt.client.widgets.layout.HLayout; import com.smartgwt.client.widgets.layout.VLayout; import com.smartgwt.client.widgets.toolbar.ToolStrip; import com.smartgwt.client.widgets.toolbar.ToolStripButton; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; public class GPopUpUpload { private FormPanel form; private VerticalPanel panelVertical; private FileUpload uploader; private GEditEmailForm emailForm; private DynamicForm editorForm; private Window window; private String fileName; private String allowedMimeTypes; private ToolStripButton buttonImport; private ToolStripButton buttonCancel; public GPopUpUpload( GEditEmailForm emailForm, String allowedMimeTypes ) { this.emailForm = emailForm; this.allowedMimeTypes = allowedMimeTypes; } // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ /** * Creates a pop up window */ // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public void initGUI() { window = new Window(); window.setSize( "520px", "200px" ); window.setTitle( "Import" ); window.setShowMaximizeButton( false ); window.setShowMinimizeButton( false ); window.setModalMaskOpacity( 80 ); window.setIsModal( true ); window.setShowModalMask( true ); window.centerInPage(); window.addItem( getEditForm() ); window.addItem( getToolBar() ); window.draw(); } // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ /** * Creates and returns the toolbar */ // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public ToolStrip getToolBar() { buttonImport = new ToolStripButton( "Importieren" ); buttonImport.setIcon( "icons/32x32/import.png" ); buttonImport.addClickHandler( new com.smartgwt.client.widgets.events.ClickHandler() { @Override public void onClick( com.smartgwt.client.widgets.events.ClickEvent event ) { uploadFile(); } } ); buttonCancel = new ToolStripButton( "Schließen" ); buttonCancel.setIcon( "icons/32x32/cancel.png" ); buttonCancel.addClickHandler( new com.smartgwt.client.widgets.events.ClickHandler() { @Override public void onClick( com.smartgwt.client.widgets.events.ClickEvent event ) { closeWindow(); } } ); ToolStrip toolBar = new ToolStrip(); toolBar.setWidth( "100%" ); toolBar.addFill(); toolBar.addMember( buttonCancel ); toolBar.addMember( buttonImport ); return toolBar; } // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ /** * Creates and returns an editor form */ // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ private VLayout getEditForm() { Label txtInstructions = new Label( "txtInstruction" ); txtInstructions.setContents( "<b>Bitte wählen Sie eine Datei aus(" + allowedMimeTypes + "):</b>" ); txtInstructions.setHeight( 30 ); txtInstructions.setWidth( "100%" ); VLayout layout = new VLayout( 10 ); layout.setMargin( 25 ); layout.setHeight( "100%" ); layout.setWidth( "100%" ); layout.setMembers( txtInstructions, getUploadForm() ); return layout; } // End of method // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ /** * Creates and returns an upload panel */ // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ private HLayout getUploadForm() { // Create a FormPanel and point it at a service. form = new FormPanel(); form.setAction( "/myFormHandler" ); // Because we're going to add a FileUpload widget, we'll need to set the // form to use the POST method, and multipart MIME encoding. form.setEncoding( FormPanel.ENCODING_MULTIPART ); form.setMethod( FormPanel.METHOD_POST ); form.setWidth( "100%" ); // Create a panel to hold all of the form widgets. panelVertical = new VerticalPanel(); form.setWidget( panelVertical ); // Create a FileUpload widget. uploader = new FileUpload(); uploader.setWidth( "100%" ); // determines uploader width... make Firefox 1.5.0.7 or higher happy // com.google.gwt.user.client.Element ee = uploader.getElement(); // com.google.gwt.user.client.DOM.setAttribute( ee, "size", "50" ); uploader.setName( "Uploader" ); panelVertical.add( uploader ); panelVertical.setSpacing( 12 ); form.addSubmitCompleteHandler( new FormPanel.SubmitCompleteHandler() { public void onSubmitComplete( SubmitCompleteEvent event ) { if ( emailForm != null ) { emailForm.setImportStatus( false ); emailForm.importFileName = fileName; emailForm.txtImport_file.setValue( fileName ); closeWindow(); emailForm.txtHeadline.selectValue(); validateImportFile( fileName ); } } } ); form.ensureDebugId( "getUploader" ); HLayout layout = new HLayout(); layout.addMember( form ); return layout; } private void uploadFile() { String fileType = getMimeType( uploader.getFilename() ); if ( uploader.getFilename().equals( "" ) == false ) { if ( allowedMimeTypes.contains( fileType ) ) { StringBuilder url = new StringBuilder(); url.append( "upload?file=" + getFileName() + "&path=temp" ); form.setAction( GWT.getHostPageBaseURL() + ( url.toString() ) ); form.submit(); closeWindow(); } else { SC.say( "Der Dateityp '" + fileType + "' ist nicht zulässig" ); } } else { SC.say( "Bitte wählen Sie eine Datei aus bevor Sie auf den Import Button klicken" ); } } // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ /** * Creates and returns a file name */ // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ private String getFileName() { Date date = new Date(); DateTimeFormat fmt = DateTimeFormat.getFormat( "yyyy_MM_dd_H_m_s_" ); String formatedDate = fmt.format( date ); fileName = formatedDate + GWebAdmin.loginName + getMimeType( uploader.getFilename() ); return fileName; } // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ /** * Returns the mimetype of a file */ // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ private String getMimeType( String filePath ) { int i = filePath.lastIndexOf( "." ); String fileType = null; if ( i > -1 && i < filePath.length() - 1 ) { fileType = filePath.substring( i ); } return fileType; } // Ende der Methode // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ /** * Sends the email, stores email + email assignments in database */ // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public void validateImportFile( String fileName ) { /* URL for calling the RestService */ String dataUrl = GWT.getHostPageBaseURL() + "rest/emails/validate/import/"; System.out.println( "DataUrl: " + dataUrl ); RequestBuilder builder = new RequestBuilder( RequestBuilder.PUT, dataUrl ); builder.setHeader( "content-type", "application/xml" ); try { builder.sendRequest( fileName, /* data String wich will be send via restful */ new RequestCallback() { @Override public void onResponseReceived( Request request, Response response ) { int statusCode = response.getStatusCode(); if ( statusCode == Response.SC_OK ) { // gets the email_id of the created dataset String result = response.getText(); System.out.println( "ResponseBody: " + result ); if ( result.equals( "" ) == false ) { SC.say( "Die folgenden E-Mail Adressen sind nicht korrekt. Bitte ändern oder löschen Sie diese umgehend in SOS!!!<br>" + result ); emailForm.buttonCancel.setDisabled( false ); emailForm.buttonImport.setDisabled( false ); } } else { SC.say( "Ein unerwarter Fehler ist aufgetreten: " + statusCode ); emailForm.buttonCancel.setDisabled( false ); emailForm.buttonImport.setDisabled( false ); } } @Override public void onError( Request request, Throwable exception ) { SC.say( String.valueOf( exception ) ); emailForm.buttonCancel.setDisabled( false ); emailForm.buttonImport.setDisabled( false ); } } ); } catch ( RequestException e ) { e.printStackTrace(); SC.say( String.valueOf( e ) ); emailForm.buttonCancel.setDisabled( false ); emailForm.buttonImport.setDisabled( false ); } } * Closes the opened window */ // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ private void closeWindow() { // window.destroy() affects javaScript errors in Chrome window.hide(); } // End of class }
Comment