diff --git a/AppKit/CPFlashView.j b/AppKit/CPFlashView.j index 841b5fc8c..c9505b8e9 100644 --- a/AppKit/CPFlashView.j +++ b/AppKit/CPFlashView.j @@ -38,7 +38,6 @@ var IEFlashCLSID = "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"; #if PLATFORM(DOM) DOMElement _DOMParamElement; DOMElement _DOMObjectElement; - DOMElement _DOMInnerObjectElement; #endif } @@ -52,22 +51,16 @@ var IEFlashCLSID = "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"; if (!CPBrowserIsEngine(CPInternetExplorerBrowserEngine)) { _DOMObjectElement = document.createElement(@"object"); + _DOMObjectElement.id = [self elementID]; _DOMObjectElement.width = @"100%"; _DOMObjectElement.height = @"100%"; _DOMObjectElement.style.top = @"0px"; _DOMObjectElement.style.left = @"0px"; _DOMObjectElement.type = @"application/x-shockwave-flash"; - _DOMObjectElement.setAttribute(@"classid", IEFlashCLSID); - _DOMParamElement = document.createElement(@"param"); _DOMParamElement.name = @"movie"; - _DOMInnerObjectElement = document.createElement(@"object"); - _DOMInnerObjectElement.width = @"100%"; - _DOMInnerObjectElement.height = @"100%"; - _DOMObjectElement.appendChild(_DOMParamElement); - _DOMObjectElement.appendChild(_DOMInnerObjectElement); _DOMElement.appendChild(_DOMObjectElement); } @@ -89,7 +82,7 @@ var IEFlashCLSID = "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"; if (!CPBrowserIsEngine(CPInternetExplorerBrowserEngine)) { _DOMParamElement.value = [aFlashMovie filename]; - _DOMInnerObjectElement.data = [aFlashMovie filename]; + _DOMObjectElement.data = [aFlashMovie filename]; } else [self _rebuildIEObjects]; @@ -107,7 +100,10 @@ var IEFlashCLSID = "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"; enumerator = [aDictionary keyEnumerator], key; - while ((key = [enumerator nextObject]) !== nil) + if (key = [enumerator nextObject]) + varString = [varString stringByAppendingFormat:@"%@=%@", key, [aDictionary objectForKey:key]]; + + while (key = [enumerator nextObject]) varString = [varString stringByAppendingFormat:@"&%@=%@", key, [aDictionary objectForKey:key]]; if (!_params) @@ -184,10 +180,20 @@ var IEFlashCLSID = "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"; _DOMObjectElement = document.createElement(@"object"); _DOMElement.appendChild(_DOMObjectElement); - _DOMObjectElement.outerHTML = [CPString stringWithFormat:@"%@", IEFlashCLSID, CGRectGetWidth([self bounds]), CGRectGetHeight([self bounds]), paramString]; + _DOMObjectElement.outerHTML = [CPString stringWithFormat:@"%@", [self elementID], IEFlashCLSID, CGRectGetWidth([self bounds]), CGRectGetHeight([self bounds]), paramString]; } #endif +- (CPString)elementID +{ + return @"CPFV_" + [self UID]; +} + +- (void)mouseMoved:(id)sommit +{ + [[[self window] platformWindow] _propagateCurrentDOMEvent:YES]; +} + - (void)mouseDragged:(CPEvent)anEvent { [[[self window] platformWindow] _propagateCurrentDOMEvent:YES]; diff --git a/Tests/Manual/CPFlashviewTest/AppController.j b/Tests/Manual/CPFlashviewTest/AppController.j new file mode 100644 index 000000000..28000bc5d --- /dev/null +++ b/Tests/Manual/CPFlashviewTest/AppController.j @@ -0,0 +1,42 @@ +/* + * AppController.j + * CPFlashviewTest + * + * Created by Blair Duncan on April 23, 2012. + * Copyright 2012, SGL Studio, BBDO Toronto All rights reserved. + */ + +@import + + +@implementation AppController : CPObject +{ +} + +- (void)applicationDidFinishLaunching:(CPNotification)aNotification +{ + var theWindow = [[CPWindow alloc] initWithContentRect:CGRectMakeZero() styleMask:CPBorderlessBridgeWindowMask], + contentView = [theWindow contentView], + flashView; + + flashView = [[CPFlashView alloc] initWithFrame:CGRectMake(0,0,320,240)], + [flashView setFlashMovie:[CPFlashMovie flashMovieWithFile:@"http://flashjournalism.com/examples/airplane.swf"]]; + + // note: + // if both flashParams and flashVars are used flashParams must be setup first + + var flashParameters = [CPDictionary dictionary]; + [flashVars setObject:@"SampleParam" forKey:"SampleParamKey"]; + [flashView setParameters:flashParameters]; + + var flashVars = [CPDictionary dictionary]; + [flashVars setObject:@"SampleVar" forKey:"SampleVarKey"]; + [flashView setFlashVars:flashVars]; + + + [flashView setCenter:[contentView center]]; + [contentView addSubview:flashView]; + [theWindow orderFront:self]; +} + +@end diff --git a/Tests/Manual/CPFlashviewTest/Info.plist b/Tests/Manual/CPFlashviewTest/Info.plist new file mode 100644 index 000000000..8dbe56ff0 --- /dev/null +++ b/Tests/Manual/CPFlashviewTest/Info.plist @@ -0,0 +1,12 @@ + + + + + CPApplicationDelegateClass + AppController + CPBundleName + CPFlashviewTest + CPPrincipalClass + CPApplication + + diff --git a/Tests/Manual/CPFlashviewTest/Jakefile b/Tests/Manual/CPFlashviewTest/Jakefile new file mode 100644 index 000000000..540a707ab --- /dev/null +++ b/Tests/Manual/CPFlashviewTest/Jakefile @@ -0,0 +1,93 @@ +/* + * Jakefile + * CPFlashviewTest + * + * Created by Blair Duncan on April 23, 2012. + * Copyright 2012, SGL Studio, BBDO Toronto All rights reserved. + */ + +var ENV = require("system").env, + FILE = require("file"), + JAKE = require("jake"), + task = JAKE.task, + FileList = JAKE.FileList, + app = require("cappuccino/jake").app, + configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", + OS = require("os"); + +app ("CPFlashviewTest", function(task) +{ + task.setBuildIntermediatesPath(FILE.join("Build", "CPFlashviewTest.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("CPFlashviewTest"); + task.setIdentifier("com.yourcompany.CPFlashviewTest"); + task.setVersion("1.0"); + task.setAuthor("SGL Studio, BBDO Toronto"); + task.setEmail("Blair.Duncan@BBDO.com"); + task.setSummary("CPFlashviewTest"); + task.setSources((new FileList("**/*.j")).exclude(FILE.join("Build", "**"))); + task.setResources(new FileList("Resources/**")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g"); + else + task.setCompilerFlags("-O"); +}); + +task ("default", ["CPFlashviewTest"], function() +{ + printResults(configuration); +}); + +task ("build", ["default"]); + +task ("debug", function() +{ + ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", "CPFlashviewTest", "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", "CPFlashviewTest", "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", "CPFlashviewTest")); + OS.system(["press", "-f", FILE.join("Build", "Release", "CPFlashviewTest"), FILE.join("Build", "Deployment", "CPFlashviewTest")]); + printResults("Deployment") +}); + +task ("desktop", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Desktop", "CPFlashviewTest")); + require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "CPFlashviewTest"), FILE.join("Build", "Desktop", "CPFlashviewTest", "CPFlashviewTest.app")); + printResults("Desktop") +}); + +task ("run-desktop", ["desktop"], function() +{ + OS.system([FILE.join("Build", "Desktop", "CPFlashviewTest", "CPFlashviewTest.app", "Contents", "MacOS", "NativeHost"), "-i"]); +}); + +function printResults(configuration) +{ + print("----------------------------"); + print(configuration+" app built at path: "+FILE.join("Build", configuration, "CPFlashviewTest")); + print("----------------------------"); +} diff --git a/Tests/Manual/CPFlashviewTest/Resources/spinner.gif b/Tests/Manual/CPFlashviewTest/Resources/spinner.gif new file mode 100644 index 000000000..06dbc2bc2 Binary files /dev/null and b/Tests/Manual/CPFlashviewTest/Resources/spinner.gif differ diff --git a/Tests/Manual/CPFlashviewTest/index-debug.html b/Tests/Manual/CPFlashviewTest/index-debug.html new file mode 100644 index 000000000..6f1e04102 --- /dev/null +++ b/Tests/Manual/CPFlashviewTest/index-debug.html @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + CPFlashviewTest + + + + + + + + + + + + + + + + + + + + + + JavaScript is required for this site to work correctly but is either disabled or not supported by your browser. + Show me how to enable JavaScript + You may want to upgrade to a newer browser while you're at it: + + Safari + Firefox + Chrome + Opera + Internet Explorer + + + + + + + + + diff --git a/Tests/Manual/CPFlashviewTest/index.html b/Tests/Manual/CPFlashviewTest/index.html new file mode 100644 index 000000000..3e904ed0e --- /dev/null +++ b/Tests/Manual/CPFlashviewTest/index.html @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + CPFlashviewTest + + + + + + + + + + + + + + + + + + + + JavaScript is required for this site to work correctly but is either disabled or not supported by your browser. + Show me how to enable JavaScript + You may want to upgrade to a newer browser while you're at it: + + Safari + Firefox + Chrome + Opera + Internet Explorer + + + + + + + + + + diff --git a/Tests/Manual/CPFlashviewTest/main.j b/Tests/Manual/CPFlashviewTest/main.j new file mode 100644 index 000000000..f7f567228 --- /dev/null +++ b/Tests/Manual/CPFlashviewTest/main.j @@ -0,0 +1,18 @@ +/* + * AppController.j + * CPFlashviewTest + * + * Created by Blair Duncan on April 23, 2012. + * Copyright 2012, SGL Studio, BBDO Toronto All rights reserved. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +}
JavaScript is required for this site to work correctly but is either disabled or not supported by your browser.
Show me how to enable JavaScript
You may want to upgrade to a newer browser while you're at it: