Browse Source

Helios:
- New HLModel common superclass of Helios models
- Beginning of a references browser

Nicolas Petton 11 years ago
parent
commit
eca56cb334

+ 1 - 1
helios.html

@@ -14,7 +14,7 @@
   </head> 
   <body> 
     
-    <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>
+    <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-References', 'Helios-Announcements']}) </script>
     <link rel="stylesheet" type="text/css" href='css/helios.css' />
     
     <div id="helper">Loading Helios...</div>

+ 27 - 0
js/Helios-Announcements.deploy.js

@@ -301,6 +301,33 @@ smalltalk.addClass('HLRefreshRequested', smalltalk.HLAnnouncement, [], 'Helios-A
 smalltalk.addClass('HLSaveSourceCode', smalltalk.HLAnnouncement, [], 'Helios-Announcements');
 
 
+smalltalk.addClass('HLSearchReferences', smalltalk.HLAnnouncement, ['searchString'], 'Helios-Announcements');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "searchString",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=self["@searchString"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"searchString",{},smalltalk.HLSearchReferences)})},
+messageSends: []}),
+smalltalk.HLSearchReferences);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "searchString:",
+fn: function (aString){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+self["@searchString"]=aString;
+return self}, function($ctx1) {$ctx1.fill(self,"searchString:",{aString:aString},smalltalk.HLSearchReferences)})},
+messageSends: []}),
+smalltalk.HLSearchReferences);
+
+
+
 smalltalk.addClass('HLShowCommentToggled', smalltalk.HLAnnouncement, [], 'Helios-Announcements');
 
 

+ 37 - 0
js/Helios-Announcements.js

@@ -391,6 +391,43 @@ smalltalk.addClass('HLRefreshRequested', smalltalk.HLAnnouncement, [], 'Helios-A
 smalltalk.addClass('HLSaveSourceCode', smalltalk.HLAnnouncement, [], 'Helios-Announcements');
 
 
+smalltalk.addClass('HLSearchReferences', smalltalk.HLAnnouncement, ['searchString'], 'Helios-Announcements');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "searchString",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=self["@searchString"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"searchString",{},smalltalk.HLSearchReferences)})},
+args: [],
+source: "searchString\x0a\x09^ searchString",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLSearchReferences);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "searchString:",
+category: 'accessing',
+fn: function (aString){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+self["@searchString"]=aString;
+return self}, function($ctx1) {$ctx1.fill(self,"searchString:",{aString:aString},smalltalk.HLSearchReferences)})},
+args: ["aString"],
+source: "searchString: aString\x0a\x09searchString := aString",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLSearchReferences);
+
+
+
 smalltalk.addClass('HLShowCommentToggled', smalltalk.HLAnnouncement, [], 'Helios-Announcements');
 
 

+ 6 - 70
js/Helios-Browser.deploy.js

@@ -2059,7 +2059,7 @@ smalltalk.HLProtocolsListWidget);
 
 
 
-smalltalk.addClass('HLBrowserModel', smalltalk.Object, ['announcer', 'environment', 'selectedPackage', 'selectedClass', 'selectedProtocol', 'selectedSelector', 'showInstance', 'showComment'], 'Helios-Browser');
+smalltalk.addClass('HLBrowserModel', smalltalk.HLModel, ['selectedPackage', 'selectedClass', 'selectedProtocol', 'selectedSelector', 'showInstance', 'showComment'], 'Helios-Browser');
 smalltalk.addMethod(
 smalltalk.method({
 selector: "addInstVarNamed:",
@@ -2091,22 +2091,15 @@ smalltalk.HLBrowserModel);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "announcer",
+selector: "allSelectors",
 fn: function (){
 var self=this;
-function $Announcer(){return smalltalk.Announcer||(typeof Announcer=="undefined"?nil:Announcer)}
 return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@announcer"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@announcer"]=_st($Announcer())._new();
-$1=self["@announcer"];
-} else {
-$1=$2;
-};
+var $1;
+$1=_st(_st(self)._environment())._allSelectors();
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"announcer",{},smalltalk.HLBrowserModel)})},
-messageSends: ["ifNil:", "new"]}),
+}, function($ctx1) {$ctx1.fill(self,"allSelectors",{},smalltalk.HLBrowserModel)})},
+messageSends: ["allSelectors", "environment"]}),
 smalltalk.HLBrowserModel);
 
 smalltalk.addMethod(
@@ -2259,36 +2252,6 @@ return self}, function($ctx1) {$ctx1.fill(self,"copyClassTo:",{aClassName:aClass
 messageSends: ["copyClass:to:", "theNonMetaClass", "selectedClass", "environment"]}),
 smalltalk.HLBrowserModel);
 
-smalltalk.addMethod(
-smalltalk.method({
-selector: "environment",
-fn: function (){
-var self=this;
-function $HLManager(){return smalltalk.HLManager||(typeof HLManager=="undefined"?nil:HLManager)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@environment"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=_st(_st($HLManager())._current())._environment();
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"environment",{},smalltalk.HLBrowserModel)})},
-messageSends: ["ifNil:", "environment", "current"]}),
-smalltalk.HLBrowserModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "environment:",
-fn: function (anEnvironment){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@environment"]=anEnvironment;
-return self}, function($ctx1) {$ctx1.fill(self,"environment:",{anEnvironment:anEnvironment},smalltalk.HLBrowserModel)})},
-messageSends: []}),
-smalltalk.HLBrowserModel);
-
 smalltalk.addMethod(
 smalltalk.method({
 selector: "focusOnClasses",
@@ -2407,20 +2370,6 @@ return self}, function($ctx1) {$ctx1.fill(self,"handleUnkownVariableError:",{anE
 messageSends: ["announce:", "error:", "new", "yourself", "announcer"]}),
 smalltalk.HLBrowserModel);
 
-smalltalk.addMethod(
-smalltalk.method({
-selector: "manager",
-fn: function (){
-var self=this;
-function $HLManager(){return smalltalk.HLManager||(typeof HLManager=="undefined"?nil:HLManager)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($HLManager())._current();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"manager",{},smalltalk.HLBrowserModel)})},
-messageSends: ["current"]}),
-smalltalk.HLBrowserModel);
-
 smalltalk.addMethod(
 smalltalk.method({
 selector: "moveClassToPackage:",
@@ -2814,19 +2763,6 @@ return self}, function($ctx1) {$ctx1.fill(self,"showInstance:",{aBoolean:aBoolea
 messageSends: ["ifNotNil:", "selectedClass:", "ifTrue:ifFalse:", "theNonMetaClass", "selectedClass", "theMetaClass", "announce:", "new", "announcer"]}),
 smalltalk.HLBrowserModel);
 
-smalltalk.addMethod(
-smalltalk.method({
-selector: "systemAnnouncer",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self)._environment())._systemAnnouncer();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"systemAnnouncer",{},smalltalk.HLBrowserModel)})},
-messageSends: ["systemAnnouncer", "environment"]}),
-smalltalk.HLBrowserModel);
-
 smalltalk.addMethod(
 smalltalk.method({
 selector: "unclassifiedProtocol",

+ 8 - 92
js/Helios-Browser.js

@@ -2629,7 +2629,7 @@ smalltalk.HLProtocolsListWidget);
 
 
 
-smalltalk.addClass('HLBrowserModel', smalltalk.Object, ['announcer', 'environment', 'selectedPackage', 'selectedClass', 'selectedProtocol', 'selectedSelector', 'showInstance', 'showComment'], 'Helios-Browser');
+smalltalk.addClass('HLBrowserModel', smalltalk.HLModel, ['selectedPackage', 'selectedClass', 'selectedProtocol', 'selectedSelector', 'showInstance', 'showComment'], 'Helios-Browser');
 smalltalk.addMethod(
 smalltalk.method({
 selector: "addInstVarNamed:",
@@ -2671,26 +2671,19 @@ smalltalk.HLBrowserModel);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "announcer",
+selector: "allSelectors",
 category: 'accessing',
 fn: function (){
 var self=this;
-function $Announcer(){return smalltalk.Announcer||(typeof Announcer=="undefined"?nil:Announcer)}
 return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@announcer"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@announcer"]=_st($Announcer())._new();
-$1=self["@announcer"];
-} else {
-$1=$2;
-};
+var $1;
+$1=_st(_st(self)._environment())._allSelectors();
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"announcer",{},smalltalk.HLBrowserModel)})},
+}, function($ctx1) {$ctx1.fill(self,"allSelectors",{},smalltalk.HLBrowserModel)})},
 args: [],
-source: "announcer\x0a\x09^ announcer ifNil: [ announcer := Announcer new ]",
-messageSends: ["ifNil:", "new"],
-referencedClasses: ["Announcer"]
+source: "allSelectors\x0a\x09^ self environment allSelectors",
+messageSends: ["allSelectors", "environment"],
+referencedClasses: []
 }),
 smalltalk.HLBrowserModel);
 
@@ -2894,46 +2887,6 @@ referencedClasses: []
 }),
 smalltalk.HLBrowserModel);
 
-smalltalk.addMethod(
-smalltalk.method({
-selector: "environment",
-category: 'accessing',
-fn: function (){
-var self=this;
-function $HLManager(){return smalltalk.HLManager||(typeof HLManager=="undefined"?nil:HLManager)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@environment"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=_st(_st($HLManager())._current())._environment();
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"environment",{},smalltalk.HLBrowserModel)})},
-args: [],
-source: "environment\x0a\x09^ environment ifNil: [ HLManager current environment ]",
-messageSends: ["ifNil:", "environment", "current"],
-referencedClasses: ["HLManager"]
-}),
-smalltalk.HLBrowserModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "environment:",
-category: 'accessing',
-fn: function (anEnvironment){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@environment"]=anEnvironment;
-return self}, function($ctx1) {$ctx1.fill(self,"environment:",{anEnvironment:anEnvironment},smalltalk.HLBrowserModel)})},
-args: ["anEnvironment"],
-source: "environment: anEnvironment\x0a\x09environment := anEnvironment",
-messageSends: [],
-referencedClasses: []
-}),
-smalltalk.HLBrowserModel);
-
 smalltalk.addMethod(
 smalltalk.method({
 selector: "focusOnClasses",
@@ -3092,25 +3045,6 @@ referencedClasses: ["HLUnknownVariableErrorRaised"]
 }),
 smalltalk.HLBrowserModel);
 
-smalltalk.addMethod(
-smalltalk.method({
-selector: "manager",
-category: 'accessing',
-fn: function (){
-var self=this;
-function $HLManager(){return smalltalk.HLManager||(typeof HLManager=="undefined"?nil:HLManager)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($HLManager())._current();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"manager",{},smalltalk.HLBrowserModel)})},
-args: [],
-source: "manager\x0a\x09^ HLManager current",
-messageSends: ["current"],
-referencedClasses: ["HLManager"]
-}),
-smalltalk.HLBrowserModel);
-
 smalltalk.addMethod(
 smalltalk.method({
 selector: "moveClassToPackage:",
@@ -3619,24 +3553,6 @@ referencedClasses: ["HLShowInstanceToggled"]
 }),
 smalltalk.HLBrowserModel);
 
-smalltalk.addMethod(
-smalltalk.method({
-selector: "systemAnnouncer",
-category: 'accessing',
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self)._environment())._systemAnnouncer();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"systemAnnouncer",{},smalltalk.HLBrowserModel)})},
-args: [],
-source: "systemAnnouncer\x0a\x09^ self environment systemAnnouncer",
-messageSends: ["systemAnnouncer", "environment"],
-referencedClasses: []
-}),
-smalltalk.HLBrowserModel);
-
 smalltalk.addMethod(
 smalltalk.method({
 selector: "unclassifiedProtocol",

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

@@ -517,6 +517,92 @@ messageSends: []}),
 smalltalk.HLFindClassCommand.klass);
 
 
+smalltalk.addClass('HLFindReferencesCommand', smalltalk.HLFindCommand, [], 'Helios-Commands-Browser');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "displayLabel",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "find references";
+}, function($ctx1) {$ctx1.fill(self,"displayLabel",{},smalltalk.HLFindReferencesCommand)})},
+messageSends: []}),
+smalltalk.HLFindReferencesCommand);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "execute",
+fn: function (){
+var self=this;
+function $HLReferences(){return smalltalk.HLReferences||(typeof HLReferences=="undefined"?nil:HLReferences)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=_st($HLReferences())._new();
+_st($1)._open();
+$2=_st($1)._search_(_st(self)._input());
+return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLFindReferencesCommand)})},
+messageSends: ["open", "new", "search:", "input"]}),
+smalltalk.HLFindReferencesCommand);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "inputCompletion",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(_st(_st(self)._model())._availableClassNames()).__comma(_st(_st(self)._model())._allSelectors());
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"inputCompletion",{},smalltalk.HLFindReferencesCommand)})},
+messageSends: [",", "allSelectors", "model", "availableClassNames"]}),
+smalltalk.HLFindReferencesCommand);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "inputLabel",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "Find references of";
+}, function($ctx1) {$ctx1.fill(self,"inputLabel",{},smalltalk.HLFindReferencesCommand)})},
+messageSends: []}),
+smalltalk.HLFindReferencesCommand);
+
+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.HLFindReferencesCommand)})},
+messageSends: []}),
+smalltalk.HLFindReferencesCommand);
+
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "key",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "r";
+}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLFindReferencesCommand.klass)})},
+messageSends: []}),
+smalltalk.HLFindReferencesCommand.klass);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "label",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "References";
+}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLFindReferencesCommand.klass)})},
+messageSends: []}),
+smalltalk.HLFindReferencesCommand.klass);
+
+
 smalltalk.addClass('HLMoveToCommand', smalltalk.HLBrowserCommand, [], 'Helios-Commands-Browser');
 
 smalltalk.addMethod(

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

@@ -732,6 +732,127 @@ referencedClasses: []
 smalltalk.HLFindClassCommand.klass);
 
 
+smalltalk.addClass('HLFindReferencesCommand', smalltalk.HLFindCommand, [], 'Helios-Commands-Browser');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "displayLabel",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "find references";
+}, function($ctx1) {$ctx1.fill(self,"displayLabel",{},smalltalk.HLFindReferencesCommand)})},
+args: [],
+source: "displayLabel\x0a\x09^ 'find references'",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLFindReferencesCommand);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "execute",
+category: 'executing',
+fn: function (){
+var self=this;
+function $HLReferences(){return smalltalk.HLReferences||(typeof HLReferences=="undefined"?nil:HLReferences)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=_st($HLReferences())._new();
+_st($1)._open();
+$2=_st($1)._search_(_st(self)._input());
+return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLFindReferencesCommand)})},
+args: [],
+source: "execute\x0a\x09HLReferences new \x0a\x09\x09open;\x0a\x09\x09search: self input",
+messageSends: ["open", "new", "search:", "input"],
+referencedClasses: ["HLReferences"]
+}),
+smalltalk.HLFindReferencesCommand);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "inputCompletion",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(_st(_st(self)._model())._availableClassNames()).__comma(_st(_st(self)._model())._allSelectors());
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"inputCompletion",{},smalltalk.HLFindReferencesCommand)})},
+args: [],
+source: "inputCompletion\x0a\x09^ self model availableClassNames, self model allSelectors",
+messageSends: [",", "allSelectors", "model", "availableClassNames"],
+referencedClasses: []
+}),
+smalltalk.HLFindReferencesCommand);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "inputLabel",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "Find references of";
+}, function($ctx1) {$ctx1.fill(self,"inputLabel",{},smalltalk.HLFindReferencesCommand)})},
+args: [],
+source: "inputLabel\x0a\x09^ 'Find references of'",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLFindReferencesCommand);
+
+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.HLFindReferencesCommand)})},
+args: [],
+source: "isInputRequired\x0a\x09^ true",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLFindReferencesCommand);
+
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "key",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "r";
+}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLFindReferencesCommand.klass)})},
+args: [],
+source: "key\x0a\x09^ 'r'",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLFindReferencesCommand.klass);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "label",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "References";
+}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLFindReferencesCommand.klass)})},
+args: [],
+source: "label\x0a\x09^ 'References'",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLFindReferencesCommand.klass);
+
+
 smalltalk.addClass('HLMoveToCommand', smalltalk.HLBrowserCommand, [], 'Helios-Commands-Browser');
 
 smalltalk.addMethod(

+ 79 - 0
js/Helios-Core.deploy.js

@@ -1,4 +1,83 @@
 smalltalk.addPackage('Helios-Core');
+smalltalk.addClass('HLModel', smalltalk.Object, ['announcer', 'environment'], 'Helios-Core');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "announcer",
+fn: function (){
+var self=this;
+function $Announcer(){return smalltalk.Announcer||(typeof Announcer=="undefined"?nil:Announcer)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
+$2=self["@announcer"];
+if(($receiver = $2) == nil || $receiver == undefined){
+self["@announcer"]=_st($Announcer())._new();
+$1=self["@announcer"];
+} else {
+$1=$2;
+};
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"announcer",{},smalltalk.HLModel)})},
+messageSends: ["ifNil:", "new"]}),
+smalltalk.HLModel);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "environment",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
+$2=self["@environment"];
+if(($receiver = $2) == nil || $receiver == undefined){
+$1=_st(_st(self)._manager())._environment();
+} else {
+$1=$2;
+};
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"environment",{},smalltalk.HLModel)})},
+messageSends: ["ifNil:", "environment", "manager"]}),
+smalltalk.HLModel);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "environment:",
+fn: function (anEnvironment){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+self["@environment"]=anEnvironment;
+return self}, function($ctx1) {$ctx1.fill(self,"environment:",{anEnvironment:anEnvironment},smalltalk.HLModel)})},
+messageSends: []}),
+smalltalk.HLModel);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "manager",
+fn: function (){
+var self=this;
+function $HLManager(){return smalltalk.HLManager||(typeof HLManager=="undefined"?nil:HLManager)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st($HLManager())._current();
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"manager",{},smalltalk.HLModel)})},
+messageSends: ["current"]}),
+smalltalk.HLModel);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "systemAnnouncer",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(_st(self)._environment())._systemAnnouncer();
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"systemAnnouncer",{},smalltalk.HLModel)})},
+messageSends: ["systemAnnouncer", "environment"]}),
+smalltalk.HLModel);
+
+
+
 smalltalk.addClass('HLTab', smalltalk.Widget, ['widget', 'label', 'root'], 'Helios-Core');
 smalltalk.addMethod(
 smalltalk.method({

+ 104 - 0
js/Helios-Core.js

@@ -1,4 +1,108 @@
 smalltalk.addPackage('Helios-Core');
+smalltalk.addClass('HLModel', smalltalk.Object, ['announcer', 'environment'], 'Helios-Core');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "announcer",
+category: 'accessing',
+fn: function (){
+var self=this;
+function $Announcer(){return smalltalk.Announcer||(typeof Announcer=="undefined"?nil:Announcer)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
+$2=self["@announcer"];
+if(($receiver = $2) == nil || $receiver == undefined){
+self["@announcer"]=_st($Announcer())._new();
+$1=self["@announcer"];
+} else {
+$1=$2;
+};
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"announcer",{},smalltalk.HLModel)})},
+args: [],
+source: "announcer\x0a\x09^ announcer ifNil: [ announcer := Announcer new ]",
+messageSends: ["ifNil:", "new"],
+referencedClasses: ["Announcer"]
+}),
+smalltalk.HLModel);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "environment",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
+$2=self["@environment"];
+if(($receiver = $2) == nil || $receiver == undefined){
+$1=_st(_st(self)._manager())._environment();
+} else {
+$1=$2;
+};
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"environment",{},smalltalk.HLModel)})},
+args: [],
+source: "environment\x0a\x09^ environment ifNil: [ self manager environment ]",
+messageSends: ["ifNil:", "environment", "manager"],
+referencedClasses: []
+}),
+smalltalk.HLModel);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "environment:",
+category: 'accessing',
+fn: function (anEnvironment){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+self["@environment"]=anEnvironment;
+return self}, function($ctx1) {$ctx1.fill(self,"environment:",{anEnvironment:anEnvironment},smalltalk.HLModel)})},
+args: ["anEnvironment"],
+source: "environment: anEnvironment\x0a\x09environment := anEnvironment",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLModel);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "manager",
+category: 'accessing',
+fn: function (){
+var self=this;
+function $HLManager(){return smalltalk.HLManager||(typeof HLManager=="undefined"?nil:HLManager)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st($HLManager())._current();
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"manager",{},smalltalk.HLModel)})},
+args: [],
+source: "manager\x0a\x09^ HLManager current",
+messageSends: ["current"],
+referencedClasses: ["HLManager"]
+}),
+smalltalk.HLModel);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "systemAnnouncer",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(_st(self)._environment())._systemAnnouncer();
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"systemAnnouncer",{},smalltalk.HLModel)})},
+args: [],
+source: "systemAnnouncer\x0a\x09^ self environment systemAnnouncer",
+messageSends: ["systemAnnouncer", "environment"],
+referencedClasses: []
+}),
+smalltalk.HLModel);
+
+
+
 smalltalk.addClass('HLTab', smalltalk.Widget, ['widget', 'label', 'root'], 'Helios-Core');
 smalltalk.addMethod(
 smalltalk.method({

+ 482 - 0
js/Helios-References.deploy.js

@@ -0,0 +1,482 @@
+smalltalk.addPackage('Helios-References');
+smalltalk.addClass('HLReferences', smalltalk.HLWidget, ['model', 'sendersListWidget', 'implementorsListWidget', 'classReferencesListWidget', 'regexpListWidget', 'sourceCodeWidget'], 'Helios-References');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "classReferencesListWidget",
+fn: function (){
+var self=this;
+function $HLClassReferencesListWidget(){return smalltalk.HLClassReferencesListWidget||(typeof HLClassReferencesListWidget=="undefined"?nil:HLClassReferencesListWidget)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
+$2=self["@classReferencesListWidget"];
+if(($receiver = $2) == nil || $receiver == undefined){
+self["@classReferencesListWidget"]=_st($HLClassReferencesListWidget())._on_(_st(self)._model());
+self["@classReferencesListWidget"];
+$1=_st(self["@classReferencesListWidget"])._next_(_st(self)._regexpListWidget());
+} else {
+$1=$2;
+};
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"classReferencesListWidget",{},smalltalk.HLReferences)})},
+messageSends: ["ifNil:", "on:", "model", "next:", "regexpListWidget"]}),
+smalltalk.HLReferences);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "implementorsListWidget",
+fn: function (){
+var self=this;
+function $HLImplementorsListWidget(){return smalltalk.HLImplementorsListWidget||(typeof HLImplementorsListWidget=="undefined"?nil:HLImplementorsListWidget)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
+$2=self["@implementorsListWidget"];
+if(($receiver = $2) == nil || $receiver == undefined){
+self["@implementorsListWidget"]=_st($HLImplementorsListWidget())._on_(_st(self)._model());
+self["@implementorsListWidget"];
+$1=_st(self["@implementorsListWidget"])._next_(_st(self)._classReferencesListWidget());
+} else {
+$1=$2;
+};
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"implementorsListWidget",{},smalltalk.HLReferences)})},
+messageSends: ["ifNil:", "on:", "model", "next:", "classReferencesListWidget"]}),
+smalltalk.HLReferences);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "model",
+fn: function (){
+var self=this;
+function $HLReferencesModel(){return smalltalk.HLReferencesModel||(typeof HLReferencesModel=="undefined"?nil:HLReferencesModel)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$4,$1;
+$2=self["@model"];
+if(($receiver = $2) == nil || $receiver == undefined){
+$3=_st($HLReferencesModel())._new();
+_st($3)._environment_(_st(_st(self)._manager())._environment());
+$4=_st($3)._yourself();
+self["@model"]=$4;
+$1=self["@model"];
+} else {
+$1=$2;
+};
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"model",{},smalltalk.HLReferences)})},
+messageSends: ["ifNil:", "environment:", "environment", "manager", "new", "yourself"]}),
+smalltalk.HLReferences);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "model:",
+fn: function (aModel){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+self["@model"]=aModel;
+return self}, function($ctx1) {$ctx1.fill(self,"model:",{aModel:aModel},smalltalk.HLReferences)})},
+messageSends: []}),
+smalltalk.HLReferences);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "open",
+fn: function (){
+var self=this;
+function $HLTab(){return smalltalk.HLTab||(typeof HLTab=="undefined"?nil:HLTab)}
+function $HLManager(){return smalltalk.HLManager||(typeof HLManager=="undefined"?nil:HLManager)}
+return smalltalk.withContext(function($ctx1) { 
+_st(_st($HLManager())._current())._addTab_(_st($HLTab())._on_labelled_(self,_st(_st(self)._class())._tabLabel()));
+return self}, function($ctx1) {$ctx1.fill(self,"open",{},smalltalk.HLReferences)})},
+messageSends: ["addTab:", "on:labelled:", "tabLabel", "class", "current"]}),
+smalltalk.HLReferences);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "regexpListWidget",
+fn: function (){
+var self=this;
+function $HLRegexpListWidget(){return smalltalk.HLRegexpListWidget||(typeof HLRegexpListWidget=="undefined"?nil:HLRegexpListWidget)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
+$2=self["@regexpListWidget"];
+if(($receiver = $2) == nil || $receiver == undefined){
+self["@regexpListWidget"]=_st($HLRegexpListWidget())._on_(_st(self)._model());
+self["@regexpListWidget"];
+$1=_st(self["@regexpListWidget"])._next_(_st(self)._sourceCodeWidget());
+} else {
+$1=$2;
+};
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"regexpListWidget",{},smalltalk.HLReferences)})},
+messageSends: ["ifNil:", "on:", "model", "next:", "sourceCodeWidget"]}),
+smalltalk.HLReferences);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "renderContentOn:",
+fn: function (html){
+var self=this;
+function $HLVerticalSplitter(){return smalltalk.HLVerticalSplitter||(typeof HLVerticalSplitter=="undefined"?nil:HLVerticalSplitter)}
+function $HLHorizontalSplitter(){return smalltalk.HLHorizontalSplitter||(typeof HLHorizontalSplitter=="undefined"?nil:HLHorizontalSplitter)}
+function $HLContainer(){return smalltalk.HLContainer||(typeof HLContainer=="undefined"?nil:HLContainer)}
+return smalltalk.withContext(function($ctx1) { 
+_st(html)._with_(_st($HLContainer())._with_(_st($HLHorizontalSplitter())._with_with_(_st($HLVerticalSplitter())._with_with_(_st($HLVerticalSplitter())._with_with_(_st(self)._sendersListWidget(),_st(self)._implementorsListWidget()),_st($HLVerticalSplitter())._with_with_(_st(self)._classReferencesListWidget(),_st(self)._regexpListWidget())),_st(self)._sourceCodeWidget())));
+_st(_st(self)._sendersListWidget())._focus();
+return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLReferences)})},
+messageSends: ["with:", "with:with:", "sendersListWidget", "implementorsListWidget", "classReferencesListWidget", "regexpListWidget", "sourceCodeWidget", "focus"]}),
+smalltalk.HLReferences);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "search:",
+fn: function (aString){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._model())._search_(aString);
+return self}, function($ctx1) {$ctx1.fill(self,"search:",{aString:aString},smalltalk.HLReferences)})},
+messageSends: ["search:", "model"]}),
+smalltalk.HLReferences);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "sendersListWidget",
+fn: function (){
+var self=this;
+function $HLSendersListWidget(){return smalltalk.HLSendersListWidget||(typeof HLSendersListWidget=="undefined"?nil:HLSendersListWidget)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
+$2=self["@sendersListWidget"];
+if(($receiver = $2) == nil || $receiver == undefined){
+self["@sendersListWidget"]=_st($HLSendersListWidget())._on_(_st(self)._model());
+self["@sendersListWidget"];
+$1=_st(self["@sendersListWidget"])._next_(_st(self)._implementorsListWidget());
+} else {
+$1=$2;
+};
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"sendersListWidget",{},smalltalk.HLReferences)})},
+messageSends: ["ifNil:", "on:", "model", "next:", "implementorsListWidget"]}),
+smalltalk.HLReferences);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "sourceCodeWidget",
+fn: function (){
+var self=this;
+function $HLSourceCodeWidget(){return smalltalk.HLSourceCodeWidget||(typeof HLSourceCodeWidget=="undefined"?nil:HLSourceCodeWidget)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
+$2=self["@sourceCodeWidget"];
+if(($receiver = $2) == nil || $receiver == undefined){
+self["@sourceCodeWidget"]=_st($HLSourceCodeWidget())._on_(_st(self)._model());
+$1=self["@sourceCodeWidget"];
+} else {
+$1=$2;
+};
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"sourceCodeWidget",{},smalltalk.HLReferences)})},
+messageSends: ["ifNil:", "on:", "model"]}),
+smalltalk.HLReferences);
+
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "canBeOpenAsTab",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return false;
+}, function($ctx1) {$ctx1.fill(self,"canBeOpenAsTab",{},smalltalk.HLReferences.klass)})},
+messageSends: []}),
+smalltalk.HLReferences.klass);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "tabLabel",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "References";
+}, function($ctx1) {$ctx1.fill(self,"tabLabel",{},smalltalk.HLReferences.klass)})},
+messageSends: []}),
+smalltalk.HLReferences.klass);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "tabPriority",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=(100);
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"tabPriority",{},smalltalk.HLReferences.klass)})},
+messageSends: []}),
+smalltalk.HLReferences.klass);
+
+
+smalltalk.addClass('HLReferencesListWidget', smalltalk.HLNavigationListWidget, ['model'], 'Helios-References');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "label",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "List";
+}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLReferencesListWidget)})},
+messageSends: []}),
+smalltalk.HLReferencesListWidget);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "model",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=self["@model"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"model",{},smalltalk.HLReferencesListWidget)})},
+messageSends: []}),
+smalltalk.HLReferencesListWidget);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "model:",
+fn: function (aModel){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+self["@model"]=aModel;
+_st(self)._observeModel();
+return self}, function($ctx1) {$ctx1.fill(self,"model:",{aModel:aModel},smalltalk.HLReferencesListWidget)})},
+messageSends: ["observeModel"]}),
+smalltalk.HLReferencesListWidget);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "observeModel",
+fn: function (){
+var self=this;
+function $HLSearchReferences(){return smalltalk.HLSearchReferences||(typeof HLSearchReferences=="undefined"?nil:HLSearchReferences)}
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(_st(self)._model())._announcer())._on_do_($HLSearchReferences(),(function(ann){
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._onSearchReferences_(_st(ann)._searchString());
+}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
+return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{},smalltalk.HLReferencesListWidget)})},
+messageSends: ["on:do:", "onSearchReferences:", "searchString", "announcer", "model"]}),
+smalltalk.HLReferencesListWidget);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "onSearchReferences:",
+fn: function (aString){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._subclassResponsibility();
+return self}, function($ctx1) {$ctx1.fill(self,"onSearchReferences:",{aString:aString},smalltalk.HLReferencesListWidget)})},
+messageSends: ["subclassResponsibility"]}),
+smalltalk.HLReferencesListWidget);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "renderContentOn:",
+fn: function (html){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._renderHeadOn_(html);
+smalltalk.HLNavigationListWidget.fn.prototype._renderContentOn_.apply(_st(self), [html]);
+return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLReferencesListWidget)})},
+messageSends: ["renderHeadOn:", "renderContentOn:"]}),
+smalltalk.HLReferencesListWidget);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "renderHeadOn:",
+fn: function (html){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=_st(html)._div();
+_st($1)._class_("list-label");
+$2=_st($1)._with_((function(){
+return smalltalk.withContext(function($ctx2) {
+return _st(html)._with_(_st(self)._label());
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+return self}, function($ctx1) {$ctx1.fill(self,"renderHeadOn:",{html:html},smalltalk.HLReferencesListWidget)})},
+messageSends: ["class:", "div", "with:", "label"]}),
+smalltalk.HLReferencesListWidget);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "renderItemLabel:on:",
+fn: function (aMethod,html){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(html)._with_(_st(_st(_st(_st(aMethod)._methodClass())._name()).__comma(" >> #")).__comma(_st(aMethod)._selector()));
+return self}, function($ctx1) {$ctx1.fill(self,"renderItemLabel:on:",{aMethod:aMethod,html:html},smalltalk.HLReferencesListWidget)})},
+messageSends: ["with:", ",", "selector", "name", "methodClass"]}),
+smalltalk.HLReferencesListWidget);
+
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "on:",
+fn: function (aModel){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
+$2=_st(self)._new();
+_st($2)._model_(aModel);
+$3=_st($2)._yourself();
+$1=$3;
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"on:",{aModel:aModel},smalltalk.HLReferencesListWidget.klass)})},
+messageSends: ["model:", "new", "yourself"]}),
+smalltalk.HLReferencesListWidget.klass);
+
+
+smalltalk.addClass('HLClassReferencesListWidget', smalltalk.HLReferencesListWidget, [], 'Helios-References');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "label",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "Class references";
+}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLClassReferencesListWidget)})},
+messageSends: []}),
+smalltalk.HLClassReferencesListWidget);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "onSearchReferences:",
+fn: function (aString){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._selectItem_(nil);
+_st(self)._items_(_st(_st(self)._model())._classReferencesFor_(aString));
+_st(self)._refresh();
+return self}, function($ctx1) {$ctx1.fill(self,"onSearchReferences:",{aString:aString},smalltalk.HLClassReferencesListWidget)})},
+messageSends: ["selectItem:", "items:", "classReferencesFor:", "model", "refresh"]}),
+smalltalk.HLClassReferencesListWidget);
+
+
+
+smalltalk.addClass('HLImplementorsListWidget', smalltalk.HLReferencesListWidget, [], 'Helios-References');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "onSearchReferences:",
+fn: function (aString){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return self}, function($ctx1) {$ctx1.fill(self,"onSearchReferences:",{aString:aString},smalltalk.HLImplementorsListWidget)})},
+messageSends: []}),
+smalltalk.HLImplementorsListWidget);
+
+
+
+smalltalk.addClass('HLRegexpListWidget', smalltalk.HLReferencesListWidget, [], 'Helios-References');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "onSearchReferences:",
+fn: function (aString){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return self}, function($ctx1) {$ctx1.fill(self,"onSearchReferences:",{aString:aString},smalltalk.HLRegexpListWidget)})},
+messageSends: []}),
+smalltalk.HLRegexpListWidget);
+
+
+
+smalltalk.addClass('HLSendersListWidget', smalltalk.HLReferencesListWidget, [], 'Helios-References');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "onSearchReferences:",
+fn: function (aString){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return self}, function($ctx1) {$ctx1.fill(self,"onSearchReferences:",{aString:aString},smalltalk.HLSendersListWidget)})},
+messageSends: []}),
+smalltalk.HLSendersListWidget);
+
+
+
+smalltalk.addClass('HLReferencesModel', smalltalk.HLModel, [], 'Helios-References');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "allSelectors",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(_st(self)._environment())._allSelectors();
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"allSelectors",{},smalltalk.HLReferencesModel)})},
+messageSends: ["allSelectors", "environment"]}),
+smalltalk.HLReferencesModel);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "classReferencesFor:",
+fn: function (aString){
+var self=this;
+var references;
+function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+references=_st($OrderedCollection())._new();
+_st(_st(self)._classesAndMetaclasses())._do_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return _st(_st(_st(each)._methodDictionary())._values())._do_((function(method){
+return smalltalk.withContext(function($ctx3) {
+$1=_st(_st(method)._referencedClasses())._includes_(aString);
+if(smalltalk.assert($1)){
+return _st(references)._add_(method);
+};
+}, function($ctx3) {$ctx3.fillBlock({method:method},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
+$2=references;
+return $2;
+}, function($ctx1) {$ctx1.fill(self,"classReferencesFor:",{aString:aString,references:references},smalltalk.HLReferencesModel)})},
+messageSends: ["new", "do:", "ifTrue:", "add:", "includes:", "referencedClasses", "values", "methodDictionary", "classesAndMetaclasses"]}),
+smalltalk.HLReferencesModel);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "classesAndMetaclasses",
+fn: function (){
+var self=this;
+function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
+$1=_st(_st(_st(self)._environment())._classes())._inject_into_(_st($OrderedCollection())._new(),(function(acc,each){
+return smalltalk.withContext(function($ctx2) {
+$2=acc;
+_st($2)._add_(each);
+_st($2)._add_(_st(each)._class());
+$3=_st($2)._yourself();
+return $3;
+}, function($ctx2) {$ctx2.fillBlock({acc:acc,each:each},$ctx1)})}));
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"classesAndMetaclasses",{},smalltalk.HLReferencesModel)})},
+messageSends: ["inject:into:", "new", "add:", "class", "yourself", "classes", "environment"]}),
+smalltalk.HLReferencesModel);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "search:",
+fn: function (aString){
+var self=this;
+function $HLSearchReferences(){return smalltalk.HLSearchReferences||(typeof HLSearchReferences=="undefined"?nil:HLSearchReferences)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=_st($HLSearchReferences())._new();
+_st($1)._searchString_(aString);
+$2=_st($1)._yourself();
+_st(_st(self)._announcer())._announce_($2);
+return self}, function($ctx1) {$ctx1.fill(self,"search:",{aString:aString},smalltalk.HLReferencesModel)})},
+messageSends: ["announce:", "searchString:", "new", "yourself", "announcer"]}),
+smalltalk.HLReferencesModel);
+
+
+

+ 637 - 0
js/Helios-References.js

@@ -0,0 +1,637 @@
+smalltalk.addPackage('Helios-References');
+smalltalk.addClass('HLReferences', smalltalk.HLWidget, ['model', 'sendersListWidget', 'implementorsListWidget', 'classReferencesListWidget', 'regexpListWidget', 'sourceCodeWidget'], 'Helios-References');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "classReferencesListWidget",
+category: 'accessing',
+fn: function (){
+var self=this;
+function $HLClassReferencesListWidget(){return smalltalk.HLClassReferencesListWidget||(typeof HLClassReferencesListWidget=="undefined"?nil:HLClassReferencesListWidget)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
+$2=self["@classReferencesListWidget"];
+if(($receiver = $2) == nil || $receiver == undefined){
+self["@classReferencesListWidget"]=_st($HLClassReferencesListWidget())._on_(_st(self)._model());
+self["@classReferencesListWidget"];
+$1=_st(self["@classReferencesListWidget"])._next_(_st(self)._regexpListWidget());
+} else {
+$1=$2;
+};
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"classReferencesListWidget",{},smalltalk.HLReferences)})},
+args: [],
+source: "classReferencesListWidget\x0a\x09^ classReferencesListWidget ifNil: [\x0a      \x09classReferencesListWidget := HLClassReferencesListWidget on: self model.\x0a\x09\x09classReferencesListWidget next: self regexpListWidget ]",
+messageSends: ["ifNil:", "on:", "model", "next:", "regexpListWidget"],
+referencedClasses: ["HLClassReferencesListWidget"]
+}),
+smalltalk.HLReferences);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "implementorsListWidget",
+category: 'accessing',
+fn: function (){
+var self=this;
+function $HLImplementorsListWidget(){return smalltalk.HLImplementorsListWidget||(typeof HLImplementorsListWidget=="undefined"?nil:HLImplementorsListWidget)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
+$2=self["@implementorsListWidget"];
+if(($receiver = $2) == nil || $receiver == undefined){
+self["@implementorsListWidget"]=_st($HLImplementorsListWidget())._on_(_st(self)._model());
+self["@implementorsListWidget"];
+$1=_st(self["@implementorsListWidget"])._next_(_st(self)._classReferencesListWidget());
+} else {
+$1=$2;
+};
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"implementorsListWidget",{},smalltalk.HLReferences)})},
+args: [],
+source: "implementorsListWidget\x0a\x09^ implementorsListWidget ifNil: [\x0a      \x09implementorsListWidget := HLImplementorsListWidget on: self model.\x0a\x09\x09implementorsListWidget next: self classReferencesListWidget ]",
+messageSends: ["ifNil:", "on:", "model", "next:", "classReferencesListWidget"],
+referencedClasses: ["HLImplementorsListWidget"]
+}),
+smalltalk.HLReferences);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "model",
+category: 'accessing',
+fn: function (){
+var self=this;
+function $HLReferencesModel(){return smalltalk.HLReferencesModel||(typeof HLReferencesModel=="undefined"?nil:HLReferencesModel)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$4,$1;
+$2=self["@model"];
+if(($receiver = $2) == nil || $receiver == undefined){
+$3=_st($HLReferencesModel())._new();
+_st($3)._environment_(_st(_st(self)._manager())._environment());
+$4=_st($3)._yourself();
+self["@model"]=$4;
+$1=self["@model"];
+} else {
+$1=$2;
+};
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"model",{},smalltalk.HLReferences)})},
+args: [],
+source: "model\x0a\x09^ model ifNil: [\x0a\x09\x09model := (HLReferencesModel new\x0a\x09\x09\x09environment: self manager environment;\x0a\x09\x09\x09yourself) ]",
+messageSends: ["ifNil:", "environment:", "environment", "manager", "new", "yourself"],
+referencedClasses: ["HLReferencesModel"]
+}),
+smalltalk.HLReferences);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "model:",
+category: 'accessing',
+fn: function (aModel){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+self["@model"]=aModel;
+return self}, function($ctx1) {$ctx1.fill(self,"model:",{aModel:aModel},smalltalk.HLReferences)})},
+args: ["aModel"],
+source: "model: aModel\x0a\x09model := aModel",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLReferences);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "open",
+category: 'actions',
+fn: function (){
+var self=this;
+function $HLTab(){return smalltalk.HLTab||(typeof HLTab=="undefined"?nil:HLTab)}
+function $HLManager(){return smalltalk.HLManager||(typeof HLManager=="undefined"?nil:HLManager)}
+return smalltalk.withContext(function($ctx1) { 
+_st(_st($HLManager())._current())._addTab_(_st($HLTab())._on_labelled_(self,_st(_st(self)._class())._tabLabel()));
+return self}, function($ctx1) {$ctx1.fill(self,"open",{},smalltalk.HLReferences)})},
+args: [],
+source: "open\x0a\x09HLManager current addTab: (HLTab on: self labelled: self class tabLabel)",
+messageSends: ["addTab:", "on:labelled:", "tabLabel", "class", "current"],
+referencedClasses: ["HLTab", "HLManager"]
+}),
+smalltalk.HLReferences);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "regexpListWidget",
+category: 'accessing',
+fn: function (){
+var self=this;
+function $HLRegexpListWidget(){return smalltalk.HLRegexpListWidget||(typeof HLRegexpListWidget=="undefined"?nil:HLRegexpListWidget)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
+$2=self["@regexpListWidget"];
+if(($receiver = $2) == nil || $receiver == undefined){
+self["@regexpListWidget"]=_st($HLRegexpListWidget())._on_(_st(self)._model());
+self["@regexpListWidget"];
+$1=_st(self["@regexpListWidget"])._next_(_st(self)._sourceCodeWidget());
+} else {
+$1=$2;
+};
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"regexpListWidget",{},smalltalk.HLReferences)})},
+args: [],
+source: "regexpListWidget\x0a\x09^ regexpListWidget ifNil: [\x0a      \x09regexpListWidget := HLRegexpListWidget on: self model.\x0a\x09\x09regexpListWidget next: self sourceCodeWidget ]",
+messageSends: ["ifNil:", "on:", "model", "next:", "sourceCodeWidget"],
+referencedClasses: ["HLRegexpListWidget"]
+}),
+smalltalk.HLReferences);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "renderContentOn:",
+category: 'rendering',
+fn: function (html){
+var self=this;
+function $HLVerticalSplitter(){return smalltalk.HLVerticalSplitter||(typeof HLVerticalSplitter=="undefined"?nil:HLVerticalSplitter)}
+function $HLHorizontalSplitter(){return smalltalk.HLHorizontalSplitter||(typeof HLHorizontalSplitter=="undefined"?nil:HLHorizontalSplitter)}
+function $HLContainer(){return smalltalk.HLContainer||(typeof HLContainer=="undefined"?nil:HLContainer)}
+return smalltalk.withContext(function($ctx1) { 
+_st(html)._with_(_st($HLContainer())._with_(_st($HLHorizontalSplitter())._with_with_(_st($HLVerticalSplitter())._with_with_(_st($HLVerticalSplitter())._with_with_(_st(self)._sendersListWidget(),_st(self)._implementorsListWidget()),_st($HLVerticalSplitter())._with_with_(_st(self)._classReferencesListWidget(),_st(self)._regexpListWidget())),_st(self)._sourceCodeWidget())));
+_st(_st(self)._sendersListWidget())._focus();
+return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLReferences)})},
+args: ["html"],
+source: "renderContentOn: html\x0a\x09html with: (HLContainer with: (HLHorizontalSplitter \x0a    \x09with: (HLVerticalSplitter\x0a        \x09with: (HLVerticalSplitter\x0a            \x09with: self sendersListWidget\x0a                with: self implementorsListWidget)\x0a            with: (HLVerticalSplitter\x0a            \x09with: self classReferencesListWidget\x0a                with: self regexpListWidget)) \x0a        with: self sourceCodeWidget)).\x0a\x09\x0a\x09self sendersListWidget focus",
+messageSends: ["with:", "with:with:", "sendersListWidget", "implementorsListWidget", "classReferencesListWidget", "regexpListWidget", "sourceCodeWidget", "focus"],
+referencedClasses: ["HLVerticalSplitter", "HLHorizontalSplitter", "HLContainer"]
+}),
+smalltalk.HLReferences);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "search:",
+category: 'actions',
+fn: function (aString){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._model())._search_(aString);
+return self}, function($ctx1) {$ctx1.fill(self,"search:",{aString:aString},smalltalk.HLReferences)})},
+args: ["aString"],
+source: "search: aString\x0a\x09self model search: aString",
+messageSends: ["search:", "model"],
+referencedClasses: []
+}),
+smalltalk.HLReferences);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "sendersListWidget",
+category: 'accessing',
+fn: function (){
+var self=this;
+function $HLSendersListWidget(){return smalltalk.HLSendersListWidget||(typeof HLSendersListWidget=="undefined"?nil:HLSendersListWidget)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
+$2=self["@sendersListWidget"];
+if(($receiver = $2) == nil || $receiver == undefined){
+self["@sendersListWidget"]=_st($HLSendersListWidget())._on_(_st(self)._model());
+self["@sendersListWidget"];
+$1=_st(self["@sendersListWidget"])._next_(_st(self)._implementorsListWidget());
+} else {
+$1=$2;
+};
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"sendersListWidget",{},smalltalk.HLReferences)})},
+args: [],
+source: "sendersListWidget\x0a\x09^ sendersListWidget ifNil: [\x0a      \x09sendersListWidget := HLSendersListWidget on: self model.\x0a\x09\x09sendersListWidget next: self implementorsListWidget ]",
+messageSends: ["ifNil:", "on:", "model", "next:", "implementorsListWidget"],
+referencedClasses: ["HLSendersListWidget"]
+}),
+smalltalk.HLReferences);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "sourceCodeWidget",
+category: 'accessing',
+fn: function (){
+var self=this;
+function $HLSourceCodeWidget(){return smalltalk.HLSourceCodeWidget||(typeof HLSourceCodeWidget=="undefined"?nil:HLSourceCodeWidget)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
+$2=self["@sourceCodeWidget"];
+if(($receiver = $2) == nil || $receiver == undefined){
+self["@sourceCodeWidget"]=_st($HLSourceCodeWidget())._on_(_st(self)._model());
+$1=self["@sourceCodeWidget"];
+} else {
+$1=$2;
+};
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"sourceCodeWidget",{},smalltalk.HLReferences)})},
+args: [],
+source: "sourceCodeWidget\x0a\x09^ sourceCodeWidget ifNil: [\x0a      \x09sourceCodeWidget := HLSourceCodeWidget on: self model ]",
+messageSends: ["ifNil:", "on:", "model"],
+referencedClasses: ["HLSourceCodeWidget"]
+}),
+smalltalk.HLReferences);
+
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "canBeOpenAsTab",
+category: 'testing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return false;
+}, function($ctx1) {$ctx1.fill(self,"canBeOpenAsTab",{},smalltalk.HLReferences.klass)})},
+args: [],
+source: "canBeOpenAsTab\x0a\x09^ false",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLReferences.klass);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "tabLabel",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "References";
+}, function($ctx1) {$ctx1.fill(self,"tabLabel",{},smalltalk.HLReferences.klass)})},
+args: [],
+source: "tabLabel\x0a\x09^ 'References'",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLReferences.klass);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "tabPriority",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=(100);
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"tabPriority",{},smalltalk.HLReferences.klass)})},
+args: [],
+source: "tabPriority\x0a\x09^ 100",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLReferences.klass);
+
+
+smalltalk.addClass('HLReferencesListWidget', smalltalk.HLNavigationListWidget, ['model'], 'Helios-References');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "label",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "List";
+}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLReferencesListWidget)})},
+args: [],
+source: "label\x0a\x09^ 'List'",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLReferencesListWidget);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "model",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=self["@model"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"model",{},smalltalk.HLReferencesListWidget)})},
+args: [],
+source: "model\x0a\x09^ model",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLReferencesListWidget);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "model:",
+category: 'accessing',
+fn: function (aModel){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+self["@model"]=aModel;
+_st(self)._observeModel();
+return self}, function($ctx1) {$ctx1.fill(self,"model:",{aModel:aModel},smalltalk.HLReferencesListWidget)})},
+args: ["aModel"],
+source: "model: aModel\x0a\x09model := aModel.\x0a\x09\x0a\x09self observeModel",
+messageSends: ["observeModel"],
+referencedClasses: []
+}),
+smalltalk.HLReferencesListWidget);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "observeModel",
+category: 'actions',
+fn: function (){
+var self=this;
+function $HLSearchReferences(){return smalltalk.HLSearchReferences||(typeof HLSearchReferences=="undefined"?nil:HLSearchReferences)}
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(_st(self)._model())._announcer())._on_do_($HLSearchReferences(),(function(ann){
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._onSearchReferences_(_st(ann)._searchString());
+}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
+return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{},smalltalk.HLReferencesListWidget)})},
+args: [],
+source: "observeModel\x0a\x09self model announcer\x0a\x09\x09on: HLSearchReferences\x0a\x09\x09do: [ :ann | self onSearchReferences: ann searchString ]",
+messageSends: ["on:do:", "onSearchReferences:", "searchString", "announcer", "model"],
+referencedClasses: ["HLSearchReferences"]
+}),
+smalltalk.HLReferencesListWidget);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "onSearchReferences:",
+category: 'reactions',
+fn: function (aString){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._subclassResponsibility();
+return self}, function($ctx1) {$ctx1.fill(self,"onSearchReferences:",{aString:aString},smalltalk.HLReferencesListWidget)})},
+args: ["aString"],
+source: "onSearchReferences: aString\x0a\x09self subclassResponsibility",
+messageSends: ["subclassResponsibility"],
+referencedClasses: []
+}),
+smalltalk.HLReferencesListWidget);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "renderContentOn:",
+category: 'rendering',
+fn: function (html){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._renderHeadOn_(html);
+smalltalk.HLNavigationListWidget.fn.prototype._renderContentOn_.apply(_st(self), [html]);
+return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLReferencesListWidget)})},
+args: ["html"],
+source: "renderContentOn: html\x0a\x09self renderHeadOn: html.\x09\x0a\x09super renderContentOn: html",
+messageSends: ["renderHeadOn:", "renderContentOn:"],
+referencedClasses: []
+}),
+smalltalk.HLReferencesListWidget);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "renderHeadOn:",
+category: 'rendering',
+fn: function (html){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=_st(html)._div();
+_st($1)._class_("list-label");
+$2=_st($1)._with_((function(){
+return smalltalk.withContext(function($ctx2) {
+return _st(html)._with_(_st(self)._label());
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+return self}, function($ctx1) {$ctx1.fill(self,"renderHeadOn:",{html:html},smalltalk.HLReferencesListWidget)})},
+args: ["html"],
+source: "renderHeadOn: html\x0a\x09html div \x0a\x09\x09class: 'list-label';\x0a\x09\x09with: [\x0a\x09\x09\x09html with: self label ]",
+messageSends: ["class:", "div", "with:", "label"],
+referencedClasses: []
+}),
+smalltalk.HLReferencesListWidget);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "renderItemLabel:on:",
+category: 'rendering',
+fn: function (aMethod,html){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(html)._with_(_st(_st(_st(_st(aMethod)._methodClass())._name()).__comma(" >> #")).__comma(_st(aMethod)._selector()));
+return self}, function($ctx1) {$ctx1.fill(self,"renderItemLabel:on:",{aMethod:aMethod,html:html},smalltalk.HLReferencesListWidget)})},
+args: ["aMethod", "html"],
+source: "renderItemLabel: aMethod on: html\x0a\x09html with: aMethod methodClass name, ' >> #', aMethod selector",
+messageSends: ["with:", ",", "selector", "name", "methodClass"],
+referencedClasses: []
+}),
+smalltalk.HLReferencesListWidget);
+
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "on:",
+category: 'instance creation',
+fn: function (aModel){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
+$2=_st(self)._new();
+_st($2)._model_(aModel);
+$3=_st($2)._yourself();
+$1=$3;
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"on:",{aModel:aModel},smalltalk.HLReferencesListWidget.klass)})},
+args: ["aModel"],
+source: "on: aModel\x0a\x09^ self new \x0a\x09\x09model: aModel; \x0a\x09\x09yourself",
+messageSends: ["model:", "new", "yourself"],
+referencedClasses: []
+}),
+smalltalk.HLReferencesListWidget.klass);
+
+
+smalltalk.addClass('HLClassReferencesListWidget', smalltalk.HLReferencesListWidget, [], 'Helios-References');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "label",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return "Class references";
+}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLClassReferencesListWidget)})},
+args: [],
+source: "label\x0a\x09^ 'Class references'",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLClassReferencesListWidget);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "onSearchReferences:",
+category: 'reactions',
+fn: function (aString){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._selectItem_(nil);
+_st(self)._items_(_st(_st(self)._model())._classReferencesFor_(aString));
+_st(self)._refresh();
+return self}, function($ctx1) {$ctx1.fill(self,"onSearchReferences:",{aString:aString},smalltalk.HLClassReferencesListWidget)})},
+args: ["aString"],
+source: "onSearchReferences: aString\x0a\x09self selectItem: nil.\x0a\x09self items: (self model classReferencesFor: aString).\x0a\x09self refresh",
+messageSends: ["selectItem:", "items:", "classReferencesFor:", "model", "refresh"],
+referencedClasses: []
+}),
+smalltalk.HLClassReferencesListWidget);
+
+
+
+smalltalk.addClass('HLImplementorsListWidget', smalltalk.HLReferencesListWidget, [], 'Helios-References');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "onSearchReferences:",
+category: 'reactions',
+fn: function (aString){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return self}, function($ctx1) {$ctx1.fill(self,"onSearchReferences:",{aString:aString},smalltalk.HLImplementorsListWidget)})},
+args: ["aString"],
+source: "onSearchReferences: aString",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLImplementorsListWidget);
+
+
+
+smalltalk.addClass('HLRegexpListWidget', smalltalk.HLReferencesListWidget, [], 'Helios-References');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "onSearchReferences:",
+category: 'reactions',
+fn: function (aString){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return self}, function($ctx1) {$ctx1.fill(self,"onSearchReferences:",{aString:aString},smalltalk.HLRegexpListWidget)})},
+args: ["aString"],
+source: "onSearchReferences: aString",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLRegexpListWidget);
+
+
+
+smalltalk.addClass('HLSendersListWidget', smalltalk.HLReferencesListWidget, [], 'Helios-References');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "onSearchReferences:",
+category: 'reactions',
+fn: function (aString){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return self}, function($ctx1) {$ctx1.fill(self,"onSearchReferences:",{aString:aString},smalltalk.HLSendersListWidget)})},
+args: ["aString"],
+source: "onSearchReferences: aString",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLSendersListWidget);
+
+
+
+smalltalk.addClass('HLReferencesModel', smalltalk.HLModel, [], 'Helios-References');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "allSelectors",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(_st(self)._environment())._allSelectors();
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"allSelectors",{},smalltalk.HLReferencesModel)})},
+args: [],
+source: "allSelectors\x0a\x09^ self environment allSelectors",
+messageSends: ["allSelectors", "environment"],
+referencedClasses: []
+}),
+smalltalk.HLReferencesModel);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "classReferencesFor:",
+category: 'accessing',
+fn: function (aString){
+var self=this;
+var references;
+function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+references=_st($OrderedCollection())._new();
+_st(_st(self)._classesAndMetaclasses())._do_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return _st(_st(_st(each)._methodDictionary())._values())._do_((function(method){
+return smalltalk.withContext(function($ctx3) {
+$1=_st(_st(method)._referencedClasses())._includes_(aString);
+if(smalltalk.assert($1)){
+return _st(references)._add_(method);
+};
+}, function($ctx3) {$ctx3.fillBlock({method:method},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
+$2=references;
+return $2;
+}, function($ctx1) {$ctx1.fill(self,"classReferencesFor:",{aString:aString,references:references},smalltalk.HLReferencesModel)})},
+args: ["aString"],
+source: "classReferencesFor: aString\x0a\x09\x22Answer all methods referencing the class named aString\x22\x0a\x09\x0a\x09| references |\x0a\x09\x0a\x09references := OrderedCollection new.\x0a\x09\x0a\x09self classesAndMetaclasses do: [ :each |\x0a\x09\x09each methodDictionary values do: [ :method |\x0a\x09\x09\x09(method referencedClasses includes: aString) ifTrue: [\x0a\x09\x09\x09\x09references add: method ] ] ].\x0a\x09\x09\x09\x09\x0a\x09^ references",
+messageSends: ["new", "do:", "ifTrue:", "add:", "includes:", "referencedClasses", "values", "methodDictionary", "classesAndMetaclasses"],
+referencedClasses: ["OrderedCollection"]
+}),
+smalltalk.HLReferencesModel);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "classesAndMetaclasses",
+category: 'accessing',
+fn: function (){
+var self=this;
+function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
+$1=_st(_st(_st(self)._environment())._classes())._inject_into_(_st($OrderedCollection())._new(),(function(acc,each){
+return smalltalk.withContext(function($ctx2) {
+$2=acc;
+_st($2)._add_(each);
+_st($2)._add_(_st(each)._class());
+$3=_st($2)._yourself();
+return $3;
+}, function($ctx2) {$ctx2.fillBlock({acc:acc,each:each},$ctx1)})}));
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"classesAndMetaclasses",{},smalltalk.HLReferencesModel)})},
+args: [],
+source: "classesAndMetaclasses\x0a\x09^ self environment classes \x0a\x09\x09inject: OrderedCollection new \x0a\x09\x09into: [ :acc :each |\x0a\x09\x09\x09acc \x0a\x09\x09\x09\x09add: each; \x0a\x09\x09\x09\x09add: each class;\x0a\x09\x09\x09\x09yourself ]",
+messageSends: ["inject:into:", "new", "add:", "class", "yourself", "classes", "environment"],
+referencedClasses: ["OrderedCollection"]
+}),
+smalltalk.HLReferencesModel);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "search:",
+category: 'actions',
+fn: function (aString){
+var self=this;
+function $HLSearchReferences(){return smalltalk.HLSearchReferences||(typeof HLSearchReferences=="undefined"?nil:HLSearchReferences)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=_st($HLSearchReferences())._new();
+_st($1)._searchString_(aString);
+$2=_st($1)._yourself();
+_st(_st(self)._announcer())._announce_($2);
+return self}, function($ctx1) {$ctx1.fill(self,"search:",{aString:aString},smalltalk.HLReferencesModel)})},
+args: ["aString"],
+source: "search: aString\x0a\x09self announcer announce: (HLSearchReferences new\x0a\x09\x09searchString: aString;\x0a\x09\x09yourself)",
+messageSends: ["announce:", "searchString:", "new", "yourself", "announcer"],
+referencedClasses: ["HLSearchReferences"]
+}),
+smalltalk.HLReferencesModel);
+
+
+

+ 14 - 0
st/Helios-Announcements.st

@@ -196,6 +196,20 @@ HLAnnouncement subclass: #HLSaveSourceCode
 	instanceVariableNames: ''
 	package: 'Helios-Announcements'!
 
+HLAnnouncement subclass: #HLSearchReferences
+	instanceVariableNames: 'searchString'
+	package: 'Helios-Announcements'!
+
+!HLSearchReferences methodsFor: 'accessing'!
+
+searchString
+	^ searchString
+!
+
+searchString: aString
+	searchString := aString
+! !
+
 HLAnnouncement subclass: #HLShowCommentToggled
 	instanceVariableNames: ''
 	package: 'Helios-Announcements'!

+ 4 - 20
st/Helios-Browser.st

@@ -871,14 +871,14 @@ renderContentOn: html
       	ifTrue: [ super renderContentOn: html ]
 ! !
 
-Object subclass: #HLBrowserModel
-	instanceVariableNames: 'announcer environment selectedPackage selectedClass selectedProtocol selectedSelector showInstance showComment'
+HLModel subclass: #HLBrowserModel
+	instanceVariableNames: 'selectedPackage selectedClass selectedProtocol selectedSelector showInstance showComment'
 	package: 'Helios-Browser'!
 
 !HLBrowserModel methodsFor: 'accessing'!
 
-announcer
-	^ announcer ifNil: [ announcer := Announcer new ]
+allSelectors
+	^ self environment allSelectors
 !
 
 availableClassNames
@@ -897,24 +897,12 @@ availableProtocols
 	^ self environment availableProtocolsFor: self selectedClass
 !
 
-environment
-	^ environment ifNil: [ HLManager current environment ]
-!
-
-environment: anEnvironment
-	environment := anEnvironment
-!
-
 handleUnkownVariableError: anError
 	self announcer announce: (HLUnknownVariableErrorRaised new
 		error: anError;
 		yourself)
 !
 
-manager
-	^ HLManager current
-!
-
 packages
 	^ self environment packages
 !
@@ -1005,10 +993,6 @@ showInstance: aBoolean
     	  	ifFalse: [ self selectedClass theMetaClass ]) ].
     
     self announcer announce: HLShowInstanceToggled new
-!
-
-systemAnnouncer
-	^ self environment systemAnnouncer
 ! !
 
 !HLBrowserModel methodsFor: 'actions'!

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

@@ -276,6 +276,48 @@ label
 	^ 'Class'
 ! !
 
+HLFindCommand subclass: #HLFindReferencesCommand
+	instanceVariableNames: ''
+	package: 'Helios-Commands-Browser'!
+
+!HLFindReferencesCommand methodsFor: 'accessing'!
+
+displayLabel
+	^ 'find references'
+!
+
+inputCompletion
+	^ self model availableClassNames, self model allSelectors
+!
+
+inputLabel
+	^ 'Find references of'
+! !
+
+!HLFindReferencesCommand methodsFor: 'executing'!
+
+execute
+	HLReferences new 
+		open;
+		search: self input
+! !
+
+!HLFindReferencesCommand methodsFor: 'testing'!
+
+isInputRequired
+	^ true
+! !
+
+!HLFindReferencesCommand class methodsFor: 'accessing'!
+
+key
+	^ 'r'
+!
+
+label
+	^ 'References'
+! !
+
 HLBrowserCommand subclass: #HLMoveToCommand
 	instanceVariableNames: ''
 	package: 'Helios-Commands-Browser'!

+ 26 - 0
st/Helios-Core.st

@@ -1,4 +1,30 @@
 Smalltalk current createPackage: 'Helios-Core'!
+Object subclass: #HLModel
+	instanceVariableNames: 'announcer environment'
+	package: 'Helios-Core'!
+
+!HLModel methodsFor: 'accessing'!
+
+announcer
+	^ announcer ifNil: [ announcer := Announcer new ]
+!
+
+environment
+	^ environment ifNil: [ self manager environment ]
+!
+
+environment: anEnvironment
+	environment := anEnvironment
+!
+
+manager
+	^ HLManager current
+!
+
+systemAnnouncer
+	^ self environment systemAnnouncer
+! !
+
 Widget subclass: #HLTab
 	instanceVariableNames: 'widget label root'
 	package: 'Helios-Core'!