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 + + + + + + + + + + + + + + +
+
+ + + +
+
+ + + 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 + + + + + + + + + + + + +
+
+ + + +
+
+ + + + 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); +}