Browse Source

- More class commands
- Allow running Helios inside a frame
- Removed Helios extensions of Kernel classes

Nicolas Petton 11 years ago
parent
commit
0685c46412

+ 7 - 5
css/helios.css

@@ -100,10 +100,11 @@ i {
 .navbar .nav > .active > a, 
 .navbar .nav > .active > a:hover, 
 .navbar .nav > .active > a:focus {
-    background-image: linear-gradient(left, #999 0%, #bababa 4%, #bababa 96%, #999 100%);
-    background-image: -webkit-linear-gradient(left, #999 0%, #bababa 4%, #bababa 96%, #999 100%);
-    background-image: -moz-linear-gradient(left, #999 0%, #bababa 4%, #bababa 96%, #999 100%);
-    background-image: -o-linear-gradient(left, #999 0%, #bababa 4%, #bababa 96%, #999 100%);
+    background-color: #bababa;
+    background-image: linear-gradient(left, #777 0%, #bababa 2px, transparent 2px), linear-gradient(right, #777 0%, #bababa 2px, transparent 2px);
+    background-image: -webkit-linear-gradient(left, #777 0%, #bababa 2px, transparent 2px), -webkit-linear-gradient(right, #777 0%, #bababa 2px, transparent 2px);
+    background-image: -moz-linear-gradient(left, #777 0%, #bababa 2px, transparent 2px), -moz-linear-gradient(right, #777 0%, #bababa 2px, transparent 2px);
+    background-image: -o-linear-gradient(left, #777 0%, #bababa 2px, transparent 2px), -o-linear-gradient(right, #777 0%, #bababa 2px, transparent 2px);
     text-shadow: #ddd 0px 1px 0px; 
     color: #222;
 }
@@ -169,6 +170,7 @@ i {
     background-image: -moz-linear-gradient(top, #b1bdd5, #8999b8);
     background-image: -owebkit-linear-gradient(top, #b1bdd5, #8999b8);
     color: #fff;
+    text-shadow: 0 0 0;
 }
 
 
@@ -302,7 +304,7 @@ i {
 }
 
 .tool_container .list-label .btn-group > .dropdown-menu {
-    padding: 4px 0;
+    padding: 0;
     font-size: 11px;
 }
 

+ 1 - 1
helios.html

@@ -14,7 +14,7 @@
   </head> 
   <body> 
     
-    <script type='text/javascript'> loadAmber({packages: ['Spaces', 'Helios-Core', 'Helios-Environments', 'Helios-Commands-Core','Helios-Commands-Browser', 'Helios-Layout','Helios-KeyBindings', 'Helios-Browser', 'Helios-Workspace', 'Helios-Inspector', 'Helios-Announcements']}) </script> 
+    <script type='text/javascript'> loadAmber({packages: ['Spaces', 'Helios-Core', 'Helios-Commands-Core','Helios-Commands-Browser', 'Helios-Layout','Helios-KeyBindings', 'Helios-Browser', 'Helios-Workspace', 'Helios-Inspector', 'Helios-Announcements']}) </script> 
     <link rel="stylesheet" type="text/css" href='css/helios.css' /> 
     
   </body> 

+ 100 - 66
js/Helios-Browser.deploy.js

@@ -604,6 +604,7 @@ var self=this;
 function $ClassAdded(){return smalltalk.ClassAdded||(typeof ClassAdded=="undefined"?nil:ClassAdded)}
 function $ClassRemoved(){return smalltalk.ClassRemoved||(typeof ClassRemoved=="undefined"?nil:ClassRemoved)}
 function $ClassMoved(){return smalltalk.ClassMoved||(typeof ClassMoved=="undefined"?nil:ClassMoved)}
+function $ClassRenamed(){return smalltalk.ClassRenamed||(typeof ClassRenamed=="undefined"?nil:ClassRenamed)}
 return smalltalk.withContext(function($ctx1) { 
 var $1,$2;
 $1=_st(_st(self)._model())._systemAnnouncer();
@@ -615,12 +616,16 @@ _st($1)._on_do_($ClassRemoved(),(function(ann){
 return smalltalk.withContext(function($ctx2) {
 return _st(self)._onClassRemoved_(_st(ann)._theClass());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
-$2=_st($1)._on_do_($ClassMoved(),(function(ann){
+_st($1)._on_do_($ClassMoved(),(function(ann){
 return smalltalk.withContext(function($ctx2) {
 return _st(self)._onClassMoved_from_(_st(ann)._theClass(),_st(ann)._oldPackage());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
+$2=_st($1)._on_do_($ClassRenamed(),(function(ann){
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._onClassRenamed_(_st(ann)._theClass());
+}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"observeSystem",{},smalltalk.HLClassesListWidget)})},
-messageSends: ["on:do:", "onClassAdded:", "theClass", "systemAnnouncer", "model", "onClassRemoved:", "onClassMoved:from:", "oldPackage"]}),
+messageSends: ["on:do:", "onClassAdded:", "theClass", "systemAnnouncer", "model", "onClassRemoved:", "onClassMoved:from:", "oldPackage", "onClassRenamed:"]}),
 smalltalk.HLClassesListWidget);
 
 smalltalk.addMethod(
@@ -647,7 +652,7 @@ selector: "onClassMoved:from:",
 fn: function (aClass,aPackage){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
+var $1,$2,$3,$4,$5;
 $1=_st(_st(aPackage).__eq(_st(_st(self)._model())._selectedPackage()))._or_((function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(_st(aClass)._package()).__eq(_st(_st(self)._model())._selectedPackage());
@@ -656,17 +661,17 @@ if(! smalltalk.assert($1)){
 $2=self;
 return $2;
 };
-$3=_st(_st(_st(_st(self)._model())._selectedClass()).__eq_eq(aClass))._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aPackage).__eq(_st(_st(self)._model())._selectedPackage());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+$3=_st(aPackage).__eq(_st(_st(self)._model())._selectedPackage());
 if(smalltalk.assert($3)){
-_st(self)._selectItem_(nil);
+$4=self;
+_st($4)._selectedItem_(nil);
+$5=_st($4)._selectItem_(nil);
+$5;
 };
 _st(self)._setItemsForSelectedPackage();
 _st(self)._refresh();
 return self}, function($ctx1) {$ctx1.fill(self,"onClassMoved:from:",{aClass:aClass,aPackage:aPackage},smalltalk.HLClassesListWidget)})},
-messageSends: ["ifFalse:", "or:", "=", "selectedPackage", "model", "package", "ifTrue:", "selectItem:", "and:", "==", "selectedClass", "setItemsForSelectedPackage", "refresh"]}),
+messageSends: ["ifFalse:", "or:", "=", "selectedPackage", "model", "package", "ifTrue:", "selectedItem:", "selectItem:", "setItemsForSelectedPackage", "refresh"]}),
 smalltalk.HLClassesListWidget);
 
 smalltalk.addMethod(
@@ -691,6 +696,24 @@ return self}, function($ctx1) {$ctx1.fill(self,"onClassRemoved:",{aClass:aClass}
 messageSends: ["ifFalse:", "=", "selectedPackage", "model", "package", "ifTrue:", "selectItem:", "selectedClass", "setItemsForSelectedPackage", "refresh"]}),
 smalltalk.HLClassesListWidget);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "onClassRenamed:",
+fn: function (aClass){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=_st(_st(aClass)._package()).__eq(_st(_st(self)._model())._selectedPackage());
+if(! smalltalk.assert($1)){
+$2=self;
+return $2;
+};
+_st(self)._setItemsForSelectedPackage();
+_st(self)._refresh();
+return self}, function($ctx1) {$ctx1.fill(self,"onClassRenamed:",{aClass:aClass},smalltalk.HLClassesListWidget)})},
+messageSends: ["ifFalse:", "=", "selectedPackage", "model", "package", "setItemsForSelectedPackage", "refresh"]}),
+smalltalk.HLClassesListWidget);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "onClassSelected:",
@@ -1189,6 +1212,7 @@ function $ProtocolAdded(){return smalltalk.ProtocolAdded||(typeof ProtocolAdded=
 function $ProtocolRemoved(){return smalltalk.ProtocolRemoved||(typeof ProtocolRemoved=="undefined"?nil:ProtocolRemoved)}
 function $MethodAdded(){return smalltalk.MethodAdded||(typeof MethodAdded=="undefined"?nil:MethodAdded)}
 function $MethodRemoved(){return smalltalk.MethodRemoved||(typeof MethodRemoved=="undefined"?nil:MethodRemoved)}
+function $MethodMoved(){return smalltalk.MethodMoved||(typeof MethodMoved=="undefined"?nil:MethodMoved)}
 return smalltalk.withContext(function($ctx1) { 
 var $1,$2;
 $1=_st(_st(self)._model())._systemAnnouncer();
@@ -1204,12 +1228,16 @@ _st($1)._on_do_($MethodAdded(),(function(ann){
 return smalltalk.withContext(function($ctx2) {
 return _st(self)._onMethodAdded_(_st(ann)._method());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
-$2=_st($1)._on_do_($MethodRemoved(),(function(ann){
+_st($1)._on_do_($MethodRemoved(),(function(ann){
 return smalltalk.withContext(function($ctx2) {
 return _st(self)._onMethodRemoved_(_st(ann)._method());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
+$2=_st($1)._on_do_($MethodMoved(),(function(ann){
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._onMethodMoved_(_st(ann)._method());
+}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"observeSystem",{},smalltalk.HLMethodsListWidget)})},
-messageSends: ["on:do:", "onProtocolAdded:", "theClass", "systemAnnouncer", "model", "onProtocolRemoved:", "onMethodAdded:", "method", "onMethodRemoved:"]}),
+messageSends: ["on:do:", "onProtocolAdded:", "theClass", "systemAnnouncer", "model", "onProtocolRemoved:", "onMethodAdded:", "method", "onMethodRemoved:", "onMethodMoved:"]}),
 smalltalk.HLMethodsListWidget);
 
 smalltalk.addMethod(
@@ -1230,13 +1258,34 @@ return self}, function($ctx1) {$ctx1.fill(self,"onMethodAdded:",{aMethod:aMethod
 messageSends: ["ifFalse:", "=", "methodClass", "selectedClass", "model", "setItemsForSelectedProtocol", "refresh"]}),
 smalltalk.HLMethodsListWidget);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "onMethodMoved:",
+fn: function (aMethod){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3,$4;
+$1=_st(_st(_st(self)._model())._selectedClass()).__eq(_st(aMethod)._methodClass());
+if(! smalltalk.assert($1)){
+$2=self;
+return $2;
+};
+$3=self;
+_st($3)._selectedItem_(nil);
+_st($3)._selectItem_(nil);
+_st($3)._setItemsForSelectedProtocol();
+$4=_st($3)._refresh();
+return self}, function($ctx1) {$ctx1.fill(self,"onMethodMoved:",{aMethod:aMethod},smalltalk.HLMethodsListWidget)})},
+messageSends: ["ifFalse:", "=", "methodClass", "selectedClass", "model", "selectedItem:", "selectItem:", "setItemsForSelectedProtocol", "refresh"]}),
+smalltalk.HLMethodsListWidget);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "onMethodRemoved:",
 fn: function (aMethod){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
+var $1,$2,$3,$4,$5;
 var $early={};
 try {
 _st(_st(self)._items())._detect_ifNone_((function(each){
@@ -1256,7 +1305,10 @@ return smalltalk.withContext(function($ctx2) {
 return _st(_st(aMethod)._selector()).__eq(_st(_st(self)._selectedItem())._selector());
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 if(smalltalk.assert($3)){
-_st(self)._selectItem_(nil);
+$4=self;
+_st($4)._selectedItem_(nil);
+$5=_st($4)._selectItem_(nil);
+$5;
 };
 };
 _st(self)._setItemsForSelectedProtocol();
@@ -1264,7 +1316,7 @@ _st(self)._refresh();
 return self}
 catch(e) {if(e===$early)return e[0]; throw e}
 }, function($ctx1) {$ctx1.fill(self,"onMethodRemoved:",{aMethod:aMethod},smalltalk.HLMethodsListWidget)})},
-messageSends: ["detect:ifNone:", "=", "selector", "items", "ifNotNil:", "ifTrue:", "selectItem:", "and:", "selectedItem", "selectedClass", "model", "methodClass", "setItemsForSelectedProtocol", "refresh"]}),
+messageSends: ["detect:ifNone:", "=", "selector", "items", "ifNotNil:", "ifTrue:", "selectedItem:", "selectItem:", "and:", "selectedItem", "selectedClass", "model", "methodClass", "setItemsForSelectedProtocol", "refresh"]}),
 smalltalk.HLMethodsListWidget);
 
 smalltalk.addMethod(
@@ -1817,7 +1869,7 @@ selector: "onProtocolRemoved:from:",
 fn: function (aString,aClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
+var $1,$2,$3,$4,$5;
 $1=_st(aClass).__eq(_st(_st(self)._model())._selectedClass());
 if(! smalltalk.assert($1)){
 $2=self;
@@ -1825,12 +1877,15 @@ return $2;
 };
 $3=_st(_st(_st(self)._model())._selectedProtocol()).__eq(aString);
 if(smalltalk.assert($3)){
-_st(self)._selectItem_(nil);
+$4=self;
+_st($4)._selectedItem_(nil);
+$5=_st($4)._selectItem_(nil);
+$5;
 };
 _st(self)._setItemsForSelectedClass();
 _st(self)._refresh();
 return self}, function($ctx1) {$ctx1.fill(self,"onProtocolRemoved:from:",{aString:aString,aClass:aClass},smalltalk.HLProtocolsListWidget)})},
-messageSends: ["ifFalse:", "=", "selectedClass", "model", "ifTrue:", "selectItem:", "selectedProtocol", "setItemsForSelectedClass", "refresh"]}),
+messageSends: ["ifFalse:", "=", "selectedClass", "model", "ifTrue:", "selectedItem:", "selectItem:", "selectedProtocol", "setItemsForSelectedClass", "refresh"]}),
 smalltalk.HLProtocolsListWidget);
 
 smalltalk.addMethod(
@@ -2130,13 +2185,27 @@ smalltalk.method({
 selector: "compileMethod:",
 fn: function (aString){
 var self=this;
+var method;
 return smalltalk.withContext(function($ctx1) { 
 _st(self)._withCompileErrorHandling_((function(){
 return smalltalk.withContext(function($ctx2) {
-return _st(_st(self)._environment())._compileMethod_for_protocol_(aString,_st(self)._selectedClass(),_st(self)._compilationProtocol());
+method=_st(_st(self)._environment())._compileMethod_for_protocol_(aString,_st(self)._selectedClass(),_st(self)._compilationProtocol());
+method;
+return _st(self)._selectedMethod_(method);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"compileMethod:",{aString:aString},smalltalk.HLBrowserModel)})},
-messageSends: ["withCompileErrorHandling:", "compileMethod:for:protocol:", "selectedClass", "compilationProtocol", "environment"]}),
+return self}, function($ctx1) {$ctx1.fill(self,"compileMethod:",{aString:aString,method:method},smalltalk.HLBrowserModel)})},
+messageSends: ["withCompileErrorHandling:", "compileMethod:for:protocol:", "selectedClass", "compilationProtocol", "environment", "selectedMethod:"]}),
+smalltalk.HLBrowserModel);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "copyClassTo:",
+fn: function (aClassName){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._environment())._copyClass_to_(_st(_st(self)._selectedClass())._theNonMetaClass(),aClassName);
+return self}, function($ctx1) {$ctx1.fill(self,"copyClassTo:",{aClassName:aClassName},smalltalk.HLBrowserModel)})},
+messageSends: ["copyClass:to:", "theNonMetaClass", "selectedClass", "environment"]}),
 smalltalk.HLBrowserModel);
 
 smalltalk.addMethod(
@@ -2391,6 +2460,17 @@ return self}, function($ctx1) {$ctx1.fill(self,"removeMethod",{},smalltalk.HLBro
 messageSends: ["ifTrue:", "removeMethod:", "selectedMethod", "environment", "confirm:", ",", "selector", "name", "methodClass", "manager"]}),
 smalltalk.HLBrowserModel);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "renameClassTo:",
+fn: function (aClassName){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._environment())._renameClass_to_(_st(_st(self)._selectedClass())._theNonMetaClass(),aClassName);
+return self}, function($ctx1) {$ctx1.fill(self,"renameClassTo:",{aClassName:aClassName},smalltalk.HLBrowserModel)})},
+messageSends: ["renameClass:to:", "theNonMetaClass", "selectedClass", "environment"]}),
+smalltalk.HLBrowserModel);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "save:",
@@ -3182,49 +3262,3 @@ messageSends: ["shouldNotImplement"]}),
 smalltalk.HLSelectorsCache.klass);
 
 
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isOverridden",
-fn: function (){
-var self=this;
-var selector;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-var $early={};
-try {
-selector=_st(self)._selector();
-_st(_st(self)._methodClass())._allSubclassesDo_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(each)._includesSelector_(selector);
-if(smalltalk.assert($1)){
-throw $early=[true];
-};
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return false;
-}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"isOverridden",{selector:selector},smalltalk.CompiledMethod)})},
-messageSends: ["selector", "allSubclassesDo:", "ifTrue:", "includesSelector:", "methodClass"]}),
-smalltalk.CompiledMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isOverride",
-fn: function (){
-var self=this;
-var superclass;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-superclass=_st(_st(self)._methodClass())._superclass();
-$1=superclass;
-if(($receiver = $1) == nil || $receiver == undefined){
-return false;
-} else {
-$1;
-};
-$2=_st(_st(_st(_st(self)._methodClass())._superclass())._lookupSelector_(_st(self)._selector()))._notNil();
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"isOverride",{superclass:superclass},smalltalk.CompiledMethod)})},
-messageSends: ["superclass", "methodClass", "ifNil:", "notNil", "lookupSelector:", "selector"]}),
-smalltalk.CompiledMethod);
-

+ 128 - 84
js/Helios-Browser.js

@@ -785,6 +785,7 @@ var self=this;
 function $ClassAdded(){return smalltalk.ClassAdded||(typeof ClassAdded=="undefined"?nil:ClassAdded)}
 function $ClassRemoved(){return smalltalk.ClassRemoved||(typeof ClassRemoved=="undefined"?nil:ClassRemoved)}
 function $ClassMoved(){return smalltalk.ClassMoved||(typeof ClassMoved=="undefined"?nil:ClassMoved)}
+function $ClassRenamed(){return smalltalk.ClassRenamed||(typeof ClassRenamed=="undefined"?nil:ClassRenamed)}
 return smalltalk.withContext(function($ctx1) { 
 var $1,$2;
 $1=_st(_st(self)._model())._systemAnnouncer();
@@ -796,15 +797,19 @@ _st($1)._on_do_($ClassRemoved(),(function(ann){
 return smalltalk.withContext(function($ctx2) {
 return _st(self)._onClassRemoved_(_st(ann)._theClass());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
-$2=_st($1)._on_do_($ClassMoved(),(function(ann){
+_st($1)._on_do_($ClassMoved(),(function(ann){
 return smalltalk.withContext(function($ctx2) {
 return _st(self)._onClassMoved_from_(_st(ann)._theClass(),_st(ann)._oldPackage());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
+$2=_st($1)._on_do_($ClassRenamed(),(function(ann){
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._onClassRenamed_(_st(ann)._theClass());
+}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"observeSystem",{},smalltalk.HLClassesListWidget)})},
 args: [],
-source: "observeSystem\x0a\x09self model systemAnnouncer\x0a    \x09on: ClassAdded\x0a        do: [ :ann | self onClassAdded: ann theClass ];\x0a        on: ClassRemoved\x0a        do: [ :ann | self onClassRemoved: ann theClass ];\x0a\x09\x09on: ClassMoved\x0a        do: [ :ann | self onClassMoved: ann theClass from: ann oldPackage ]",
-messageSends: ["on:do:", "onClassAdded:", "theClass", "systemAnnouncer", "model", "onClassRemoved:", "onClassMoved:from:", "oldPackage"],
-referencedClasses: ["ClassAdded", "ClassRemoved", "ClassMoved"]
+source: "observeSystem\x0a\x09self model systemAnnouncer\x0a    \x09on: ClassAdded\x0a        do: [ :ann | self onClassAdded: ann theClass ];\x0a        on: ClassRemoved\x0a        do: [ :ann | self onClassRemoved: ann theClass ];\x0a\x09\x09on: ClassMoved\x0a        do: [ :ann | self onClassMoved: ann theClass from: ann oldPackage ];\x0a\x09\x09on: ClassRenamed\x0a        do: [ :ann | self onClassRenamed: ann theClass ]",
+messageSends: ["on:do:", "onClassAdded:", "theClass", "systemAnnouncer", "model", "onClassRemoved:", "onClassMoved:from:", "oldPackage", "onClassRenamed:"],
+referencedClasses: ["ClassAdded", "ClassRemoved", "ClassMoved", "ClassRenamed"]
 }),
 smalltalk.HLClassesListWidget);
 
@@ -838,7 +843,7 @@ category: 'reactions',
 fn: function (aClass,aPackage){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
+var $1,$2,$3,$4,$5;
 $1=_st(_st(aPackage).__eq(_st(_st(self)._model())._selectedPackage()))._or_((function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(_st(aClass)._package()).__eq(_st(_st(self)._model())._selectedPackage());
@@ -847,19 +852,19 @@ if(! smalltalk.assert($1)){
 $2=self;
 return $2;
 };
-$3=_st(_st(_st(_st(self)._model())._selectedClass()).__eq_eq(aClass))._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aPackage).__eq(_st(_st(self)._model())._selectedPackage());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+$3=_st(aPackage).__eq(_st(_st(self)._model())._selectedPackage());
 if(smalltalk.assert($3)){
-_st(self)._selectItem_(nil);
+$4=self;
+_st($4)._selectedItem_(nil);
+$5=_st($4)._selectItem_(nil);
+$5;
 };
 _st(self)._setItemsForSelectedPackage();
 _st(self)._refresh();
 return self}, function($ctx1) {$ctx1.fill(self,"onClassMoved:from:",{aClass:aClass,aPackage:aPackage},smalltalk.HLClassesListWidget)})},
 args: ["aClass", "aPackage"],
-source: "onClassMoved: aClass from: aPackage\x0a\x09(aPackage = self model selectedPackage or: [\x0a\x09\x09aClass package = self model selectedPackage ])\x0a\x09\x09\x09ifFalse: [ ^ self ].\x0a\x09\x0a\x09(self model selectedClass == aClass and: [\x0a\x09\x09aPackage = self model selectedPackage]) \x0a\x09\x09\x09ifTrue: [ self selectItem: nil ].\x0a    \x0a    self setItemsForSelectedPackage.\x0a    self refresh",
-messageSends: ["ifFalse:", "or:", "=", "selectedPackage", "model", "package", "ifTrue:", "selectItem:", "and:", "==", "selectedClass", "setItemsForSelectedPackage", "refresh"],
+source: "onClassMoved: aClass from: aPackage\x0a\x09(aPackage = self model selectedPackage or: [\x0a\x09\x09aClass package = self model selectedPackage ])\x0a\x09\x09\x09ifFalse: [ ^ self ].\x0a\x09\x0a\x09aPackage = self model selectedPackage ifTrue: [ \x0a\x09\x09self \x0a\x09\x09\x09selectedItem: nil;\x0a\x09\x09\x09selectItem: nil ].\x0a    \x0a    self setItemsForSelectedPackage.\x0a    self refresh",
+messageSends: ["ifFalse:", "or:", "=", "selectedPackage", "model", "package", "ifTrue:", "selectedItem:", "selectItem:", "setItemsForSelectedPackage", "refresh"],
 referencedClasses: []
 }),
 smalltalk.HLClassesListWidget);
@@ -891,6 +896,29 @@ referencedClasses: []
 }),
 smalltalk.HLClassesListWidget);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "onClassRenamed:",
+category: 'reactions',
+fn: function (aClass){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=_st(_st(aClass)._package()).__eq(_st(_st(self)._model())._selectedPackage());
+if(! smalltalk.assert($1)){
+$2=self;
+return $2;
+};
+_st(self)._setItemsForSelectedPackage();
+_st(self)._refresh();
+return self}, function($ctx1) {$ctx1.fill(self,"onClassRenamed:",{aClass:aClass},smalltalk.HLClassesListWidget)})},
+args: ["aClass"],
+source: "onClassRenamed: aClass\x0a\x09aClass package = self model selectedPackage ifFalse: [ ^ self ].\x0a    \x0a    self setItemsForSelectedPackage.\x0a    self refresh",
+messageSends: ["ifFalse:", "=", "selectedPackage", "model", "package", "setItemsForSelectedPackage", "refresh"],
+referencedClasses: []
+}),
+smalltalk.HLClassesListWidget);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "onClassSelected:",
@@ -1520,6 +1548,7 @@ function $ProtocolAdded(){return smalltalk.ProtocolAdded||(typeof ProtocolAdded=
 function $ProtocolRemoved(){return smalltalk.ProtocolRemoved||(typeof ProtocolRemoved=="undefined"?nil:ProtocolRemoved)}
 function $MethodAdded(){return smalltalk.MethodAdded||(typeof MethodAdded=="undefined"?nil:MethodAdded)}
 function $MethodRemoved(){return smalltalk.MethodRemoved||(typeof MethodRemoved=="undefined"?nil:MethodRemoved)}
+function $MethodMoved(){return smalltalk.MethodMoved||(typeof MethodMoved=="undefined"?nil:MethodMoved)}
 return smalltalk.withContext(function($ctx1) { 
 var $1,$2;
 $1=_st(_st(self)._model())._systemAnnouncer();
@@ -1535,15 +1564,19 @@ _st($1)._on_do_($MethodAdded(),(function(ann){
 return smalltalk.withContext(function($ctx2) {
 return _st(self)._onMethodAdded_(_st(ann)._method());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
-$2=_st($1)._on_do_($MethodRemoved(),(function(ann){
+_st($1)._on_do_($MethodRemoved(),(function(ann){
 return smalltalk.withContext(function($ctx2) {
 return _st(self)._onMethodRemoved_(_st(ann)._method());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
+$2=_st($1)._on_do_($MethodMoved(),(function(ann){
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._onMethodMoved_(_st(ann)._method());
+}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"observeSystem",{},smalltalk.HLMethodsListWidget)})},
 args: [],
-source: "observeSystem\x0a\x09self model systemAnnouncer \x0a    \x09on: ProtocolAdded\x0a        do: [ :ann | self onProtocolAdded: ann theClass ];\x0a    \x09on: ProtocolRemoved\x0a        do: [ :ann | self onProtocolRemoved: ann theClass ];\x0a    \x09on: MethodAdded \x0a        do: [ :ann | self onMethodAdded: ann method ];\x0a        on: MethodRemoved \x0a        do: [ :ann | self onMethodRemoved: ann method ]",
-messageSends: ["on:do:", "onProtocolAdded:", "theClass", "systemAnnouncer", "model", "onProtocolRemoved:", "onMethodAdded:", "method", "onMethodRemoved:"],
-referencedClasses: ["ProtocolAdded", "ProtocolRemoved", "MethodAdded", "MethodRemoved"]
+source: "observeSystem\x0a\x09self model systemAnnouncer \x0a    \x09on: ProtocolAdded\x0a        do: [ :ann | self onProtocolAdded: ann theClass ];\x0a    \x09on: ProtocolRemoved\x0a        do: [ :ann | self onProtocolRemoved: ann theClass ];\x0a    \x09on: MethodAdded \x0a        do: [ :ann | self onMethodAdded: ann method ];\x0a        on: MethodRemoved \x0a        do: [ :ann | self onMethodRemoved: ann method ];\x0a\x09\x09on: MethodMoved \x0a        do: [ :ann | self onMethodMoved: ann method ]",
+messageSends: ["on:do:", "onProtocolAdded:", "theClass", "systemAnnouncer", "model", "onProtocolRemoved:", "onMethodAdded:", "method", "onMethodRemoved:", "onMethodMoved:"],
+referencedClasses: ["ProtocolAdded", "ProtocolRemoved", "MethodAdded", "MethodRemoved", "MethodMoved"]
 }),
 smalltalk.HLMethodsListWidget);
 
@@ -1570,6 +1603,32 @@ referencedClasses: []
 }),
 smalltalk.HLMethodsListWidget);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "onMethodMoved:",
+category: 'reactions',
+fn: function (aMethod){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3,$4;
+$1=_st(_st(_st(self)._model())._selectedClass()).__eq(_st(aMethod)._methodClass());
+if(! smalltalk.assert($1)){
+$2=self;
+return $2;
+};
+$3=self;
+_st($3)._selectedItem_(nil);
+_st($3)._selectItem_(nil);
+_st($3)._setItemsForSelectedProtocol();
+$4=_st($3)._refresh();
+return self}, function($ctx1) {$ctx1.fill(self,"onMethodMoved:",{aMethod:aMethod},smalltalk.HLMethodsListWidget)})},
+args: ["aMethod"],
+source: "onMethodMoved: aMethod\x0a\x09self model selectedClass = aMethod methodClass ifFalse: [ ^ self ].\x0a    \x0a\x09self \x0a\x09\x09selectedItem: nil; \x0a\x09\x09selectItem: nil;\x0a\x09\x09setItemsForSelectedProtocol;\x0a    \x09refresh",
+messageSends: ["ifFalse:", "=", "methodClass", "selectedClass", "model", "selectedItem:", "selectItem:", "setItemsForSelectedProtocol", "refresh"],
+referencedClasses: []
+}),
+smalltalk.HLMethodsListWidget);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "onMethodRemoved:",
@@ -1577,7 +1636,7 @@ category: 'reactions',
 fn: function (aMethod){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
+var $1,$2,$3,$4,$5;
 var $early={};
 try {
 _st(_st(self)._items())._detect_ifNone_((function(each){
@@ -1597,7 +1656,10 @@ return smalltalk.withContext(function($ctx2) {
 return _st(_st(aMethod)._selector()).__eq(_st(_st(self)._selectedItem())._selector());
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 if(smalltalk.assert($3)){
-_st(self)._selectItem_(nil);
+$4=self;
+_st($4)._selectedItem_(nil);
+$5=_st($4)._selectItem_(nil);
+$5;
 };
 };
 _st(self)._setItemsForSelectedProtocol();
@@ -1606,8 +1668,8 @@ return self}
 catch(e) {if(e===$early)return e[0]; throw e}
 }, function($ctx1) {$ctx1.fill(self,"onMethodRemoved:",{aMethod:aMethod},smalltalk.HLMethodsListWidget)})},
 args: ["aMethod"],
-source: "onMethodRemoved: aMethod\x0a\x09self items detect: [ :each | each = aMethod selector ] ifNone: [ ^ self ].\x0a\x0a    self selectedItem ifNotNil: [\x0a      \x09(aMethod methodClass = self model selectedClass and: [ aMethod selector = self selectedItem selector ])\x0a  \x09\x09\x09ifTrue: [ self selectItem: nil ] ].\x0a    self setItemsForSelectedProtocol.\x0a\x0aself refresh",
-messageSends: ["detect:ifNone:", "=", "selector", "items", "ifNotNil:", "ifTrue:", "selectItem:", "and:", "selectedItem", "selectedClass", "model", "methodClass", "setItemsForSelectedProtocol", "refresh"],
+source: "onMethodRemoved: aMethod\x0a\x09self items detect: [ :each | each = aMethod selector ] ifNone: [ ^ self ].\x0a\x0a    self selectedItem ifNotNil: [\x0a      \x09(aMethod methodClass = self model selectedClass and: [ aMethod selector = self selectedItem selector ])\x0a  \x09\x09\x09ifTrue: [ \x0a\x09\x09\x09\x09self selectedItem: nil; \x0a\x09\x09\x09\x09selectItem: nil ] ].\x0a\x0a    self setItemsForSelectedProtocol.\x0a\x09self refresh",
+messageSends: ["detect:ifNone:", "=", "selector", "items", "ifNotNil:", "ifTrue:", "selectedItem:", "selectItem:", "and:", "selectedItem", "selectedClass", "model", "methodClass", "setItemsForSelectedProtocol", "refresh"],
 referencedClasses: []
 }),
 smalltalk.HLMethodsListWidget);
@@ -2323,7 +2385,7 @@ category: 'reactions',
 fn: function (aString,aClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
+var $1,$2,$3,$4,$5;
 $1=_st(aClass).__eq(_st(_st(self)._model())._selectedClass());
 if(! smalltalk.assert($1)){
 $2=self;
@@ -2331,14 +2393,17 @@ return $2;
 };
 $3=_st(_st(_st(self)._model())._selectedProtocol()).__eq(aString);
 if(smalltalk.assert($3)){
-_st(self)._selectItem_(nil);
+$4=self;
+_st($4)._selectedItem_(nil);
+$5=_st($4)._selectItem_(nil);
+$5;
 };
 _st(self)._setItemsForSelectedClass();
 _st(self)._refresh();
 return self}, function($ctx1) {$ctx1.fill(self,"onProtocolRemoved:from:",{aString:aString,aClass:aClass},smalltalk.HLProtocolsListWidget)})},
 args: ["aString", "aClass"],
-source: "onProtocolRemoved: aString from: aClass\x0a\x09aClass = self model selectedClass ifFalse: [ ^ self ].\x0a    \x0a    self model selectedProtocol = aString \x0a    \x09ifTrue: [ self selectItem: nil ].\x0a        \x0a    self setItemsForSelectedClass.\x0a    self refresh",
-messageSends: ["ifFalse:", "=", "selectedClass", "model", "ifTrue:", "selectItem:", "selectedProtocol", "setItemsForSelectedClass", "refresh"],
+source: "onProtocolRemoved: aString from: aClass\x0a\x09aClass = self model selectedClass ifFalse: [ ^ self ].\x0a    \x0a    self model selectedProtocol = aString \x0a    \x09ifTrue: [ \x0a\x09\x09\x09self \x0a\x09\x09\x09\x09selectedItem: nil;\x0a\x09\x09\x09\x09selectItem: nil ].\x0a        \x0a    self setItemsForSelectedClass.\x0a    self refresh",
+messageSends: ["ifFalse:", "=", "selectedClass", "model", "ifTrue:", "selectedItem:", "selectItem:", "selectedProtocol", "setItemsForSelectedClass", "refresh"],
 referencedClasses: []
 }),
 smalltalk.HLProtocolsListWidget);
@@ -2731,15 +2796,34 @@ selector: "compileMethod:",
 category: 'compiling',
 fn: function (aString){
 var self=this;
+var method;
 return smalltalk.withContext(function($ctx1) { 
 _st(self)._withCompileErrorHandling_((function(){
 return smalltalk.withContext(function($ctx2) {
-return _st(_st(self)._environment())._compileMethod_for_protocol_(aString,_st(self)._selectedClass(),_st(self)._compilationProtocol());
+method=_st(_st(self)._environment())._compileMethod_for_protocol_(aString,_st(self)._selectedClass(),_st(self)._compilationProtocol());
+method;
+return _st(self)._selectedMethod_(method);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"compileMethod:",{aString:aString},smalltalk.HLBrowserModel)})},
+return self}, function($ctx1) {$ctx1.fill(self,"compileMethod:",{aString:aString,method:method},smalltalk.HLBrowserModel)})},
 args: ["aString"],
-source: "compileMethod: aString\x0a\x0a\x09self withCompileErrorHandling: [ self environment \x0a\x09\x09compileMethod: aString \x0a\x09\x09for: self selectedClass\x0a\x09\x09protocol: self compilationProtocol ]",
-messageSends: ["withCompileErrorHandling:", "compileMethod:for:protocol:", "selectedClass", "compilationProtocol", "environment"],
+source: "compileMethod: aString\x0a\x09| method |\x0a\x09\x0a\x09self withCompileErrorHandling: [ \x0a\x09\x09method := self environment \x0a\x09\x09\x09compileMethod: aString \x0a\x09\x09\x09for: self selectedClass\x0a\x09\x09\x09protocol: self compilationProtocol.\x0a\x0a\x09\x09self selectedMethod: method ]",
+messageSends: ["withCompileErrorHandling:", "compileMethod:for:protocol:", "selectedClass", "compilationProtocol", "environment", "selectedMethod:"],
+referencedClasses: []
+}),
+smalltalk.HLBrowserModel);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "copyClassTo:",
+category: 'commands actions',
+fn: function (aClassName){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._environment())._copyClass_to_(_st(_st(self)._selectedClass())._theNonMetaClass(),aClassName);
+return self}, function($ctx1) {$ctx1.fill(self,"copyClassTo:",{aClassName:aClassName},smalltalk.HLBrowserModel)})},
+args: ["aClassName"],
+source: "copyClassTo: aClassName\x0a\x09self environment \x0a\x09\x09copyClass: self selectedClass theNonMetaClass\x0a\x09\x09to: aClassName",
+messageSends: ["copyClass:to:", "theNonMetaClass", "selectedClass", "environment"],
 referencedClasses: []
 }),
 smalltalk.HLBrowserModel);
@@ -3086,6 +3170,22 @@ referencedClasses: []
 }),
 smalltalk.HLBrowserModel);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "renameClassTo:",
+category: 'commands actions',
+fn: function (aClassName){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._environment())._renameClass_to_(_st(_st(self)._selectedClass())._theNonMetaClass(),aClassName);
+return self}, function($ctx1) {$ctx1.fill(self,"renameClassTo:",{aClassName:aClassName},smalltalk.HLBrowserModel)})},
+args: ["aClassName"],
+source: "renameClassTo: aClassName\x0a\x09self environment \x0a\x09\x09renameClass: self selectedClass theNonMetaClass\x0a\x09\x09to: aClassName",
+messageSends: ["renameClass:to:", "theNonMetaClass", "selectedClass", "environment"],
+referencedClasses: []
+}),
+smalltalk.HLBrowserModel);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "save:",
@@ -4107,59 +4207,3 @@ referencedClasses: []
 smalltalk.HLSelectorsCache.klass);
 
 
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isOverridden",
-category: '*Helios-Browser',
-fn: function (){
-var self=this;
-var selector;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-var $early={};
-try {
-selector=_st(self)._selector();
-_st(_st(self)._methodClass())._allSubclassesDo_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(each)._includesSelector_(selector);
-if(smalltalk.assert($1)){
-throw $early=[true];
-};
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return false;
-}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"isOverridden",{selector:selector},smalltalk.CompiledMethod)})},
-args: [],
-source: "isOverridden\x0a\x09| selector |\x0a    \x0a    selector := self selector.\x0a    self methodClass allSubclassesDo: [ :each |\x0a\x09    (each includesSelector: selector)\x0a        \x09ifTrue: [ ^ true ] ].\x0a\x09^ false",
-messageSends: ["selector", "allSubclassesDo:", "ifTrue:", "includesSelector:", "methodClass"],
-referencedClasses: []
-}),
-smalltalk.CompiledMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isOverride",
-category: '*Helios-Browser',
-fn: function (){
-var self=this;
-var superclass;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-superclass=_st(_st(self)._methodClass())._superclass();
-$1=superclass;
-if(($receiver = $1) == nil || $receiver == undefined){
-return false;
-} else {
-$1;
-};
-$2=_st(_st(_st(_st(self)._methodClass())._superclass())._lookupSelector_(_st(self)._selector()))._notNil();
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"isOverride",{superclass:superclass},smalltalk.CompiledMethod)})},
-args: [],
-source: "isOverride\x0a\x09| superclass |\x0a    \x0a    superclass := self methodClass superclass.\x0a\x09superclass ifNil: [ ^ false ].\x0a\x09\x0a    ^ (self methodClass superclass lookupSelector: self selector) notNil",
-messageSends: ["superclass", "methodClass", "ifNil:", "notNil", "lookupSelector:", "selector"],
-referencedClasses: []
-}),
-smalltalk.CompiledMethod);
-

+ 248 - 0
js/Helios-Commands-Browser.deploy.js

@@ -297,6 +297,130 @@ messageSends: []}),
 smalltalk.HLCommitPackageCommand.klass);
 
 
+smalltalk.addClass('HLCopyCommand', smalltalk.HLBrowserCommand, [], 'Helios-Commands-Browser');
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "key",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=(67);
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLCopyCommand.klass)})},
+messageSends: []}),
+smalltalk.HLCopyCommand.klass);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "label",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "Copy";
+}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLCopyCommand.klass)})},
+messageSends: []}),
+smalltalk.HLCopyCommand.klass);
+
+
+smalltalk.addClass('HLCopyClassCommand', smalltalk.HLCopyCommand, [], 'Helios-Commands-Browser');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "displayLabel",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "New class name:";
+}, function($ctx1) {$ctx1.fill(self,"displayLabel",{},smalltalk.HLCopyClassCommand)})},
+messageSends: []}),
+smalltalk.HLCopyClassCommand);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "execute",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._model())._copyClassTo_(_st(self)._input());
+return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLCopyClassCommand)})},
+messageSends: ["copyClassTo:", "input", "model"]}),
+smalltalk.HLCopyClassCommand);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "isActive",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(_st(_st(self)._model())._selectedClass())._notNil();
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"isActive",{},smalltalk.HLCopyClassCommand)})},
+messageSends: ["notNil", "selectedClass", "model"]}),
+smalltalk.HLCopyClassCommand);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "isInputRequired",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return true;
+}, function($ctx1) {$ctx1.fill(self,"isInputRequired",{},smalltalk.HLCopyClassCommand)})},
+messageSends: []}),
+smalltalk.HLCopyClassCommand);
+
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "isValidFor:",
+fn: function (anObject){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(anObject)._isBehavior();
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"isValidFor:",{anObject:anObject},smalltalk.HLCopyClassCommand.klass)})},
+messageSends: ["isBehavior"]}),
+smalltalk.HLCopyClassCommand.klass);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "key",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=(67);
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLCopyClassCommand.klass)})},
+messageSends: []}),
+smalltalk.HLCopyClassCommand.klass);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "label",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "Class";
+}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLCopyClassCommand.klass)})},
+messageSends: []}),
+smalltalk.HLCopyClassCommand.klass);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "menuLabel",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "Copy class...";
+}, function($ctx1) {$ctx1.fill(self,"menuLabel",{},smalltalk.HLCopyClassCommand.klass)})},
+messageSends: []}),
+smalltalk.HLCopyClassCommand.klass);
+
+
 smalltalk.addClass('HLFindCommand', smalltalk.HLBrowserCommand, [], 'Helios-Commands-Browser');
 
 smalltalk.addMethod(
@@ -1016,6 +1140,130 @@ messageSends: []}),
 smalltalk.HLRemoveMethodCommand.klass);
 
 
+smalltalk.addClass('HLRenameCommand', smalltalk.HLBrowserCommand, [], 'Helios-Commands-Browser');
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "key",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=(82);
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLRenameCommand.klass)})},
+messageSends: []}),
+smalltalk.HLRenameCommand.klass);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "label",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "Rename";
+}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLRenameCommand.klass)})},
+messageSends: []}),
+smalltalk.HLRenameCommand.klass);
+
+
+smalltalk.addClass('HLRenameClassCommand', smalltalk.HLRenameCommand, [], 'Helios-Commands-Browser');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "displayLabel",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "Rename class to:";
+}, function($ctx1) {$ctx1.fill(self,"displayLabel",{},smalltalk.HLRenameClassCommand)})},
+messageSends: []}),
+smalltalk.HLRenameClassCommand);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "execute",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._model())._renameClassTo_(_st(self)._input());
+return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLRenameClassCommand)})},
+messageSends: ["renameClassTo:", "input", "model"]}),
+smalltalk.HLRenameClassCommand);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "isActive",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(_st(_st(self)._model())._selectedClass())._notNil();
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"isActive",{},smalltalk.HLRenameClassCommand)})},
+messageSends: ["notNil", "selectedClass", "model"]}),
+smalltalk.HLRenameClassCommand);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "isInputRequired",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return true;
+}, function($ctx1) {$ctx1.fill(self,"isInputRequired",{},smalltalk.HLRenameClassCommand)})},
+messageSends: []}),
+smalltalk.HLRenameClassCommand);
+
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "isValidFor:",
+fn: function (anObject){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(anObject)._isBehavior();
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"isValidFor:",{anObject:anObject},smalltalk.HLRenameClassCommand.klass)})},
+messageSends: ["isBehavior"]}),
+smalltalk.HLRenameClassCommand.klass);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "key",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=(67);
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLRenameClassCommand.klass)})},
+messageSends: []}),
+smalltalk.HLRenameClassCommand.klass);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "label",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "Class";
+}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLRenameClassCommand.klass)})},
+messageSends: []}),
+smalltalk.HLRenameClassCommand.klass);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "menuLabel",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "Rename class...";
+}, function($ctx1) {$ctx1.fill(self,"menuLabel",{},smalltalk.HLRenameClassCommand.klass)})},
+messageSends: []}),
+smalltalk.HLRenameClassCommand.klass);
+
+
 smalltalk.addClass('HLToggleCommand', smalltalk.HLBrowserCommand, [], 'Helios-Commands-Browser');
 
 smalltalk.addMethod(

+ 348 - 0
js/Helios-Commands-Browser.js

@@ -412,6 +412,180 @@ referencedClasses: []
 smalltalk.HLCommitPackageCommand.klass);
 
 
+smalltalk.addClass('HLCopyCommand', smalltalk.HLBrowserCommand, [], 'Helios-Commands-Browser');
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "key",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=(67);
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLCopyCommand.klass)})},
+args: [],
+source: "key\x0a\x09^ 67",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLCopyCommand.klass);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "label",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "Copy";
+}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLCopyCommand.klass)})},
+args: [],
+source: "label\x0a\x09^ 'Copy'",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLCopyCommand.klass);
+
+
+smalltalk.addClass('HLCopyClassCommand', smalltalk.HLCopyCommand, [], 'Helios-Commands-Browser');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "displayLabel",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "New class name:";
+}, function($ctx1) {$ctx1.fill(self,"displayLabel",{},smalltalk.HLCopyClassCommand)})},
+args: [],
+source: "displayLabel\x0a\x09^ 'New class name:'",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLCopyClassCommand);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "execute",
+category: 'executing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._model())._copyClassTo_(_st(self)._input());
+return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLCopyClassCommand)})},
+args: [],
+source: "execute\x0a\x09self model copyClassTo: self input",
+messageSends: ["copyClassTo:", "input", "model"],
+referencedClasses: []
+}),
+smalltalk.HLCopyClassCommand);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "isActive",
+category: 'testing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(_st(_st(self)._model())._selectedClass())._notNil();
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"isActive",{},smalltalk.HLCopyClassCommand)})},
+args: [],
+source: "isActive\x0a\x09^ self model selectedClass notNil",
+messageSends: ["notNil", "selectedClass", "model"],
+referencedClasses: []
+}),
+smalltalk.HLCopyClassCommand);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "isInputRequired",
+category: 'testing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return true;
+}, function($ctx1) {$ctx1.fill(self,"isInputRequired",{},smalltalk.HLCopyClassCommand)})},
+args: [],
+source: "isInputRequired\x0a\x09^ true",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLCopyClassCommand);
+
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "isValidFor:",
+category: 'testing',
+fn: function (anObject){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(anObject)._isBehavior();
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"isValidFor:",{anObject:anObject},smalltalk.HLCopyClassCommand.klass)})},
+args: ["anObject"],
+source: "isValidFor: anObject\x0a\x09^ anObject isBehavior",
+messageSends: ["isBehavior"],
+referencedClasses: []
+}),
+smalltalk.HLCopyClassCommand.klass);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "key",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=(67);
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLCopyClassCommand.klass)})},
+args: [],
+source: "key\x0a\x09^ 67",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLCopyClassCommand.klass);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "label",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "Class";
+}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLCopyClassCommand.klass)})},
+args: [],
+source: "label\x0a\x09^ 'Class'",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLCopyClassCommand.klass);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "menuLabel",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "Copy class...";
+}, function($ctx1) {$ctx1.fill(self,"menuLabel",{},smalltalk.HLCopyClassCommand.klass)})},
+args: [],
+source: "menuLabel\x0a\x09^ 'Copy class...'",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLCopyClassCommand.klass);
+
+
 smalltalk.addClass('HLFindCommand', smalltalk.HLBrowserCommand, [], 'Helios-Commands-Browser');
 
 smalltalk.addMethod(
@@ -1421,6 +1595,180 @@ referencedClasses: []
 smalltalk.HLRemoveMethodCommand.klass);
 
 
+smalltalk.addClass('HLRenameCommand', smalltalk.HLBrowserCommand, [], 'Helios-Commands-Browser');
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "key",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=(82);
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLRenameCommand.klass)})},
+args: [],
+source: "key\x0a\x09^ 82",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLRenameCommand.klass);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "label",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "Rename";
+}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLRenameCommand.klass)})},
+args: [],
+source: "label\x0a\x09^ 'Rename'",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLRenameCommand.klass);
+
+
+smalltalk.addClass('HLRenameClassCommand', smalltalk.HLRenameCommand, [], 'Helios-Commands-Browser');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "displayLabel",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "Rename class to:";
+}, function($ctx1) {$ctx1.fill(self,"displayLabel",{},smalltalk.HLRenameClassCommand)})},
+args: [],
+source: "displayLabel\x0a\x09^ 'Rename class to:'",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLRenameClassCommand);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "execute",
+category: 'executing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._model())._renameClassTo_(_st(self)._input());
+return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLRenameClassCommand)})},
+args: [],
+source: "execute\x0a\x09self model renameClassTo: self input",
+messageSends: ["renameClassTo:", "input", "model"],
+referencedClasses: []
+}),
+smalltalk.HLRenameClassCommand);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "isActive",
+category: 'testing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(_st(_st(self)._model())._selectedClass())._notNil();
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"isActive",{},smalltalk.HLRenameClassCommand)})},
+args: [],
+source: "isActive\x0a\x09^ self model selectedClass notNil",
+messageSends: ["notNil", "selectedClass", "model"],
+referencedClasses: []
+}),
+smalltalk.HLRenameClassCommand);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "isInputRequired",
+category: 'testing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return true;
+}, function($ctx1) {$ctx1.fill(self,"isInputRequired",{},smalltalk.HLRenameClassCommand)})},
+args: [],
+source: "isInputRequired\x0a\x09^ true",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLRenameClassCommand);
+
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "isValidFor:",
+category: 'testing',
+fn: function (anObject){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(anObject)._isBehavior();
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"isValidFor:",{anObject:anObject},smalltalk.HLRenameClassCommand.klass)})},
+args: ["anObject"],
+source: "isValidFor: anObject\x0a\x09^ anObject isBehavior",
+messageSends: ["isBehavior"],
+referencedClasses: []
+}),
+smalltalk.HLRenameClassCommand.klass);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "key",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=(67);
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLRenameClassCommand.klass)})},
+args: [],
+source: "key\x0a\x09^ 67",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLRenameClassCommand.klass);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "label",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "Class";
+}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLRenameClassCommand.klass)})},
+args: [],
+source: "label\x0a\x09^ 'Class'",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLRenameClassCommand.klass);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "menuLabel",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "Rename class...";
+}, function($ctx1) {$ctx1.fill(self,"menuLabel",{},smalltalk.HLRenameClassCommand.klass)})},
+args: [],
+source: "menuLabel\x0a\x09^ 'Rename class...'",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLRenameClassCommand.klass);
+
+
 smalltalk.addClass('HLToggleCommand', smalltalk.HLBrowserCommand, [], 'Helios-Commands-Browser');
 
 smalltalk.addMethod(

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

@@ -569,9 +569,9 @@ selector: "activateFirstListItem",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-_st(self)._activateListItem_(_st(window)._jQuery_(_st(_st(_st(self["@wrapper"])._asJQuery())._find_("li"))._get_((0))));
+_st(self)._activateItem_(_st(_st(self)._items())._first());
 return self}, function($ctx1) {$ctx1.fill(self,"activateFirstListItem",{},smalltalk.HLListWidget)})},
-messageSends: ["activateListItem:", "jQuery:", "get:", "find:", "asJQuery"]}),
+messageSends: ["activateItem:", "first", "items"]}),
 smalltalk.HLListWidget);
 
 smalltalk.addMethod(
@@ -637,8 +637,12 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
 _st(self)._activateListItem_(_st(_st(window)._jQuery_(".focused .nav-pills .active"))._next());
+_st(_st(_st(window)._jQuery_(".focused .nav-pills .active"))._get())._ifEmpty_((function(){
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._activateFirstListItem();
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"activateNextListItem",{},smalltalk.HLListWidget)})},
-messageSends: ["activateListItem:", "next", "jQuery:"]}),
+messageSends: ["activateListItem:", "next", "jQuery:", "ifEmpty:", "activateFirstListItem", "get"]}),
 smalltalk.HLListWidget);
 
 smalltalk.addMethod(
@@ -1164,13 +1168,19 @@ smalltalk.method({
 selector: "defaultEnvironment",
 fn: function (){
 var self=this;
-function $HLLocalEnvironment(){return smalltalk.HLLocalEnvironment||(typeof HLLocalEnvironment=="undefined"?nil:HLLocalEnvironment)}
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($HLLocalEnvironment())._new();
-return $1;
+var $1,$2,$3;
+$1=_st(window)._parent();
+if(($receiver = $1) == nil || $receiver == undefined){
+$2=_st(self["@environment"])._new();
+return $2;
+} else {
+$1;
+};
+$3=_st(_st(_st(_st(window)._parent())._at_("smalltalk"))._at_("Environment"))._new();
+return $3;
 }, function($ctx1) {$ctx1.fill(self,"defaultEnvironment",{},smalltalk.HLManager)})},
-messageSends: ["new"]}),
+messageSends: ["ifNil:", "new", "parent", "at:"]}),
 smalltalk.HLManager);
 
 smalltalk.addMethod(

+ 22 - 12
js/Helios-Core.js

@@ -765,11 +765,11 @@ category: 'actions',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-_st(self)._activateListItem_(_st(window)._jQuery_(_st(_st(_st(self["@wrapper"])._asJQuery())._find_("li"))._get_((0))));
+_st(self)._activateItem_(_st(_st(self)._items())._first());
 return self}, function($ctx1) {$ctx1.fill(self,"activateFirstListItem",{},smalltalk.HLListWidget)})},
 args: [],
-source: "activateFirstListItem\x0a\x09self activateListItem: (window jQuery: ((wrapper asJQuery find: 'li') get: 0))",
-messageSends: ["activateListItem:", "jQuery:", "get:", "find:", "asJQuery"],
+source: "activateFirstListItem\x0a\x09self activateItem: self items first",
+messageSends: ["activateItem:", "first", "items"],
 referencedClasses: []
 }),
 smalltalk.HLListWidget);
@@ -848,10 +848,14 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
 _st(self)._activateListItem_(_st(_st(window)._jQuery_(".focused .nav-pills .active"))._next());
+_st(_st(_st(window)._jQuery_(".focused .nav-pills .active"))._get())._ifEmpty_((function(){
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._activateFirstListItem();
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"activateNextListItem",{},smalltalk.HLListWidget)})},
 args: [],
-source: "activateNextListItem\x0a\x09self activateListItem: (window jQuery: '.focused .nav-pills .active') next",
-messageSends: ["activateListItem:", "next", "jQuery:"],
+source: "activateNextListItem\x0a\x09self activateListItem: (window jQuery: '.focused .nav-pills .active') next.\x0a\x09\x0a\x09\x22select the first item if none is selected\x22\x0a\x09(window jQuery: '.focused .nav-pills .active') get ifEmpty: [\x0a\x09\x09self activateFirstListItem ]",
+messageSends: ["activateListItem:", "next", "jQuery:", "ifEmpty:", "activateFirstListItem", "get"],
 referencedClasses: []
 }),
 smalltalk.HLListWidget);
@@ -1530,16 +1534,22 @@ selector: "defaultEnvironment",
 category: 'defaults',
 fn: function (){
 var self=this;
-function $HLLocalEnvironment(){return smalltalk.HLLocalEnvironment||(typeof HLLocalEnvironment=="undefined"?nil:HLLocalEnvironment)}
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($HLLocalEnvironment())._new();
-return $1;
+var $1,$2,$3;
+$1=_st(window)._parent();
+if(($receiver = $1) == nil || $receiver == undefined){
+$2=_st(self["@environment"])._new();
+return $2;
+} else {
+$1;
+};
+$3=_st(_st(_st(_st(window)._parent())._at_("smalltalk"))._at_("Environment"))._new();
+return $3;
 }, function($ctx1) {$ctx1.fill(self,"defaultEnvironment",{},smalltalk.HLManager)})},
 args: [],
-source: "defaultEnvironment\x0a\x09^ HLLocalEnvironment new",
-messageSends: ["new"],
-referencedClasses: ["HLLocalEnvironment"]
+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:"],
+referencedClasses: []
 }),
 smalltalk.HLManager);
 

+ 0 - 541
js/Helios-Environments.deploy.js

@@ -1,541 +0,0 @@
-smalltalk.addPackage('Helios-Environments');
-smalltalk.addClass('HLEnvironment', smalltalk.Object, [], 'Helios-Environments');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addInstVarNamed:to:",
-fn: function (aString,aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(_st(aClass)._instanceVariableNames())._copy();
-_st($1)._add_(aString);
-$2=_st($1)._yourself();
-_st(_st(self)._classBuilder())._addSubclassOf_named_instanceVariableNames_package_(_st(aClass)._superclass(),_st(aClass)._name(),$2,_st(_st(aClass)._package())._name());
-return self}, function($ctx1) {$ctx1.fill(self,"addInstVarNamed:to:",{aString:aString,aClass:aClass},smalltalk.HLEnvironment)})},
-messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "superclass", "name", "add:", "copy", "instanceVariableNames", "yourself", "package", "classBuilder"]}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "availableClassNames",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"availableClassNames",{},smalltalk.HLEnvironment)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "availablePackageNames",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"availablePackageNames",{},smalltalk.HLEnvironment)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "availableProtocolsFor:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"availableProtocolsFor:",{aClass:aClass},smalltalk.HLEnvironment)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classBuilder",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self)._subclassResponsibility();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classBuilder",{},smalltalk.HLEnvironment)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classNamed:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"classNamed:",{aString:aString},smalltalk.HLEnvironment)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "commitPackage:",
-fn: function (aPackage){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"commitPackage:",{aPackage:aPackage},smalltalk.HLEnvironment)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compileClassComment:for:",
-fn: function (aString,aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aClass)._comment_(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"compileClassComment:for:",{aString:aString,aClass:aClass},smalltalk.HLEnvironment)})},
-messageSends: ["comment:"]}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compileClassDefinition:",
-fn: function (aString){
-var self=this;
-function $DoIt(){return smalltalk.DoIt||(typeof DoIt=="undefined"?nil:DoIt)}
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._eval_on_(aString,_st($DoIt())._new());
-return self}, function($ctx1) {$ctx1.fill(self,"compileClassDefinition:",{aString:aString},smalltalk.HLEnvironment)})},
-messageSends: ["eval:on:", "new"]}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compileMethod:for:protocol:",
-fn: function (sourceCode,class_,protocol){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(class_)._compile_category_(sourceCode,protocol);
-return self}, function($ctx1) {$ctx1.fill(self,"compileMethod:for:protocol:",{sourceCode:sourceCode,class_:class_,protocol:protocol},smalltalk.HLEnvironment)})},
-messageSends: ["compile:category:"]}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "eval:on:",
-fn: function (someCode,aReceiver){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self)._subclassResponsibility();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"eval:on:",{someCode:someCode,aReceiver:aReceiver},smalltalk.HLEnvironment)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "moveClass:toPackage:",
-fn: function (aClass,aPackageName){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"moveClass:toPackage:",{aClass:aClass,aPackageName:aPackageName},smalltalk.HLEnvironment)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "moveMethod:toClass:",
-fn: function (aMethod,aClassName){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"moveMethod:toClass:",{aMethod:aMethod,aClassName:aClassName},smalltalk.HLEnvironment)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "moveMethod:toProtocol:",
-fn: function (aMethod,aProtocol){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"moveMethod:toProtocol:",{aMethod:aMethod,aProtocol:aProtocol},smalltalk.HLEnvironment)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "packages",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self)._subclassResponsibility();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"packages",{},smalltalk.HLEnvironment)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._sublcassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"removeClass:",{aClass:aClass},smalltalk.HLEnvironment)})},
-messageSends: ["sublcassResponsibility"]}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeMethod:",
-fn: function (aMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._sublcassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"removeMethod:",{aMethod:aMethod},smalltalk.HLEnvironment)})},
-messageSends: ["sublcassResponsibility"]}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "systemAnnouncer",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self)._subclassResponsibility();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"systemAnnouncer",{},smalltalk.HLEnvironment)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.HLEnvironment);
-
-
-
-smalltalk.addClass('HLLocalEnvironment', smalltalk.HLEnvironment, [], 'Helios-Environments');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "availableClassNames",
-fn: function (){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st($Smalltalk())._current())._classes())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._name();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"availableClassNames",{},smalltalk.HLLocalEnvironment)})},
-messageSends: ["collect:", "name", "classes", "current"]}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "availablePackageNames",
-fn: function (){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st($Smalltalk())._current())._packages())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._name();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"availablePackageNames",{},smalltalk.HLLocalEnvironment)})},
-messageSends: ["collect:", "name", "packages", "current"]}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "availableProtocolsFor:",
-fn: function (aClass){
-var self=this;
-var protocols;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-protocols=_st(aClass)._protocols();
-$1=_st(aClass)._superclass();
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-_st(protocols)._addAll_(_st(self)._availableProtocolsFor_(_st(aClass)._superclass()));
-};
-$2=_st(_st(protocols)._asSet())._asArray();
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"availableProtocolsFor:",{aClass:aClass,protocols:protocols},smalltalk.HLLocalEnvironment)})},
-messageSends: ["protocols", "ifNotNil:", "addAll:", "availableProtocolsFor:", "superclass", "asArray", "asSet"]}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classBuilder",
-fn: function (){
-var self=this;
-function $ClassBuilder(){return smalltalk.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($ClassBuilder())._new();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classBuilder",{},smalltalk.HLLocalEnvironment)})},
-messageSends: ["new"]}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classNamed:",
-fn: function (aString){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=_st(_st($Smalltalk())._current())._at_(_st(aString)._asSymbol());
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=_st(self)._error_("Invalid class name");
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classNamed:",{aString:aString},smalltalk.HLLocalEnvironment)})},
-messageSends: ["ifNil:", "error:", "at:", "asSymbol", "current"]}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "commitPackage:",
-fn: function (aPackage){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aPackage)._commit();
-return self}, function($ctx1) {$ctx1.fill(self,"commitPackage:",{aPackage:aPackage},smalltalk.HLLocalEnvironment)})},
-messageSends: ["commit"]}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "eval:on:",
-fn: function (aString,aReceiver){
-var self=this;
-var compiler;
-function $Compiler(){return smalltalk.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-var $early={};
-try {
-compiler=_st($Compiler())._new();
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(compiler)._parseExpression_(aString);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_($Error(),(function(ex){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(window)._alert_(_st(ex)._messageText());
-throw $early=[$1];
-}, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1)})}));
-$2=_st(compiler)._evaluateExpression_on_(aString,aReceiver);
-return $2;
-}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"eval:on:",{aString:aString,aReceiver:aReceiver,compiler:compiler},smalltalk.HLLocalEnvironment)})},
-messageSends: ["new", "on:do:", "alert:", "messageText", "parseExpression:", "evaluateExpression:on:"]}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "moveClass:toPackage:",
-fn: function (aClass,aPackageName){
-var self=this;
-var package_;
-function $Package(){return smalltalk.Package||(typeof Package=="undefined"?nil:Package)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-package_=_st($Package())._named_(aPackageName);
-$1=package_;
-if(($receiver = $1) == nil || $receiver == undefined){
-_st(self)._error_("Invalid package name");
-} else {
-$1;
-};
-$2=_st(package_).__eq_eq(_st(aClass)._package());
-if(smalltalk.assert($2)){
-$3=self;
-return $3;
-};
-_st(aClass)._package_(package_);
-return self}, function($ctx1) {$ctx1.fill(self,"moveClass:toPackage:",{aClass:aClass,aPackageName:aPackageName,package_:package_},smalltalk.HLLocalEnvironment)})},
-messageSends: ["named:", "ifNil:", "error:", "ifTrue:", "==", "package", "package:"]}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "moveMethod:toClass:",
-fn: function (aMethod,aClassName){
-var self=this;
-var destinationClass;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-destinationClass=_st(_st($Smalltalk())._current())._at_(_st(aClassName)._asSymbol());
-$1=destinationClass;
-if(($receiver = $1) == nil || $receiver == undefined){
-_st(self)._error_("Invalid class name");
-} else {
-$1;
-};
-$2=_st(destinationClass).__eq_eq(_st(aMethod)._methodClass());
-if(smalltalk.assert($2)){
-$3=self;
-return $3;
-};
-_st(destinationClass)._adoptMethod_(aMethod);
-_st(_st(aMethod)._methodClass())._forsakeMethod_(aMethod);
-return self}, function($ctx1) {$ctx1.fill(self,"moveMethod:toClass:",{aMethod:aMethod,aClassName:aClassName,destinationClass:destinationClass},smalltalk.HLLocalEnvironment)})},
-messageSends: ["at:", "asSymbol", "current", "ifNil:", "error:", "ifTrue:", "==", "methodClass", "adoptMethod:", "forsakeMethod:"]}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "moveMethod:toProtocol:",
-fn: function (aMethod,aProtocol){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aMethod)._category_(aProtocol);
-return self}, function($ctx1) {$ctx1.fill(self,"moveMethod:toProtocol:",{aMethod:aMethod,aProtocol:aProtocol},smalltalk.HLLocalEnvironment)})},
-messageSends: ["category:"]}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "packages",
-fn: function (){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st($Smalltalk())._current())._packages();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"packages",{},smalltalk.HLLocalEnvironment)})},
-messageSends: ["packages", "current"]}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeClass:",
-fn: function (aClass){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st($Smalltalk())._current())._removeClass_(aClass);
-return self}, function($ctx1) {$ctx1.fill(self,"removeClass:",{aClass:aClass},smalltalk.HLLocalEnvironment)})},
-messageSends: ["removeClass:", "current"]}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeMethod:",
-fn: function (aMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(aMethod)._methodClass())._forsakeMethod_(aMethod);
-return self}, function($ctx1) {$ctx1.fill(self,"removeMethod:",{aMethod:aMethod},smalltalk.HLLocalEnvironment)})},
-messageSends: ["forsakeMethod:", "methodClass"]}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "systemAnnouncer",
-fn: function (){
-var self=this;
-function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($SystemAnnouncer())._current();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"systemAnnouncer",{},smalltalk.HLLocalEnvironment)})},
-messageSends: ["current"]}),
-smalltalk.HLLocalEnvironment);
-
-
-
-smalltalk.addClass('HLRemoteEnvironment', smalltalk.HLEnvironment, [], 'Helios-Environments');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "eval:on:",
-fn: function (someCode,aReceiver){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._notYetImplemented();
-return self}, function($ctx1) {$ctx1.fill(self,"eval:on:",{someCode:someCode,aReceiver:aReceiver},smalltalk.HLRemoteEnvironment)})},
-messageSends: ["notYetImplemented"]}),
-smalltalk.HLRemoteEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "packages",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"packages",{},smalltalk.HLRemoteEnvironment)})},
-messageSends: []}),
-smalltalk.HLRemoteEnvironment);
-
-
-
-smalltalk.addClass('HLRemoteObject', smalltalk.Object, [], 'Helios-Environments');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "doesNotUnderstand:",
-fn: function (aMessage){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"doesNotUnderstand:",{aMessage:aMessage},smalltalk.HLRemoteObject)})},
-messageSends: []}),
-smalltalk.HLRemoteObject);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspectOn:",
-fn: function (anInspector){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector},smalltalk.HLRemoteObject)})},
-messageSends: []}),
-smalltalk.HLRemoteObject);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printString",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "this is a remote object";
-}, function($ctx1) {$ctx1.fill(self,"printString",{},smalltalk.HLRemoteObject)})},
-messageSends: []}),
-smalltalk.HLRemoteObject);
-
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "adoptMethod:",
-fn: function (aMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._compile_category_(_st(aMethod)._source(),_st(aMethod)._protocol());
-return self}, function($ctx1) {$ctx1.fill(self,"adoptMethod:",{aMethod:aMethod},smalltalk.Behavior)})},
-messageSends: ["compile:category:", "source", "protocol"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "forsakeMethod:",
-fn: function (aMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._removeCompiledMethod_(aMethod);
-return self}, function($ctx1) {$ctx1.fill(self,"forsakeMethod:",{aMethod:aMethod},smalltalk.Behavior)})},
-messageSends: ["removeCompiledMethod:"]}),
-smalltalk.Behavior);
-

+ 0 - 738
js/Helios-Environments.js

@@ -1,738 +0,0 @@
-smalltalk.addPackage('Helios-Environments');
-smalltalk.addClass('HLEnvironment', smalltalk.Object, [], 'Helios-Environments');
-smalltalk.HLEnvironment.comment="Abstract class defining common behavior for local and remote environments"
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addInstVarNamed:to:",
-category: 'compiling',
-fn: function (aString,aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(_st(aClass)._instanceVariableNames())._copy();
-_st($1)._add_(aString);
-$2=_st($1)._yourself();
-_st(_st(self)._classBuilder())._addSubclassOf_named_instanceVariableNames_package_(_st(aClass)._superclass(),_st(aClass)._name(),$2,_st(_st(aClass)._package())._name());
-return self}, function($ctx1) {$ctx1.fill(self,"addInstVarNamed:to:",{aString:aString,aClass:aClass},smalltalk.HLEnvironment)})},
-args: ["aString", "aClass"],
-source: "addInstVarNamed: aString to: aClass\x0a\x09self classBuilder\x0a\x09\x09addSubclassOf: aClass superclass \x0a\x09\x09named: aClass name \x0a\x09\x09instanceVariableNames: (aClass instanceVariableNames copy add: aString; yourself)\x0a\x09\x09package: aClass package name",
-messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "superclass", "name", "add:", "copy", "instanceVariableNames", "yourself", "package", "classBuilder"],
-referencedClasses: []
-}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "availableClassNames",
-category: 'accessing',
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"availableClassNames",{},smalltalk.HLEnvironment)})},
-args: [],
-source: "availableClassNames\x0a\x09self subclassResponsibility",
-messageSends: ["subclassResponsibility"],
-referencedClasses: []
-}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "availablePackageNames",
-category: 'accessing',
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"availablePackageNames",{},smalltalk.HLEnvironment)})},
-args: [],
-source: "availablePackageNames\x0a\x09self subclassResponsibility",
-messageSends: ["subclassResponsibility"],
-referencedClasses: []
-}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "availableProtocolsFor:",
-category: 'accessing',
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"availableProtocolsFor:",{aClass:aClass},smalltalk.HLEnvironment)})},
-args: ["aClass"],
-source: "availableProtocolsFor: aClass\x0a\x09self subclassResponsibility",
-messageSends: ["subclassResponsibility"],
-referencedClasses: []
-}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classBuilder",
-category: 'accessing',
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self)._subclassResponsibility();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classBuilder",{},smalltalk.HLEnvironment)})},
-args: [],
-source: "classBuilder\x0a\x09^ self subclassResponsibility",
-messageSends: ["subclassResponsibility"],
-referencedClasses: []
-}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classNamed:",
-category: 'accessing',
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"classNamed:",{aString:aString},smalltalk.HLEnvironment)})},
-args: ["aString"],
-source: "classNamed: aString\x0a\x09self subclassResponsibility",
-messageSends: ["subclassResponsibility"],
-referencedClasses: []
-}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "commitPackage:",
-category: 'actions',
-fn: function (aPackage){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"commitPackage:",{aPackage:aPackage},smalltalk.HLEnvironment)})},
-args: ["aPackage"],
-source: "commitPackage: aPackage\x0a\x09self subclassResponsibility",
-messageSends: ["subclassResponsibility"],
-referencedClasses: []
-}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compileClassComment:for:",
-category: 'compiling',
-fn: function (aString,aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aClass)._comment_(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"compileClassComment:for:",{aString:aString,aClass:aClass},smalltalk.HLEnvironment)})},
-args: ["aString", "aClass"],
-source: "compileClassComment: aString for: aClass\x0a\x09aClass comment: aString",
-messageSends: ["comment:"],
-referencedClasses: []
-}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compileClassDefinition:",
-category: 'compiling',
-fn: function (aString){
-var self=this;
-function $DoIt(){return smalltalk.DoIt||(typeof DoIt=="undefined"?nil:DoIt)}
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._eval_on_(aString,_st($DoIt())._new());
-return self}, function($ctx1) {$ctx1.fill(self,"compileClassDefinition:",{aString:aString},smalltalk.HLEnvironment)})},
-args: ["aString"],
-source: "compileClassDefinition: aString\x0a\x09self eval: aString on: DoIt new",
-messageSends: ["eval:on:", "new"],
-referencedClasses: ["DoIt"]
-}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compileMethod:for:protocol:",
-category: 'compiling',
-fn: function (sourceCode,class_,protocol){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(class_)._compile_category_(sourceCode,protocol);
-return self}, function($ctx1) {$ctx1.fill(self,"compileMethod:for:protocol:",{sourceCode:sourceCode,class_:class_,protocol:protocol},smalltalk.HLEnvironment)})},
-args: ["sourceCode", "class", "protocol"],
-source: "compileMethod: sourceCode for: class protocol: protocol\x0a\x09class\x0a\x09\x09compile: sourceCode\x0a\x09\x09category: protocol",
-messageSends: ["compile:category:"],
-referencedClasses: []
-}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "eval:on:",
-category: 'actions',
-fn: function (someCode,aReceiver){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self)._subclassResponsibility();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"eval:on:",{someCode:someCode,aReceiver:aReceiver},smalltalk.HLEnvironment)})},
-args: ["someCode", "aReceiver"],
-source: "eval: someCode on: aReceiver\x0a\x0a\x09^ self subclassResponsibility",
-messageSends: ["subclassResponsibility"],
-referencedClasses: []
-}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "moveClass:toPackage:",
-category: 'actions',
-fn: function (aClass,aPackageName){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"moveClass:toPackage:",{aClass:aClass,aPackageName:aPackageName},smalltalk.HLEnvironment)})},
-args: ["aClass", "aPackageName"],
-source: "moveClass: aClass toPackage: aPackageName\x0a\x09self subclassResponsibility",
-messageSends: ["subclassResponsibility"],
-referencedClasses: []
-}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "moveMethod:toClass:",
-category: 'actions',
-fn: function (aMethod,aClassName){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"moveMethod:toClass:",{aMethod:aMethod,aClassName:aClassName},smalltalk.HLEnvironment)})},
-args: ["aMethod", "aClassName"],
-source: "moveMethod: aMethod toClass: aClassName\x0a\x09self subclassResponsibility",
-messageSends: ["subclassResponsibility"],
-referencedClasses: []
-}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "moveMethod:toProtocol:",
-category: 'actions',
-fn: function (aMethod,aProtocol){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"moveMethod:toProtocol:",{aMethod:aMethod,aProtocol:aProtocol},smalltalk.HLEnvironment)})},
-args: ["aMethod", "aProtocol"],
-source: "moveMethod: aMethod toProtocol: aProtocol\x0a\x09self subclassResponsibility",
-messageSends: ["subclassResponsibility"],
-referencedClasses: []
-}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "packages",
-category: 'accessing',
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self)._subclassResponsibility();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"packages",{},smalltalk.HLEnvironment)})},
-args: [],
-source: "packages\x0a\x09^ self subclassResponsibility",
-messageSends: ["subclassResponsibility"],
-referencedClasses: []
-}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeClass:",
-category: 'actions',
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._sublcassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"removeClass:",{aClass:aClass},smalltalk.HLEnvironment)})},
-args: ["aClass"],
-source: "removeClass: aClass\x0a\x09self sublcassResponsibility",
-messageSends: ["sublcassResponsibility"],
-referencedClasses: []
-}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeMethod:",
-category: 'actions',
-fn: function (aMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._sublcassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"removeMethod:",{aMethod:aMethod},smalltalk.HLEnvironment)})},
-args: ["aMethod"],
-source: "removeMethod: aMethod\x0a\x09self sublcassResponsibility",
-messageSends: ["sublcassResponsibility"],
-referencedClasses: []
-}),
-smalltalk.HLEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "systemAnnouncer",
-category: 'accessing',
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self)._subclassResponsibility();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"systemAnnouncer",{},smalltalk.HLEnvironment)})},
-args: [],
-source: "systemAnnouncer\x0a\x09^ self subclassResponsibility",
-messageSends: ["subclassResponsibility"],
-referencedClasses: []
-}),
-smalltalk.HLEnvironment);
-
-
-
-smalltalk.addClass('HLLocalEnvironment', smalltalk.HLEnvironment, [], 'Helios-Environments');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "availableClassNames",
-category: 'accessing',
-fn: function (){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st($Smalltalk())._current())._classes())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._name();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"availableClassNames",{},smalltalk.HLLocalEnvironment)})},
-args: [],
-source: "availableClassNames\x0a\x09^ Smalltalk current classes \x0a\x09\x09collect: [ :each | each name ]",
-messageSends: ["collect:", "name", "classes", "current"],
-referencedClasses: ["Smalltalk"]
-}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "availablePackageNames",
-category: 'accessing',
-fn: function (){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st($Smalltalk())._current())._packages())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._name();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"availablePackageNames",{},smalltalk.HLLocalEnvironment)})},
-args: [],
-source: "availablePackageNames\x0a\x09^ Smalltalk current packages \x0a\x09\x09collect: [ :each | each name ]",
-messageSends: ["collect:", "name", "packages", "current"],
-referencedClasses: ["Smalltalk"]
-}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "availableProtocolsFor:",
-category: 'accessing',
-fn: function (aClass){
-var self=this;
-var protocols;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-protocols=_st(aClass)._protocols();
-$1=_st(aClass)._superclass();
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-_st(protocols)._addAll_(_st(self)._availableProtocolsFor_(_st(aClass)._superclass()));
-};
-$2=_st(_st(protocols)._asSet())._asArray();
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"availableProtocolsFor:",{aClass:aClass,protocols:protocols},smalltalk.HLLocalEnvironment)})},
-args: ["aClass"],
-source: "availableProtocolsFor: aClass\x0a\x09| protocols |\x0a\x09\x0a\x09protocols := aClass protocols.\x0a\x09aClass superclass ifNotNil: [ protocols addAll: (self availableProtocolsFor: aClass superclass) ].\x0a\x09^ protocols asSet asArray",
-messageSends: ["protocols", "ifNotNil:", "addAll:", "availableProtocolsFor:", "superclass", "asArray", "asSet"],
-referencedClasses: []
-}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classBuilder",
-category: 'accessing',
-fn: function (){
-var self=this;
-function $ClassBuilder(){return smalltalk.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($ClassBuilder())._new();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classBuilder",{},smalltalk.HLLocalEnvironment)})},
-args: [],
-source: "classBuilder\x0a\x09^ ClassBuilder new",
-messageSends: ["new"],
-referencedClasses: ["ClassBuilder"]
-}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classNamed:",
-category: 'accessing',
-fn: function (aString){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=_st(_st($Smalltalk())._current())._at_(_st(aString)._asSymbol());
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=_st(self)._error_("Invalid class name");
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classNamed:",{aString:aString},smalltalk.HLLocalEnvironment)})},
-args: ["aString"],
-source: "classNamed: aString\x0a\x09^ (Smalltalk current at: aString asSymbol)\x0a\x09\x09ifNil: [ self error: 'Invalid class name' ]",
-messageSends: ["ifNil:", "error:", "at:", "asSymbol", "current"],
-referencedClasses: ["Smalltalk"]
-}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "commitPackage:",
-category: 'actions',
-fn: function (aPackage){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aPackage)._commit();
-return self}, function($ctx1) {$ctx1.fill(self,"commitPackage:",{aPackage:aPackage},smalltalk.HLLocalEnvironment)})},
-args: ["aPackage"],
-source: "commitPackage: aPackage\x0a\x09aPackage commit",
-messageSends: ["commit"],
-referencedClasses: []
-}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "eval:on:",
-category: 'actions',
-fn: function (aString,aReceiver){
-var self=this;
-var compiler;
-function $Compiler(){return smalltalk.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-var $early={};
-try {
-compiler=_st($Compiler())._new();
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(compiler)._parseExpression_(aString);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_($Error(),(function(ex){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(window)._alert_(_st(ex)._messageText());
-throw $early=[$1];
-}, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1)})}));
-$2=_st(compiler)._evaluateExpression_on_(aString,aReceiver);
-return $2;
-}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"eval:on:",{aString:aString,aReceiver:aReceiver,compiler:compiler},smalltalk.HLLocalEnvironment)})},
-args: ["aString", "aReceiver"],
-source: "eval: aString on: aReceiver\x0a\x09| compiler  |\x0a\x09compiler := Compiler new.\x0a\x09[ compiler parseExpression: aString ] on: Error do: [ :ex |\x0a\x09\x09^ window alert: ex messageText ].\x0a\x09^ compiler evaluateExpression: aString on: aReceiver",
-messageSends: ["new", "on:do:", "alert:", "messageText", "parseExpression:", "evaluateExpression:on:"],
-referencedClasses: ["Compiler", "Error"]
-}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "moveClass:toPackage:",
-category: 'actions',
-fn: function (aClass,aPackageName){
-var self=this;
-var package_;
-function $Package(){return smalltalk.Package||(typeof Package=="undefined"?nil:Package)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-package_=_st($Package())._named_(aPackageName);
-$1=package_;
-if(($receiver = $1) == nil || $receiver == undefined){
-_st(self)._error_("Invalid package name");
-} else {
-$1;
-};
-$2=_st(package_).__eq_eq(_st(aClass)._package());
-if(smalltalk.assert($2)){
-$3=self;
-return $3;
-};
-_st(aClass)._package_(package_);
-return self}, function($ctx1) {$ctx1.fill(self,"moveClass:toPackage:",{aClass:aClass,aPackageName:aPackageName,package_:package_},smalltalk.HLLocalEnvironment)})},
-args: ["aClass", "aPackageName"],
-source: "moveClass: aClass toPackage: aPackageName\x0a\x09| package |\x0a\x09\x0a\x09package := Package named: aPackageName.\x0a\x09package ifNil: [ self error: 'Invalid package name' ].\x0a\x09package == aClass package ifTrue: [ ^ self ].\x0a\x09\x0a\x09aClass package: package",
-messageSends: ["named:", "ifNil:", "error:", "ifTrue:", "==", "package", "package:"],
-referencedClasses: ["Package"]
-}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "moveMethod:toClass:",
-category: 'actions',
-fn: function (aMethod,aClassName){
-var self=this;
-var destinationClass;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-destinationClass=_st(_st($Smalltalk())._current())._at_(_st(aClassName)._asSymbol());
-$1=destinationClass;
-if(($receiver = $1) == nil || $receiver == undefined){
-_st(self)._error_("Invalid class name");
-} else {
-$1;
-};
-$2=_st(destinationClass).__eq_eq(_st(aMethod)._methodClass());
-if(smalltalk.assert($2)){
-$3=self;
-return $3;
-};
-_st(destinationClass)._adoptMethod_(aMethod);
-_st(_st(aMethod)._methodClass())._forsakeMethod_(aMethod);
-return self}, function($ctx1) {$ctx1.fill(self,"moveMethod:toClass:",{aMethod:aMethod,aClassName:aClassName,destinationClass:destinationClass},smalltalk.HLLocalEnvironment)})},
-args: ["aMethod", "aClassName"],
-source: "moveMethod: aMethod toClass: aClassName\x0a\x09| destinationClass |\x0a\x09\x0a\x09destinationClass := Smalltalk current at: aClassName asSymbol.\x0a\x09destinationClass ifNil: [ self error: 'Invalid class name' ].\x0a\x09destinationClass == aMethod methodClass ifTrue: [ ^ self ].\x0a\x09\x0a\x09destinationClass adoptMethod: aMethod.\x0a\x09aMethod methodClass forsakeMethod: aMethod.\x0a\x09",
-messageSends: ["at:", "asSymbol", "current", "ifNil:", "error:", "ifTrue:", "==", "methodClass", "adoptMethod:", "forsakeMethod:"],
-referencedClasses: ["Smalltalk"]
-}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "moveMethod:toProtocol:",
-category: 'actions',
-fn: function (aMethod,aProtocol){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aMethod)._category_(aProtocol);
-return self}, function($ctx1) {$ctx1.fill(self,"moveMethod:toProtocol:",{aMethod:aMethod,aProtocol:aProtocol},smalltalk.HLLocalEnvironment)})},
-args: ["aMethod", "aProtocol"],
-source: "moveMethod: aMethod toProtocol: aProtocol\x0a\x09aMethod category: aProtocol",
-messageSends: ["category:"],
-referencedClasses: []
-}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "packages",
-category: 'accessing',
-fn: function (){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st($Smalltalk())._current())._packages();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"packages",{},smalltalk.HLLocalEnvironment)})},
-args: [],
-source: "packages\x0a\x09^ Smalltalk current packages",
-messageSends: ["packages", "current"],
-referencedClasses: ["Smalltalk"]
-}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeClass:",
-category: 'actions',
-fn: function (aClass){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st($Smalltalk())._current())._removeClass_(aClass);
-return self}, function($ctx1) {$ctx1.fill(self,"removeClass:",{aClass:aClass},smalltalk.HLLocalEnvironment)})},
-args: ["aClass"],
-source: "removeClass: aClass\x0a\x09Smalltalk current removeClass: aClass",
-messageSends: ["removeClass:", "current"],
-referencedClasses: ["Smalltalk"]
-}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeMethod:",
-category: 'actions',
-fn: function (aMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(aMethod)._methodClass())._forsakeMethod_(aMethod);
-return self}, function($ctx1) {$ctx1.fill(self,"removeMethod:",{aMethod:aMethod},smalltalk.HLLocalEnvironment)})},
-args: ["aMethod"],
-source: "removeMethod: aMethod\x0a\x09aMethod methodClass forsakeMethod: aMethod",
-messageSends: ["forsakeMethod:", "methodClass"],
-referencedClasses: []
-}),
-smalltalk.HLLocalEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "systemAnnouncer",
-category: 'accessing',
-fn: function (){
-var self=this;
-function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($SystemAnnouncer())._current();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"systemAnnouncer",{},smalltalk.HLLocalEnvironment)})},
-args: [],
-source: "systemAnnouncer\x0a\x09^ SystemAnnouncer current",
-messageSends: ["current"],
-referencedClasses: ["SystemAnnouncer"]
-}),
-smalltalk.HLLocalEnvironment);
-
-
-
-smalltalk.addClass('HLRemoteEnvironment', smalltalk.HLEnvironment, [], 'Helios-Environments');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "eval:on:",
-category: 'actions',
-fn: function (someCode,aReceiver){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._notYetImplemented();
-return self}, function($ctx1) {$ctx1.fill(self,"eval:on:",{someCode:someCode,aReceiver:aReceiver},smalltalk.HLRemoteEnvironment)})},
-args: ["someCode", "aReceiver"],
-source: "eval: someCode on: aReceiver\x0a\x0a\x09\x22Note for future self and friends:\x0a    whatever way this compilation happens on the other side, \x0a    it should return a proxy to the remote resulting object\x22\x0a    \x0a    self notYetImplemented",
-messageSends: ["notYetImplemented"],
-referencedClasses: []
-}),
-smalltalk.HLRemoteEnvironment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "packages",
-category: 'accessing',
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"packages",{},smalltalk.HLRemoteEnvironment)})},
-args: [],
-source: "packages\x0a\x09\x22Answer the remote environment's packages\x22\x0a  \x0a\x09\x22to-do\x22\x0a    \x0a    \x22Note for future self and friends:\x0a    the problem with remote stuff is that the answers shouldn't be expected to be\x0a    received in a syncrhonous fashion. Everything network is asyc, so you *are going to deal with callbacks* here\x22",
-messageSends: [],
-referencedClasses: []
-}),
-smalltalk.HLRemoteEnvironment);
-
-
-
-smalltalk.addClass('HLRemoteObject', smalltalk.Object, [], 'Helios-Environments');
-smalltalk.HLRemoteObject.comment="This is a local proxy to a remote object.\x0aTipically useful for evaluating and inspecting and interacting with instances of a remote VM.\x0a"
-smalltalk.addMethod(
-smalltalk.method({
-selector: "doesNotUnderstand:",
-category: 'actions',
-fn: function (aMessage){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"doesNotUnderstand:",{aMessage:aMessage},smalltalk.HLRemoteObject)})},
-args: ["aMessage"],
-source: "doesNotUnderstand: aMessage\x0a\x0a\x09\x22to-do\x0a\x0a\x09aham, blah blah\x0a\x0a\x09super doesNotUnderstand: aMessage\x22",
-messageSends: [],
-referencedClasses: []
-}),
-smalltalk.HLRemoteObject);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspectOn:",
-category: 'actions',
-fn: function (anInspector){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector},smalltalk.HLRemoteObject)})},
-args: ["anInspector"],
-source: "inspectOn: anInspector\x0a\x0a\x09\x22to-do\x22\x0a\x0a\x09\x22this is a source of so much fun...\x22",
-messageSends: [],
-referencedClasses: []
-}),
-smalltalk.HLRemoteObject);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printString",
-category: 'actions',
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "this is a remote object";
-}, function($ctx1) {$ctx1.fill(self,"printString",{},smalltalk.HLRemoteObject)})},
-args: [],
-source: "printString\x0a\x09^ 'this is a remote object'",
-messageSends: [],
-referencedClasses: []
-}),
-smalltalk.HLRemoteObject);
-
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "adoptMethod:",
-category: '*Helios-Environments',
-fn: function (aMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._compile_category_(_st(aMethod)._source(),_st(aMethod)._protocol());
-return self}, function($ctx1) {$ctx1.fill(self,"adoptMethod:",{aMethod:aMethod},smalltalk.Behavior)})},
-args: ["aMethod"],
-source: "adoptMethod: aMethod\x0a\x09self \x0a\x09\x09compile: aMethod source\x0a\x09\x09category: aMethod protocol.",
-messageSends: ["compile:category:", "source", "protocol"],
-referencedClasses: []
-}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "forsakeMethod:",
-category: '*Helios-Environments',
-fn: function (aMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self)._removeCompiledMethod_(aMethod);
-return self}, function($ctx1) {$ctx1.fill(self,"forsakeMethod:",{aMethod:aMethod},smalltalk.Behavior)})},
-args: ["aMethod"],
-source: "forsakeMethod: aMethod\x0a\x09self removeCompiledMethod: aMethod",
-messageSends: ["removeCompiledMethod:"],
-referencedClasses: []
-}),
-smalltalk.Behavior);
-

+ 28 - 1
js/amber.js

@@ -290,10 +290,37 @@ amber = (function() {
 		}
 	}
 
+	that.loadHelios = function() {
+        loadCSS('helios_frame.css');
+        var frame = jQuery('<div id="helios"><iframe frameborder=0 src="../helios.html"></iframe></div>');
+
+        jQuery('body').append(frame);
+        jQuery(frame).resizable({
+            handles: 'n',
+            start: onResizeStart,
+            stop: onResizeStop,
+            resize: onResize,
+            
+        });
+
+        function onResize() {
+            jQuery('#helios').css('top', '').css('bottom', '0px');
+        }
+
+        function onResizeStart() {
+            jQuery('#helios').append('<div class="overlay"></div>')
+        }
+
+        function onResizeStop() {
+            jQuery('#helios').find('.overlay').remove();
+        }
+    };
+
 	return that;
 })();
 
-window.loadAmber = amber.load;
+window.loadAmber  = amber.load;
+window.loadHelios = amber.loadHelios;
 
 // Backward compatibility
 function toggleAmberIDE () {

+ 56 - 34
st/Helios-Browser.st

@@ -276,7 +276,9 @@ observeSystem
         on: ClassRemoved
         do: [ :ann | self onClassRemoved: ann theClass ];
 		on: ClassMoved
-        do: [ :ann | self onClassMoved: ann theClass from: ann oldPackage ]
+        do: [ :ann | self onClassMoved: ann theClass from: ann oldPackage ];
+		on: ClassRenamed
+        do: [ :ann | self onClassRenamed: ann theClass ]
 !
 
 selectItem: aClass
@@ -319,9 +321,10 @@ onClassMoved: aClass from: aPackage
 		aClass package = self model selectedPackage ])
 			ifFalse: [ ^ self ].
 	
-	(self model selectedClass == aClass and: [
-		aPackage = self model selectedPackage]) 
-			ifTrue: [ self selectItem: nil ].
+	aPackage = self model selectedPackage ifTrue: [ 
+		self 
+			selectedItem: nil;
+			selectItem: nil ].
     
     self setItemsForSelectedPackage.
     self refresh
@@ -335,6 +338,13 @@ onClassRemoved: aClass
     self refresh
 !
 
+onClassRenamed: aClass
+	aClass package = self model selectedPackage ifFalse: [ ^ self ].
+    
+    self setItemsForSelectedPackage.
+    self refresh
+!
+
 onClassSelected: aClass
 	| selectedClass |
 	
@@ -529,7 +539,9 @@ observeSystem
     	on: MethodAdded 
         do: [ :ann | self onMethodAdded: ann method ];
         on: MethodRemoved 
-        do: [ :ann | self onMethodRemoved: ann method ]
+        do: [ :ann | self onMethodRemoved: ann method ];
+		on: MethodMoved 
+        do: [ :ann | self onMethodMoved: ann method ]
 !
 
 selectItem: aSelector
@@ -559,15 +571,27 @@ onMethodAdded: aMethod
     self refresh
 !
 
+onMethodMoved: aMethod
+	self model selectedClass = aMethod methodClass ifFalse: [ ^ self ].
+    
+	self 
+		selectedItem: nil; 
+		selectItem: nil;
+		setItemsForSelectedProtocol;
+    	refresh
+!
+
 onMethodRemoved: aMethod
 	self items detect: [ :each | each = aMethod selector ] ifNone: [ ^ self ].
 
     self selectedItem ifNotNil: [
       	(aMethod methodClass = self model selectedClass and: [ aMethod selector = self selectedItem selector ])
-  			ifTrue: [ self selectItem: nil ] ].
-    self setItemsForSelectedProtocol.
+  			ifTrue: [ 
+				self selectedItem: nil; 
+				selectItem: nil ] ].
 
-self refresh
+    self setItemsForSelectedProtocol.
+	self refresh
 !
 
 onMethodSelected: aMethod
@@ -791,7 +815,10 @@ onProtocolRemoved: aString from: aClass
 	aClass = self model selectedClass ifFalse: [ ^ self ].
     
     self model selectedProtocol = aString 
-    	ifTrue: [ self selectItem: nil ].
+    	ifTrue: [ 
+			self 
+				selectedItem: nil;
+				selectItem: nil ].
         
     self setItemsForSelectedClass.
     self refresh
@@ -1009,6 +1036,12 @@ commitPackage
 		do: [ self environment commitPackage: self selectedPackage ]
 !
 
+copyClassTo: aClassName
+	self environment 
+		copyClass: self selectedClass theNonMetaClass
+		to: aClassName
+!
+
 moveClassToPackage: aPackageName
 	self environment 
 		moveClass: self selectedClass theNonMetaClass
@@ -1041,6 +1074,12 @@ removeClass
 removeMethod
 	(self manager confirm: 'Do you REALLY want to remove method ', self selectedMethod methodClass name,' >> #', self selectedMethod selector)
 		ifTrue: [ self environment removeMethod: self selectedMethod ]
+!
+
+renameClassTo: aClassName
+	self environment 
+		renameClass: self selectedClass theNonMetaClass
+		to: aClassName
 ! !
 
 !HLBrowserModel methodsFor: 'compiling'!
@@ -1056,11 +1095,15 @@ compileClassDefinition: aString
 !
 
 compileMethod: aString
+	| method |
+	
+	self withCompileErrorHandling: [ 
+		method := self environment 
+			compileMethod: aString 
+			for: self selectedClass
+			protocol: self compilationProtocol.
 
-	self withCompileErrorHandling: [ self environment 
-		compileMethod: aString 
-		for: self selectedClass
-		protocol: self compilationProtocol ]
+		self selectedMethod: method ]
 ! !
 
 !HLBrowserModel methodsFor: 'defaults'!
@@ -1340,24 +1383,3 @@ new
 	self shouldNotImplement
 ! !
 
-!CompiledMethod methodsFor: '*Helios-Browser'!
-
-isOverridden
-	| selector |
-    
-    selector := self selector.
-    self methodClass allSubclassesDo: [ :each |
-	    (each includesSelector: selector)
-        	ifTrue: [ ^ true ] ].
-	^ false
-!
-
-isOverride
-	| superclass |
-    
-    superclass := self methodClass superclass.
-	superclass ifNil: [ ^ false ].
-	
-    ^ (self methodClass superclass lookupSelector: self selector) notNil
-! !
-

+ 120 - 0
st/Helios-Commands-Browser.st

@@ -168,6 +168,66 @@ isValidFor: anObject
 	^ anObject isPackage
 ! !
 
+HLBrowserCommand subclass: #HLCopyCommand
+	instanceVariableNames: ''
+	package: 'Helios-Commands-Browser'!
+
+!HLCopyCommand class methodsFor: 'accessing'!
+
+key
+	^ 67
+!
+
+label
+	^ 'Copy'
+! !
+
+HLCopyCommand subclass: #HLCopyClassCommand
+	instanceVariableNames: ''
+	package: 'Helios-Commands-Browser'!
+
+!HLCopyClassCommand methodsFor: 'accessing'!
+
+displayLabel
+	^ 'New class name:'
+! !
+
+!HLCopyClassCommand methodsFor: 'executing'!
+
+execute
+	self model copyClassTo: self input
+! !
+
+!HLCopyClassCommand methodsFor: 'testing'!
+
+isActive
+	^ self model selectedClass notNil
+!
+
+isInputRequired
+	^ true
+! !
+
+!HLCopyClassCommand class methodsFor: 'accessing'!
+
+key
+	^ 67
+!
+
+label
+	^ 'Class'
+!
+
+menuLabel
+	^ 'Copy class...'
+! !
+
+!HLCopyClassCommand class methodsFor: 'testing'!
+
+isValidFor: anObject
+	^ anObject isBehavior
+! !
+
 HLBrowserCommand subclass: #HLFindCommand
 	instanceVariableNames: ''
 	package: 'Helios-Commands-Browser'!
@@ -512,6 +572,66 @@ isValidFor: anObject
 	^ anObject isCompiledMethod
 ! !
 
+HLBrowserCommand subclass: #HLRenameCommand
+	instanceVariableNames: ''
+	package: 'Helios-Commands-Browser'!
+
+!HLRenameCommand class methodsFor: 'accessing'!
+
+key
+	^ 82
+!
+
+label
+	^ 'Rename'
+! !
+
+HLRenameCommand subclass: #HLRenameClassCommand
+	instanceVariableNames: ''
+	package: 'Helios-Commands-Browser'!
+
+!HLRenameClassCommand methodsFor: 'accessing'!
+
+displayLabel
+	^ 'Rename class to:'
+! !
+
+!HLRenameClassCommand methodsFor: 'executing'!
+
+execute
+	self model renameClassTo: self input
+! !
+
+!HLRenameClassCommand methodsFor: 'testing'!
+
+isActive
+	^ self model selectedClass notNil
+!
+
+isInputRequired
+	^ true
+! !
+
+!HLRenameClassCommand class methodsFor: 'accessing'!
+
+key
+	^ 67
+!
+
+label
+	^ 'Class'
+!
+
+menuLabel
+	^ 'Rename class...'
+! !
+
+!HLRenameClassCommand class methodsFor: 'testing'!
+
+isValidFor: anObject
+	^ anObject isBehavior
+! !
+
 HLBrowserCommand subclass: #HLToggleCommand
 	instanceVariableNames: ''
 	package: 'Helios-Commands-Browser'!

+ 12 - 3
st/Helios-Core.st

@@ -275,7 +275,7 @@ selectedItem: anObject
 !HLListWidget methodsFor: 'actions'!
 
 activateFirstListItem
-	self activateListItem: (window jQuery: ((wrapper asJQuery find: 'li') get: 0))
+	self activateItem: self items first
 !
 
 activateItem: anObject
@@ -308,7 +308,11 @@ activateListItem: aListItem
 !
 
 activateNextListItem
-	self activateListItem: (window jQuery: '.focused .nav-pills .active') next
+	self activateListItem: (window jQuery: '.focused .nav-pills .active') next.
+	
+	"select the first item if none is selected"
+	(window jQuery: '.focused .nav-pills .active') get ifEmpty: [
+		self activateFirstListItem ]
 !
 
 activatePreviousListItem
@@ -553,7 +557,12 @@ removeTab: aTab
 !HLManager methodsFor: 'defaults'!
 
 defaultEnvironment
-	^ HLLocalEnvironment new
+	"If helios is loaded from within a frame, answer the parent window environment"
+	
+	window parent ifNil: [ ^ environment new ].
+	
+	^ ((window parent at: 'smalltalk')
+		at: #Environment) new
 ! !
 
 !HLManager methodsFor: 'initialization'!

+ 0 - 248
st/Helios-Environments.st

@@ -1,248 +0,0 @@
-Smalltalk current createPackage: 'Helios-Environments'!
-Object subclass: #HLEnvironment
-	instanceVariableNames: ''
-	package: 'Helios-Environments'!
-!HLEnvironment commentStamp!
-Abstract class defining common behavior for local and remote environments!
-
-!HLEnvironment methodsFor: 'accessing'!
-
-availableClassNames
-	self subclassResponsibility
-!
-
-availablePackageNames
-	self subclassResponsibility
-!
-
-availableProtocolsFor: aClass
-	self subclassResponsibility
-!
-
-classBuilder
-	^ self subclassResponsibility
-!
-
-classNamed: aString
-	self subclassResponsibility
-!
-
-packages
-	^ self subclassResponsibility
-!
-
-systemAnnouncer
-	^ self subclassResponsibility
-! !
-
-!HLEnvironment methodsFor: 'actions'!
-
-commitPackage: aPackage
-	self subclassResponsibility
-!
-
-eval: someCode on: aReceiver
-
-	^ self subclassResponsibility
-!
-
-moveClass: aClass toPackage: aPackageName
-	self subclassResponsibility
-!
-
-moveMethod: aMethod toClass: aClassName
-	self subclassResponsibility
-!
-
-moveMethod: aMethod toProtocol: aProtocol
-	self subclassResponsibility
-!
-
-removeClass: aClass
-	self sublcassResponsibility
-!
-
-removeMethod: aMethod
-	self sublcassResponsibility
-! !
-
-!HLEnvironment methodsFor: 'compiling'!
-
-addInstVarNamed: aString to: aClass
-	self classBuilder
-		addSubclassOf: aClass superclass 
-		named: aClass name 
-		instanceVariableNames: (aClass instanceVariableNames copy add: aString; yourself)
-		package: aClass package name
-!
-
-compileClassComment: aString for: aClass
-	aClass comment: aString
-!
-
-compileClassDefinition: aString
-	self eval: aString on: DoIt new
-!
-
-compileMethod: sourceCode for: class protocol: protocol
-	class
-		compile: sourceCode
-		category: protocol
-! !
-
-HLEnvironment subclass: #HLLocalEnvironment
-	instanceVariableNames: ''
-	package: 'Helios-Environments'!
-
-!HLLocalEnvironment methodsFor: 'accessing'!
-
-availableClassNames
-	^ Smalltalk current classes 
-		collect: [ :each | each name ]
-!
-
-availablePackageNames
-	^ Smalltalk current packages 
-		collect: [ :each | each name ]
-!
-
-availableProtocolsFor: aClass
-	| protocols |
-	
-	protocols := aClass protocols.
-	aClass superclass ifNotNil: [ protocols addAll: (self availableProtocolsFor: aClass superclass) ].
-	^ protocols asSet asArray
-!
-
-classBuilder
-	^ ClassBuilder new
-!
-
-classNamed: aString
-	^ (Smalltalk current at: aString asSymbol)
-		ifNil: [ self error: 'Invalid class name' ]
-!
-
-packages
-	^ Smalltalk current packages
-!
-
-systemAnnouncer
-	^ SystemAnnouncer current
-! !
-
-!HLLocalEnvironment methodsFor: 'actions'!
-
-commitPackage: aPackage
-	aPackage commit
-!
-
-eval: aString on: aReceiver
-	| compiler  |
-	compiler := Compiler new.
-	[ compiler parseExpression: aString ] on: Error do: [ :ex |
-		^ window alert: ex messageText ].
-	^ compiler evaluateExpression: aString on: aReceiver
-!
-
-moveClass: aClass toPackage: aPackageName
-	| package |
-	
-	package := Package named: aPackageName.
-	package ifNil: [ self error: 'Invalid package name' ].
-	package == aClass package ifTrue: [ ^ self ].
-	
-	aClass package: package
-!
-
-moveMethod: aMethod toClass: aClassName
-	| destinationClass |
-	
-	destinationClass := Smalltalk current at: aClassName asSymbol.
-	destinationClass ifNil: [ self error: 'Invalid class name' ].
-	destinationClass == aMethod methodClass ifTrue: [ ^ self ].
-	
-	destinationClass adoptMethod: aMethod.
-	aMethod methodClass forsakeMethod: aMethod.
-!
-
-moveMethod: aMethod toProtocol: aProtocol
-	aMethod category: aProtocol
-!
-
-removeClass: aClass
-	Smalltalk current removeClass: aClass
-!
-
-removeMethod: aMethod
-	aMethod methodClass forsakeMethod: aMethod
-! !
-
-HLEnvironment subclass: #HLRemoteEnvironment
-	instanceVariableNames: ''
-	package: 'Helios-Environments'!
-
-!HLRemoteEnvironment methodsFor: 'accessing'!
-
-packages
-	"Answer the remote environment's packages"
-  
-	"to-do"
-    
-    "Note for future self and friends:
-    the problem with remote stuff is that the answers shouldn't be expected to be
-    received in a syncrhonous fashion. Everything network is asyc, so you *are going to deal with callbacks* here"
-! !
-
-!HLRemoteEnvironment methodsFor: 'actions'!
-
-eval: someCode on: aReceiver
-
-	"Note for future self and friends:
-    whatever way this compilation happens on the other side, 
-    it should return a proxy to the remote resulting object"
-    
-    self notYetImplemented
-! !
-
-Object subclass: #HLRemoteObject
-	instanceVariableNames: ''
-	package: 'Helios-Environments'!
-!HLRemoteObject commentStamp!
-This is a local proxy to a remote object.
-Tipically useful for evaluating and inspecting and interacting with instances of a remote VM.!
-
-!HLRemoteObject methodsFor: 'actions'!
-
-doesNotUnderstand: aMessage
-
-	"to-do
-
-	aham, blah blah
-
-	super doesNotUnderstand: aMessage"
-!
-
-inspectOn: anInspector
-
-	"to-do"
-
-	"this is a source of so much fun..."
-!
-
-printString
-	^ 'this is a remote object'
-! !
-
-!Behavior methodsFor: '*Helios-Environments'!
-
-adoptMethod: aMethod
-	self 
-		compile: aMethod source
-		category: aMethod protocol.
-!
-
-forsakeMethod: aMethod
-	self removeCompiledMethod: aMethod
-! !
-