Browse Source

Helios: handle opening Helios in a popup window

Nicolas Petton 11 years ago
parent
commit
358e2a20bd
4 changed files with 41 additions and 19 deletions
  1. 15 8
      js/Helios-Core.deploy.js
  2. 16 9
      js/Helios-Core.js
  3. 5 0
      js/amber.js
  4. 5 2
      st/Helios-Core.st

+ 15 - 8
js/Helios-Core.deploy.js

@@ -2780,20 +2780,27 @@ smalltalk.method({
 selector: "defaultEnvironment",
 fn: function (){
 var self=this;
+var parent;
 function $Environment(){return smalltalk.Environment||(typeof Environment=="undefined"?nil:Environment)}
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=_st(window)._parent();
+var $1,$2,$3,$4;
+$1=_st(window)._opener();
 if(($receiver = $1) == nil || $receiver == undefined){
-$2=_st($Environment())._new();
-return $2;
+parent=_st(window)._parent();
 } else {
-$1;
+parent=$1;
 };
-$3=_st(_st(_st(_st(window)._parent())._at_("smalltalk"))._at_("Environment"))._new();
+$2=parent;
+if(($receiver = $2) == nil || $receiver == undefined){
+$3=_st($Environment())._new();
 return $3;
-}, function($ctx1) {$ctx1.fill(self,"defaultEnvironment",{},smalltalk.HLManager)})},
-messageSends: ["ifNil:", "new", "parent", "at:"]}),
+} else {
+$2;
+};
+$4=_st(_st(_st(parent)._at_("smalltalk"))._at_("Environment"))._new();
+return $4;
+}, function($ctx1) {$ctx1.fill(self,"defaultEnvironment",{parent:parent},smalltalk.HLManager)})},
+messageSends: ["ifNil:", "parent", "opener", "new", "at:"]}),
 smalltalk.HLManager);
 
 smalltalk.addMethod(

+ 16 - 9
js/Helios-Core.js

@@ -3635,22 +3635,29 @@ selector: "defaultEnvironment",
 category: 'defaults',
 fn: function (){
 var self=this;
+var parent;
 function $Environment(){return smalltalk.Environment||(typeof Environment=="undefined"?nil:Environment)}
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=_st(window)._parent();
+var $1,$2,$3,$4;
+$1=_st(window)._opener();
 if(($receiver = $1) == nil || $receiver == undefined){
-$2=_st($Environment())._new();
-return $2;
+parent=_st(window)._parent();
 } else {
-$1;
+parent=$1;
 };
-$3=_st(_st(_st(_st(window)._parent())._at_("smalltalk"))._at_("Environment"))._new();
+$2=parent;
+if(($receiver = $2) == nil || $receiver == undefined){
+$3=_st($Environment())._new();
 return $3;
-}, function($ctx1) {$ctx1.fill(self,"defaultEnvironment",{},smalltalk.HLManager)})},
+} else {
+$2;
+};
+$4=_st(_st(_st(parent)._at_("smalltalk"))._at_("Environment"))._new();
+return $4;
+}, function($ctx1) {$ctx1.fill(self,"defaultEnvironment",{parent:parent},smalltalk.HLManager)})},
 args: [],
-source: "defaultEnvironment\x0a\x09\x22If helios is loaded from within a frame, answer the parent window environment\x22\x0a\x09\x0a\x09window parent ifNil: [ ^ Environment new ].\x0a\x09\x0a\x09^ ((window parent at: 'smalltalk')\x0a\x09\x09at: 'Environment') new",
-messageSends: ["ifNil:", "new", "parent", "at:"],
+source: "defaultEnvironment\x0a\x09\x22If helios is loaded from within a frame, answer the parent window environment\x22\x0a\x09\x0a\x09| parent |\x0a\x09\x0a\x09parent := window opener ifNil: [ window parent ].\x0a\x09parent ifNil: [ ^ Environment new ].\x0a\x09\x0a\x09^ ((parent at: 'smalltalk')\x0a\x09\x09at: 'Environment') new",
+messageSends: ["ifNil:", "parent", "opener", "new", "at:"],
 referencedClasses: ["Environment"]
 }),
 smalltalk.HLManager);

+ 5 - 0
js/amber.js

@@ -332,11 +332,16 @@ amber = (function() {
         }
     };
 
+	that.popupHelios = function() {
+        window.open(home + 'helios.html', "Helios", "menubar=no, status=no, scrollbars=no, menubar=no, width=1000, height=600");
+    };
+
 	return that;
 })();
 
 window.loadAmber  = amber.load;
 window.loadHelios = amber.loadHelios;
+window.popupHelios = amber.popupHelios;
 
 // Backward compatibility
 function toggleAmberIDE () {

+ 5 - 2
st/Helios-Core.st

@@ -1325,9 +1325,12 @@ request: aString value: valueString do: aBlock
 defaultEnvironment
 	"If helios is loaded from within a frame, answer the parent window environment"
 	
-	window parent ifNil: [ ^ Environment new ].
+	| parent |
 	
-	^ ((window parent at: 'smalltalk')
+	parent := window opener ifNil: [ window parent ].
+	parent ifNil: [ ^ Environment new ].
+	
+	^ ((parent at: 'smalltalk')
 		at: 'Environment') new
 ! !