|
@@ -609,6 +609,23 @@ smalltalk.HLBrowserBottomWidget);
|
|
|
|
|
|
|
|
|
smalltalk.addClass('HLBrowserModel', smalltalk.HLToolModel, ['showInstance', 'showComment'], 'Helios-Browser');
|
|
|
+smalltalk.addMethod(
|
|
|
+smalltalk.method({
|
|
|
+selector: "editComment",
|
|
|
+category: 'commands actions',
|
|
|
+fn: function (){
|
|
|
+var self=this;
|
|
|
+function $HLEditComment(){return smalltalk.HLEditComment||(typeof HLEditComment=="undefined"?nil:HLEditComment)}
|
|
|
+return smalltalk.withContext(function($ctx1) {
|
|
|
+_st(_st(self)._announcer())._announce_(_st($HLEditComment())._new());
|
|
|
+return self}, function($ctx1) {$ctx1.fill(self,"editComment",{},smalltalk.HLBrowserModel)})},
|
|
|
+args: [],
|
|
|
+source: "editComment\x0a\x09self announcer announce: HLEditComment new",
|
|
|
+messageSends: ["announce:", "new", "announcer"],
|
|
|
+referencedClasses: ["HLEditComment"]
|
|
|
+}),
|
|
|
+smalltalk.HLBrowserModel);
|
|
|
+
|
|
|
smalltalk.addMethod(
|
|
|
smalltalk.method({
|
|
|
selector: "focusOnClasses",
|
|
@@ -710,6 +727,22 @@ referencedClasses: []
|
|
|
}),
|
|
|
smalltalk.HLBrowserModel);
|
|
|
|
|
|
+smalltalk.addMethod(
|
|
|
+smalltalk.method({
|
|
|
+selector: "setClassComment:",
|
|
|
+category: 'actions',
|
|
|
+fn: function (aString){
|
|
|
+var self=this;
|
|
|
+return smalltalk.withContext(function($ctx1) {
|
|
|
+_st(_st(self)._environment())._setClassCommentOf_to_(_st(_st(self)._selectedClass())._theNonMetaClass(),aString);
|
|
|
+return self}, function($ctx1) {$ctx1.fill(self,"setClassComment:",{aString:aString},smalltalk.HLBrowserModel)})},
|
|
|
+args: ["aString"],
|
|
|
+source: "setClassComment: aString\x0a\x09self environment\x0a\x09\x09setClassCommentOf: self selectedClass theNonMetaClass\x0a\x09\x09to: aString",
|
|
|
+messageSends: ["setClassCommentOf:to:", "theNonMetaClass", "selectedClass", "environment"],
|
|
|
+referencedClasses: []
|
|
|
+}),
|
|
|
+smalltalk.HLBrowserModel);
|
|
|
+
|
|
|
smalltalk.addMethod(
|
|
|
smalltalk.method({
|
|
|
selector: "showComment",
|
|
@@ -1265,6 +1298,7 @@ function $ClassRemoved(){return smalltalk.ClassRemoved||(typeof ClassRemoved=="u
|
|
|
function $ClassMoved(){return smalltalk.ClassMoved||(typeof ClassMoved=="undefined"?nil:ClassMoved)}
|
|
|
function $ClassRenamed(){return smalltalk.ClassRenamed||(typeof ClassRenamed=="undefined"?nil:ClassRenamed)}
|
|
|
function $ClassMigrated(){return smalltalk.ClassMigrated||(typeof ClassMigrated=="undefined"?nil:ClassMigrated)}
|
|
|
+function $ClassCommentChanged(){return smalltalk.ClassCommentChanged||(typeof ClassCommentChanged=="undefined"?nil:ClassCommentChanged)}
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
var $1,$2;
|
|
|
$1=_st(_st(self)._model())._systemAnnouncer();
|
|
@@ -1272,12 +1306,13 @@ _st($1)._on_send_to_($ClassAdded(),"onClassAdded:",self);
|
|
|
_st($1)._on_send_to_($ClassRemoved(),"onClassRemoved:",self);
|
|
|
_st($1)._on_send_to_($ClassMoved(),"onClassMoved:",self);
|
|
|
_st($1)._on_send_to_($ClassRenamed(),"onClassRenamed:",self);
|
|
|
-$2=_st($1)._on_send_to_($ClassMigrated(),"onClassMigrated:",self);
|
|
|
+_st($1)._on_send_to_($ClassMigrated(),"onClassMigrated:",self);
|
|
|
+$2=_st($1)._on_send_to_($ClassCommentChanged(),"onClassCommentChanged:",self);
|
|
|
return self}, function($ctx1) {$ctx1.fill(self,"observeSystem",{},smalltalk.HLClassesListWidget)})},
|
|
|
args: [],
|
|
|
-source: "observeSystem\x0a\x09self model systemAnnouncer\x0a \x09on: ClassAdded\x0a\x09\x09send: #onClassAdded:\x0a\x09\x09to: self;\x0a\x09\x09\x0a on: ClassRemoved\x0a send: #onClassRemoved:\x0a\x09\x09to: self;\x0a\x09\x09\x0a\x09\x09on: ClassMoved\x0a\x09\x09send: #onClassMoved:\x0a\x09\x09to: self;\x0a\x09\x09\x0a\x09\x09on: ClassRenamed\x0a\x09\x09send: #onClassRenamed:\x0a\x09\x09to: self;\x0a\x09\x09\x0a\x09\x09on: ClassMigrated\x0a\x09\x09send: #onClassMigrated:\x0a\x09\x09to: self",
|
|
|
+source: "observeSystem\x0a\x09self model systemAnnouncer\x0a \x09on: ClassAdded\x0a\x09\x09send: #onClassAdded:\x0a\x09\x09to: self;\x0a\x09\x09\x0a on: ClassRemoved\x0a send: #onClassRemoved:\x0a\x09\x09to: self;\x0a\x09\x09\x0a\x09\x09on: ClassMoved\x0a\x09\x09send: #onClassMoved:\x0a\x09\x09to: self;\x0a\x09\x09\x0a\x09\x09on: ClassRenamed\x0a\x09\x09send: #onClassRenamed:\x0a\x09\x09to: self;\x0a\x09\x09\x0a\x09\x09on: ClassMigrated\x0a\x09\x09send: #onClassMigrated:\x0a\x09\x09to: self;\x0a\x09\x09\x0a\x09\x09on: ClassCommentChanged\x0a send: #onClassCommentChanged:\x0a\x09\x09to: self",
|
|
|
messageSends: ["on:send:to:", "systemAnnouncer", "model"],
|
|
|
-referencedClasses: ["ClassAdded", "ClassRemoved", "ClassMoved", "ClassRenamed", "ClassMigrated"]
|
|
|
+referencedClasses: ["ClassAdded", "ClassRemoved", "ClassMoved", "ClassRenamed", "ClassMigrated", "ClassCommentChanged"]
|
|
|
}),
|
|
|
smalltalk.HLClassesListWidget);
|
|
|
|
|
@@ -1309,6 +1344,30 @@ referencedClasses: []
|
|
|
}),
|
|
|
smalltalk.HLClassesListWidget);
|
|
|
|
|
|
+smalltalk.addMethod(
|
|
|
+smalltalk.method({
|
|
|
+selector: "onClassCommentChanged:",
|
|
|
+category: 'reactions',
|
|
|
+fn: function (anAnnouncement){
|
|
|
+var self=this;
|
|
|
+var class_;
|
|
|
+return smalltalk.withContext(function($ctx1) {
|
|
|
+var $1,$2;
|
|
|
+class_=_st(anAnnouncement)._theClass();
|
|
|
+$1=_st(_st(class_)._package()).__eq(_st(_st(self)._model())._selectedPackage());
|
|
|
+if(! smalltalk.assert($1)){
|
|
|
+$2=self;
|
|
|
+return $2;
|
|
|
+};
|
|
|
+_st(self)._refresh();
|
|
|
+return self}, function($ctx1) {$ctx1.fill(self,"onClassCommentChanged:",{anAnnouncement:anAnnouncement,class_:class_},smalltalk.HLClassesListWidget)})},
|
|
|
+args: ["anAnnouncement"],
|
|
|
+source: "onClassCommentChanged: anAnnouncement\x0a\x09| class |\x0a\x09class := anAnnouncement theClass.\x0a\x0a\x09class package = self model selectedPackage ifFalse: [ ^ self ].\x0a \x0a self refresh",
|
|
|
+messageSends: ["theClass", "ifFalse:", "=", "selectedPackage", "model", "package", "refresh"],
|
|
|
+referencedClasses: []
|
|
|
+}),
|
|
|
+smalltalk.HLClassesListWidget);
|
|
|
+
|
|
|
smalltalk.addMethod(
|
|
|
smalltalk.method({
|
|
|
selector: "onClassMigrated:",
|
|
@@ -1383,23 +1442,19 @@ fn: function (anAnnouncement){
|
|
|
var self=this;
|
|
|
var class_;
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-var $1,$2,$3;
|
|
|
+var $1,$2;
|
|
|
class_=_st(anAnnouncement)._theClass();
|
|
|
$1=_st(_st(class_)._package()).__eq(_st(_st(self)._model())._selectedPackage());
|
|
|
if(! smalltalk.assert($1)){
|
|
|
$2=self;
|
|
|
return $2;
|
|
|
};
|
|
|
-$3=_st(class_).__eq(_st(_st(self)._model())._selectedClass());
|
|
|
-if(smalltalk.assert($3)){
|
|
|
-_st(self)._selectItem_(nil);
|
|
|
-};
|
|
|
_st(self)._setItemsForSelectedPackage();
|
|
|
_st(self)._refresh();
|
|
|
return self}, function($ctx1) {$ctx1.fill(self,"onClassRemoved:",{anAnnouncement:anAnnouncement,class_:class_},smalltalk.HLClassesListWidget)})},
|
|
|
args: ["anAnnouncement"],
|
|
|
-source: "onClassRemoved: anAnnouncement\x0a\x09| class |\x0a\x09class := anAnnouncement theClass.\x0a\x0a\x09class package = self model selectedPackage ifFalse: [ ^ self ].\x0a class = self model selectedClass ifTrue: [ self selectItem: nil ].\x0a \x0a self setItemsForSelectedPackage.\x0a self refresh",
|
|
|
-messageSends: ["theClass", "ifFalse:", "=", "selectedPackage", "model", "package", "ifTrue:", "selectItem:", "selectedClass", "setItemsForSelectedPackage", "refresh"],
|
|
|
+source: "onClassRemoved: anAnnouncement\x0a\x09| class |\x0a\x09class := anAnnouncement theClass.\x0a\x0a\x09class package = self model selectedPackage ifFalse: [ ^ self ].\x0a \x0a self setItemsForSelectedPackage.\x0a self refresh",
|
|
|
+messageSends: ["theClass", "ifFalse:", "=", "selectedPackage", "model", "package", "setItemsForSelectedPackage", "refresh"],
|
|
|
referencedClasses: []
|
|
|
}),
|
|
|
smalltalk.HLClassesListWidget);
|
|
@@ -1943,6 +1998,22 @@ referencedClasses: []
|
|
|
}),
|
|
|
smalltalk.HLDocumentationWidget);
|
|
|
|
|
|
+smalltalk.addMethod(
|
|
|
+smalltalk.method({
|
|
|
+selector: "editDocumentation",
|
|
|
+category: 'actions',
|
|
|
+fn: function (){
|
|
|
+var self=this;
|
|
|
+return smalltalk.withContext(function($ctx1) {
|
|
|
+_st(_st(self)._model())._editComment();
|
|
|
+return self}, function($ctx1) {$ctx1.fill(self,"editDocumentation",{},smalltalk.HLDocumentationWidget)})},
|
|
|
+args: [],
|
|
|
+source: "editDocumentation\x0a\x09self model editComment",
|
|
|
+messageSends: ["editComment", "model"],
|
|
|
+referencedClasses: []
|
|
|
+}),
|
|
|
+smalltalk.HLDocumentationWidget);
|
|
|
+
|
|
|
smalltalk.addMethod(
|
|
|
smalltalk.method({
|
|
|
selector: "head",
|
|
@@ -1993,12 +2064,15 @@ category: 'accessing',
|
|
|
fn: function (aModel){
|
|
|
var self=this;
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
+var $1,$2;
|
|
|
self["@model"]=aModel;
|
|
|
-_st(self)._observeModel();
|
|
|
+$1=self;
|
|
|
+_st($1)._observeSystem();
|
|
|
+$2=_st($1)._observeModel();
|
|
|
return self}, function($ctx1) {$ctx1.fill(self,"model:",{aModel:aModel},smalltalk.HLDocumentationWidget)})},
|
|
|
args: ["aModel"],
|
|
|
-source: "model: aModel\x0a\x09model := aModel.\x0a\x09self observeModel",
|
|
|
-messageSends: ["observeModel"],
|
|
|
+source: "model: aModel\x0a\x09model := aModel.\x0a\x09self \x0a\x09\x09observeSystem;\x0a\x09\x09observeModel",
|
|
|
+messageSends: ["observeSystem", "observeModel"],
|
|
|
referencedClasses: []
|
|
|
}),
|
|
|
smalltalk.HLDocumentationWidget);
|
|
@@ -2010,13 +2084,54 @@ category: 'actions',
|
|
|
fn: function (){
|
|
|
var self=this;
|
|
|
function $HLClassSelected(){return smalltalk.HLClassSelected||(typeof HLClassSelected=="undefined"?nil:HLClassSelected)}
|
|
|
+function $HLEditComment(){return smalltalk.HLEditComment||(typeof HLEditComment=="undefined"?nil:HLEditComment)}
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-_st(_st(_st(self)._model())._announcer())._on_send_to_($HLClassSelected(),"onClassSelected:",self);
|
|
|
+var $1,$2;
|
|
|
+$1=_st(_st(self)._model())._announcer();
|
|
|
+_st($1)._on_send_to_($HLClassSelected(),"onClassSelected:",self);
|
|
|
+$2=_st($1)._on_send_to_($HLEditComment(),"onEditDocumentation",self);
|
|
|
return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{},smalltalk.HLDocumentationWidget)})},
|
|
|
args: [],
|
|
|
-source: "observeModel\x0a\x09self model announcer \x0a\x09\x09on: HLClassSelected\x0a\x09\x09send: #onClassSelected:\x0a\x09\x09to: self",
|
|
|
+source: "observeModel\x0a\x09self model announcer \x0a\x09\x09on: HLClassSelected\x0a\x09\x09send: #onClassSelected:\x0a\x09\x09to: self;\x0a\x09\x09\x0a\x09\x09on: HLEditComment\x0a\x09\x09send: #onEditDocumentation\x0a\x09\x09to: self",
|
|
|
messageSends: ["on:send:to:", "announcer", "model"],
|
|
|
-referencedClasses: ["HLClassSelected"]
|
|
|
+referencedClasses: ["HLClassSelected", "HLEditComment"]
|
|
|
+}),
|
|
|
+smalltalk.HLDocumentationWidget);
|
|
|
+
|
|
|
+smalltalk.addMethod(
|
|
|
+smalltalk.method({
|
|
|
+selector: "observeSystem",
|
|
|
+category: 'actions',
|
|
|
+fn: function (){
|
|
|
+var self=this;
|
|
|
+function $ClassCommentChanged(){return smalltalk.ClassCommentChanged||(typeof ClassCommentChanged=="undefined"?nil:ClassCommentChanged)}
|
|
|
+return smalltalk.withContext(function($ctx1) {
|
|
|
+_st(_st(_st(self)._model())._systemAnnouncer())._on_send_to_($ClassCommentChanged(),"onClassCommentChanged:",self);
|
|
|
+return self}, function($ctx1) {$ctx1.fill(self,"observeSystem",{},smalltalk.HLDocumentationWidget)})},
|
|
|
+args: [],
|
|
|
+source: "observeSystem\x0a\x09self model systemAnnouncer \x0a\x09\x09on: ClassCommentChanged\x0a\x09\x09send: #onClassCommentChanged:\x0a\x09\x09to: self",
|
|
|
+messageSends: ["on:send:to:", "systemAnnouncer", "model"],
|
|
|
+referencedClasses: ["ClassCommentChanged"]
|
|
|
+}),
|
|
|
+smalltalk.HLDocumentationWidget);
|
|
|
+
|
|
|
+smalltalk.addMethod(
|
|
|
+smalltalk.method({
|
|
|
+selector: "onClassCommentChanged:",
|
|
|
+category: 'reactions',
|
|
|
+fn: function (anAnnouncement){
|
|
|
+var self=this;
|
|
|
+return smalltalk.withContext(function($ctx1) {
|
|
|
+var $1;
|
|
|
+$1=_st(_st(anAnnouncement)._theClass()).__eq(_st(_st(_st(self)._model())._selectedClass())._theNonMetaClass());
|
|
|
+if(smalltalk.assert($1)){
|
|
|
+_st(self)._refresh();
|
|
|
+};
|
|
|
+return self}, function($ctx1) {$ctx1.fill(self,"onClassCommentChanged:",{anAnnouncement:anAnnouncement},smalltalk.HLDocumentationWidget)})},
|
|
|
+args: ["anAnnouncement"],
|
|
|
+source: "onClassCommentChanged: anAnnouncement\x0a\x09anAnnouncement theClass = self model selectedClass theNonMetaClass\x0a\x09\x09ifTrue: [ self refresh ]",
|
|
|
+messageSends: ["ifTrue:", "refresh", "=", "theNonMetaClass", "selectedClass", "model", "theClass"],
|
|
|
+referencedClasses: []
|
|
|
}),
|
|
|
smalltalk.HLDocumentationWidget);
|
|
|
|
|
@@ -2036,6 +2151,25 @@ referencedClasses: []
|
|
|
}),
|
|
|
smalltalk.HLDocumentationWidget);
|
|
|
|
|
|
+smalltalk.addMethod(
|
|
|
+smalltalk.method({
|
|
|
+selector: "onEditDocumentation",
|
|
|
+category: 'reactions',
|
|
|
+fn: function (){
|
|
|
+var self=this;
|
|
|
+return smalltalk.withContext(function($ctx1) {
|
|
|
+_st(self)._request_value_do_(_st(_st(_st(_st(_st(self)._model())._selectedClass())._theNonMetaClass())._name()).__comma(" comment"),_st(_st(_st(_st(self)._model())._selectedClass())._theNonMetaClass())._comment(),(function(comment){
|
|
|
+return smalltalk.withContext(function($ctx2) {
|
|
|
+return _st(self)._setClassComment_(comment);
|
|
|
+}, function($ctx2) {$ctx2.fillBlock({comment:comment},$ctx1)})}));
|
|
|
+return self}, function($ctx1) {$ctx1.fill(self,"onEditDocumentation",{},smalltalk.HLDocumentationWidget)})},
|
|
|
+args: [],
|
|
|
+source: "onEditDocumentation\x0a\x09self \x0a\x09\x09request: self model selectedClass theNonMetaClass name, ' comment'\x0a\x09\x09value: self model selectedClass theNonMetaClass comment\x0a\x09\x09do: [ :comment | self setClassComment: comment ]",
|
|
|
+messageSends: ["request:value:do:", ",", "name", "theNonMetaClass", "selectedClass", "model", "comment", "setClassComment:"],
|
|
|
+referencedClasses: []
|
|
|
+}),
|
|
|
+smalltalk.HLDocumentationWidget);
|
|
|
+
|
|
|
smalltalk.addMethod(
|
|
|
smalltalk.method({
|
|
|
selector: "renderContentOn:",
|
|
@@ -2069,22 +2203,35 @@ fn: function (html){
|
|
|
var self=this;
|
|
|
function $Showdown(){return smalltalk.Showdown||(typeof Showdown=="undefined"?nil:Showdown)}
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-var $1,$2,$3;
|
|
|
+var $1,$2,$4,$5,$3,$6,$7;
|
|
|
$1=_st(self)._selectedItem();
|
|
|
if(($receiver = $1) == nil || $receiver == undefined){
|
|
|
$1;
|
|
|
} else {
|
|
|
_st(self)._renderInheritanceOn_(html);
|
|
|
-_st(_st(html)._h1())._with_("Overview");
|
|
|
-$2=_st(html)._div();
|
|
|
-_st($2)._class_("markdown");
|
|
|
-$3=_st($2)._asJQuery();
|
|
|
-_st($3)._html_(_st(_st(_st($Showdown())._at_("converter"))._new())._makeHtml_(_st(self)._documentation()));
|
|
|
+$2=_st(html)._h1();
|
|
|
+_st($2)._with_("Overview");
|
|
|
+$3=_st($2)._with_((function(){
|
|
|
+return smalltalk.withContext(function($ctx2) {
|
|
|
+$4=_st(html)._button();
|
|
|
+_st($4)._class_("button default");
|
|
|
+_st($4)._with_("Edit");
|
|
|
+$5=_st($4)._onClick_((function(){
|
|
|
+return smalltalk.withContext(function($ctx3) {
|
|
|
+return _st(self)._editDocumentation();
|
|
|
+}, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
|
|
|
+return $5;
|
|
|
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
|
|
|
+$3;
|
|
|
+$6=_st(html)._div();
|
|
|
+_st($6)._class_("markdown");
|
|
|
+$7=_st($6)._asJQuery();
|
|
|
+_st($7)._html_(_st(_st(_st($Showdown())._at_("converter"))._new())._makeHtml_(_st(self)._documentation()));
|
|
|
};
|
|
|
return self}, function($ctx1) {$ctx1.fill(self,"renderDocOn:",{html:html},smalltalk.HLDocumentationWidget)})},
|
|
|
args: ["html"],
|
|
|
-source: "renderDocOn: html\x0a\x09self selectedItem ifNotNil: [\x0a\x09\x09self renderInheritanceOn: html.\x0a\x09\x09html h1 with: 'Overview'.\x0a\x09\x09(html div \x0a\x09\x09\x09class: 'markdown';\x0a\x09\x09\x09asJQuery) html: ((Showdown at: 'converter') new makeHtml: self documentation) ]",
|
|
|
-messageSends: ["ifNotNil:", "renderInheritanceOn:", "with:", "h1", "html:", "makeHtml:", "documentation", "new", "at:", "class:", "div", "asJQuery", "selectedItem"],
|
|
|
+source: "renderDocOn: html\x0a\x09self selectedItem ifNotNil: [\x0a\x09\x09self renderInheritanceOn: html.\x0a\x09\x09html h1 \x0a\x09\x09\x09with: 'Overview';\x0a\x09\x09\x09with: [ \x0a\x09\x09\x09\x09html button\x0a\x09\x09\x09\x09\x09class: 'button default';\x0a\x09\x09\x09\x09\x09with: 'Edit';\x0a\x09\x09\x09\x09\x09onClick: [ self editDocumentation ] ].\x0a\x09\x09(html div \x0a\x09\x09\x09class: 'markdown';\x0a\x09\x09\x09asJQuery) html: ((Showdown at: 'converter') new makeHtml: self documentation) ]",
|
|
|
+messageSends: ["ifNotNil:", "renderInheritanceOn:", "with:", "h1", "class:", "button", "onClick:", "editDocumentation", "html:", "makeHtml:", "documentation", "new", "at:", "div", "asJQuery", "selectedItem"],
|
|
|
referencedClasses: ["Showdown"]
|
|
|
}),
|
|
|
smalltalk.HLDocumentationWidget);
|
|
@@ -2183,6 +2330,22 @@ referencedClasses: []
|
|
|
}),
|
|
|
smalltalk.HLDocumentationWidget);
|
|
|
|
|
|
+smalltalk.addMethod(
|
|
|
+smalltalk.method({
|
|
|
+selector: "setClassComment:",
|
|
|
+category: 'reactions',
|
|
|
+fn: function (aString){
|
|
|
+var self=this;
|
|
|
+return smalltalk.withContext(function($ctx1) {
|
|
|
+_st(_st(self)._model())._setClassComment_(aString);
|
|
|
+return self}, function($ctx1) {$ctx1.fill(self,"setClassComment:",{aString:aString},smalltalk.HLDocumentationWidget)})},
|
|
|
+args: ["aString"],
|
|
|
+source: "setClassComment: aString\x0a\x09self model setClassComment: aString",
|
|
|
+messageSends: ["setClassComment:", "model"],
|
|
|
+referencedClasses: []
|
|
|
+}),
|
|
|
+smalltalk.HLDocumentationWidget);
|
|
|
+
|
|
|
smalltalk.addMethod(
|
|
|
smalltalk.method({
|
|
|
selector: "unregister",
|