Demo
JavaScript callbacks and interface usage
Code:
<p>
<applet id="jumpLoaderApplet" name="jumpLoaderApplet"
code="jmaster.jumploader.app.JumpLoaderApplet.class"
archive="jumploader_z.jar"
width="715"
height="450"
mayscript>
<param name="uc_uploadUrl" value="partitionedUploadHandler.php"/>
<param name="ac_fireAppletInitialized" value="true"/>
<param name="ac_fireUploaderFileAdded" value="true"/>
<param name="ac_fireUploaderFileRemoved" value="true"/>
<param name="ac_fireUploaderFileMoved" value="true"/>
<param name="ac_fireUploaderFileStatusChanged" value="true"/>
<param name="ac_fireUploaderFilesReset" value="true"/>
<param name="ac_fireUploaderStatusChanged" value="true"/>
<param name="ac_fireUploaderFilePartitionUploaded" value="true"/>
<param name="ac_fireUploaderSelectionChanged" value="true"/>
<param name="ac_fireUploadViewFileOpenDialogFilesSelected" value="true"/>
<param name="ac_fireMainViewMessageShown" value="true"/>
</applet>
</p>
<!-- callback methods -->
<script language="javascript">
/**
* applet initialized notification
*/
function appletInitialized( applet ) {
traceEvent( "appletInitialized, " + applet.getAppletInfo() );
}
/**
* files reset notification
*/
function uploaderFilesReset( uploader ) {
traceEvent( "uploaderFilesReset, fileCount=" + uploader.getFileCount() );
}
/**
* file added notification
*/
function uploaderFileAdded( uploader, file ) {
traceEvent( "uploaderFileAdded, index=" + file.getIndex() );
}
/**
* file removed notification
*/
function uploaderFileRemoved( uploader, file ) {
traceEvent( "uploaderFileRemoved, path=" + file.getPath() );
}
/**
* file moved notification
*/
function uploaderFileMoved( uploader, file, oldIndex ) {
traceEvent( "uploaderFileMoved, path=" + file.getPath() + ", oldIndex=" + oldIndex );
}
/**
* file status changed notification
*/
function uploaderFileStatusChanged( uploader, file ) {
traceEvent( "uploaderFileStatusChanged, index=" + file.getIndex() + ", status=" + file.getStatus() + ", content=" + file.getResponseContent() );
}
/**
* file partition uploaded notification
*/
function uploaderFilePartitionUploaded( uploader, file ) {
traceEvent( "uploaderFilePartitionUploaded, index=" + file.getIndex() + ", partition=" + file.getUploadedPartitionCount() + ", response=" + file.getResponseContent() );
}
/**
* uploader status changed notification
*/
function uploaderStatusChanged( uploader ) {
traceEvent( "uploaderStatusChanged, status=" + uploader.getStatus() );
}
/**
* uploader selection changed notification
*/
function uploaderSelectionChanged( uploader ) {
traceEvent( "uploaderSelectionChanged" );
}
/**
* upload view open dialog files selected notification
*/
function uploadViewOpenDialogFilesSelected(uploadView, paths ) {
traceEvent( "uploadViewOpenDialogFilesSelected, paths=" + paths.length );
for(i = 0; i < paths.length; i++) {
traceEvent("" + i + ". " + paths[i]);
}
}
/**
* main view message shown notification
*/
function mainViewMessageShown(mainView, severity, message) {
traceEvent( "mainViewMessageShown, severity=" + severity + ", message=" + message );
}
</script>
<!-- debug auxiliary methods -->
<script language="javascript">
/**
* trace event to events textarea
*/
function traceEvent( message ) {
document.debugForm.txtEvents.value += message + "\r\n";
}
/**
* dump status of uploader into html
*/
function dumpUploaderStatus() {
var uploader = document.jumpLoaderApplet.getUploader();
//
// dump uploader
var uploaderDump = "<strong>Uploader</strong><br>" +
"Status: " + uploader.getStatus() + "<br>" +
"Files total: " + uploader.getFileCount() + "<br>" +
"Ready files: " + uploader.getFileCountByStatus( 0 ) + "<br>" +
"Uploading files: " + uploader.getFileCountByStatus( 1 ) + "<br>" +
"Finished files: " + uploader.getFileCountByStatus( 2 ) + "<br>" +
"Failed files: " + uploader.getFileCountByStatus( 3 ) + "<br>" +
"Total files length: " + uploader.getFilesLength() + " bytes<br>" +
"";
//
// dump files
var filesDump = "<strong>Files</strong><br>";
for( i = 0; i < uploader.getFileCount(); i++ ) {
var file = uploader.getFile( i );
filesDump += "" + ( i + 1 ) + ". path=" + file.getPath +
", length=" + file.getLength() +
", status=" + file.getStatus() +
"<br>";
}
//
// set text
document.getElementById( "uploaderStatus" ).innerHTML = uploaderDump + "<br>" + filesDump;
}
</script>
<form name="debugForm">
<p>Events:<br>
<textarea name="txtEvents" style="width:100%; font:10px monospace" rows="10" wrap="off" id="txtEvents"></textarea>
</p>
<p><input type="button" value="Dump uploader status" onClick="dumpUploaderStatus()">
<input type="button" value="About..." onClick="alert( document.jumpLoaderApplet.getAppletInfo() )">
<p id="uploaderStatus"></p>
</p>
</form>