Browse Source

Handle focus events the right way

Nicolas Petton 11 years ago
parent
commit
d6fa576a0e

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

@@ -60,6 +60,24 @@ smalltalk.addClass('HLPrintItRequested', smalltalk.HLCodeHandled, [], 'Helios-An
 smalltalk.addClass('HLDiveRequested', smalltalk.HLAnnouncement, [], 'Helios-Announcements');
 
 
+smalltalk.addClass('HLFocusRequested', smalltalk.HLAnnouncement, [], 'Helios-Announcements');
+
+
+smalltalk.addClass('HLClassesFocusRequested', smalltalk.HLFocusRequested, [], 'Helios-Announcements');
+
+
+smalltalk.addClass('HLMethodsFocusRequested', smalltalk.HLFocusRequested, [], 'Helios-Announcements');
+
+
+smalltalk.addClass('HLPackagesFocusRequested', smalltalk.HLFocusRequested, [], 'Helios-Announcements');
+
+
+smalltalk.addClass('HLProtocolsFocusRequested', smalltalk.HLFocusRequested, [], 'Helios-Announcements');
+
+
+smalltalk.addClass('HLSourceCodeFocusRequested', smalltalk.HLFocusRequested, [], 'Helios-Announcements');
+
+
 smalltalk.addClass('HLItemSelected', smalltalk.HLAnnouncement, ['item'], 'Helios-Announcements');
 smalltalk.addMethod(
 "_item",

+ 18 - 0
js/Helios-Announcements.js

@@ -75,6 +75,24 @@ smalltalk.addClass('HLPrintItRequested', smalltalk.HLCodeHandled, [], 'Helios-An
 smalltalk.addClass('HLDiveRequested', smalltalk.HLAnnouncement, [], 'Helios-Announcements');
 
 
+smalltalk.addClass('HLFocusRequested', smalltalk.HLAnnouncement, [], 'Helios-Announcements');
+
+
+smalltalk.addClass('HLClassesFocusRequested', smalltalk.HLFocusRequested, [], 'Helios-Announcements');
+
+
+smalltalk.addClass('HLMethodsFocusRequested', smalltalk.HLFocusRequested, [], 'Helios-Announcements');
+
+
+smalltalk.addClass('HLPackagesFocusRequested', smalltalk.HLFocusRequested, [], 'Helios-Announcements');
+
+
+smalltalk.addClass('HLProtocolsFocusRequested', smalltalk.HLFocusRequested, [], 'Helios-Announcements');
+
+
+smalltalk.addClass('HLSourceCodeFocusRequested', smalltalk.HLFocusRequested, [], 'Helios-Announcements');
+
+
 smalltalk.addClass('HLItemSelected', smalltalk.HLAnnouncement, ['item'], 'Helios-Announcements');
 smalltalk.addMethod(
 "_item",

+ 160 - 16
js/Helios-Browser.deploy.js

@@ -405,11 +405,14 @@ return smalltalk.withContext(function($ctx2) {
return _st(self)._onPackageSelect
 _st($1)._on_do_((smalltalk.HLShowInstanceToggled || HLShowInstanceToggled),(function(ann){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._onShowInstanceToggled();
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
-$2=_st($1)._on_do_((smalltalk.HLClassSelected || HLClassSelected),(function(ann){
+_st($1)._on_do_((smalltalk.HLClassSelected || HLClassSelected),(function(ann){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._onClassSelected_(_st(ann)._item());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
+$2=_st($1)._on_do_((smalltalk.HLClassesFocusRequested || HLClassesFocusRequested),(function(ann){
+return smalltalk.withContext(function($ctx2) {
return _st(self)._onClassesFocusRequested();
+}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{}, smalltalk.HLClassesListWidget)})},
-messageSends: ["on:do:", "onPackageSelected:", "item", "announcer", "model", "onShowInstanceToggled", "onClassSelected:"]}),
+messageSends: ["on:do:", "onPackageSelected:", "item", "announcer", "model", "onShowInstanceToggled", "onClassSelected:", "onClassesFocusRequested"]}),
 smalltalk.HLClassesListWidget);
 
 smalltalk.addMethod(
@@ -490,6 +493,17 @@ return self}, function($ctx1) {$ctx1.fill(self,"onClassSelected:",{aClass:aClass
 messageSends: ["selectedItem:", "ifNil:", "focus"]}),
 smalltalk.HLClassesListWidget);
 
+smalltalk.addMethod(
+"_onClassesFocusRequested",
+smalltalk.method({
+selector: "onClassesFocusRequested",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
_st(self)._focus();
+return self}, function($ctx1) {$ctx1.fill(self,"onClassesFocusRequested",{}, smalltalk.HLClassesListWidget)})},
+messageSends: ["focus"]}),
+smalltalk.HLClassesListWidget);
+
 smalltalk.addMethod(
 "_onPackageSelected_",
 smalltalk.method({
@@ -853,17 +867,22 @@ smalltalk.method({
 selector: "observeModel",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(_st(self)._model())._announcer())._on_do_((smalltalk.HLProtocolSelected || HLProtocolSelected),(function(ann){
+return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+$1=_st(_st(self)._model())._announcer();
+_st($1)._on_do_((smalltalk.HLProtocolSelected || HLProtocolSelected),(function(ann){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._onProtocolSelected_(_st(ann)._item());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
-_st(_st(_st(self)._model())._announcer())._on_do_((smalltalk.HLShowInstanceToggled || HLShowInstanceToggled),(function(ann){
+_st($1)._on_do_((smalltalk.HLShowInstanceToggled || HLShowInstanceToggled),(function(ann){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._onProtocolSelected_(nil);
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
-_st(_st(_st(self)._model())._announcer())._on_do_((smalltalk.HLMethodSelected || HLMethodSelected),(function(ann){
+_st($1)._on_do_((smalltalk.HLMethodSelected || HLMethodSelected),(function(ann){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._onMethodSelected_(_st(ann)._item());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
+$2=_st($1)._on_do_((smalltalk.HLMethodsFocusRequested || HLMethodsFocusRequested),(function(ann){
+return smalltalk.withContext(function($ctx2) {
return _st(self)._onMethodsFocusRequested();
+}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{}, smalltalk.HLMethodsListWidget)})},
-messageSends: ["on:do:", "onProtocolSelected:", "item", "announcer", "model", "onMethodSelected:"]}),
+messageSends: ["on:do:", "onProtocolSelected:", "item", "announcer", "model", "onMethodSelected:", "onMethodsFocusRequested"]}),
 smalltalk.HLMethodsListWidget);
 
 smalltalk.addMethod(
@@ -956,6 +975,17 @@ return self}, function($ctx1) {$ctx1.fill(self,"onMethodSelected:",{aMethod:aMet
 messageSends: ["selectedItem:", "ifNil:", "focus"]}),
 smalltalk.HLMethodsListWidget);
 
+smalltalk.addMethod(
+"_onMethodsFocusRequested",
+smalltalk.method({
+selector: "onMethodsFocusRequested",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
_st(self)._focus();
+return self}, function($ctx1) {$ctx1.fill(self,"onMethodsFocusRequested",{}, smalltalk.HLMethodsListWidget)})},
+messageSends: ["focus"]}),
+smalltalk.HLMethodsListWidget);
+
 smalltalk.addMethod(
 "_onProtocolSelected_",
 smalltalk.method({
@@ -1188,11 +1218,16 @@ smalltalk.method({
 selector: "observeModel",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(_st(self)._model())._announcer())._on_do_((smalltalk.HLPackageSelected || HLPackageSelected),(function(ann){
+return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+$1=_st(_st(self)._model())._announcer();
+_st($1)._on_do_((smalltalk.HLPackageSelected || HLPackageSelected),(function(ann){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._onPackageSelected_(_st(ann)._item());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
+$2=_st($1)._on_do_((smalltalk.HLPackagesFocusRequested || HLPackagesFocusRequested),(function(ann){
+return smalltalk.withContext(function($ctx2) {
return _st(self)._onPackagesFocusRequested();
+}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{}, smalltalk.HLPackagesListWidget)})},
-messageSends: ["on:do:", "onPackageSelected:", "item", "announcer", "model"]}),
+messageSends: ["on:do:", "onPackageSelected:", "item", "announcer", "model", "onPackagesFocusRequested"]}),
 smalltalk.HLPackagesListWidget);
 
 smalltalk.addMethod(
@@ -1207,6 +1242,17 @@ return self}, function($ctx1) {$ctx1.fill(self,"onPackageSelected:",{aPackage:aP
 messageSends: ["selectedItem:", "focus"]}),
 smalltalk.HLPackagesListWidget);
 
+smalltalk.addMethod(
+"_onPackagesFocusRequested",
+smalltalk.method({
+selector: "onPackagesFocusRequested",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
_st(self)._focus();
+return self}, function($ctx1) {$ctx1.fill(self,"onPackagesFocusRequested",{}, smalltalk.HLPackagesListWidget)})},
+messageSends: ["focus"]}),
+smalltalk.HLPackagesListWidget);
+
 smalltalk.addMethod(
 "_renderButtonsOn_",
 smalltalk.method({
@@ -1274,17 +1320,22 @@ smalltalk.method({
 selector: "observeModel",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(_st(self)._model())._announcer())._on_do_((smalltalk.HLClassSelected || HLClassSelected),(function(ann){
+return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+$1=_st(_st(self)._model())._announcer();
+_st($1)._on_do_((smalltalk.HLClassSelected || HLClassSelected),(function(ann){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._onClassSelected_(_st(ann)._item());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
-_st(_st(_st(self)._model())._announcer())._on_do_((smalltalk.HLShowInstanceToggled || HLShowInstanceToggled),(function(ann){
+_st($1)._on_do_((smalltalk.HLShowInstanceToggled || HLShowInstanceToggled),(function(ann){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._onClassSelected_(_st(_st(self)._model())._selectedClass());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
-_st(_st(_st(self)._model())._announcer())._on_do_((smalltalk.HLProtocolSelected || HLProtocolSelected),(function(ann){
+_st($1)._on_do_((smalltalk.HLProtocolSelected || HLProtocolSelected),(function(ann){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._onProtocolSelected_(_st(ann)._item());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
+$2=_st($1)._on_do_((smalltalk.HLProtocolsFocusRequested || HLProtocolsFocusRequested),(function(ann){
+return smalltalk.withContext(function($ctx2) {
return _st(self)._onProtocolsFocusRequested();
+}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{}, smalltalk.HLProtocolsListWidget)})},
-messageSends: ["on:do:", "onClassSelected:", "item", "announcer", "model", "selectedClass", "onProtocolSelected:"]}),
+messageSends: ["on:do:", "onClassSelected:", "item", "announcer", "model", "selectedClass", "onProtocolSelected:", "onProtocolsFocusRequested"]}),
 smalltalk.HLProtocolsListWidget);
 
 smalltalk.addMethod(
@@ -1378,6 +1429,17 @@ return self}, function($ctx1) {$ctx1.fill(self,"onProtocolSelected:",{aString:aS
 messageSends: ["selectedItem:", "ifNil:", "focus"]}),
 smalltalk.HLProtocolsListWidget);
 
+smalltalk.addMethod(
+"_onProtocolsFocusRequested",
+smalltalk.method({
+selector: "onProtocolsFocusRequested",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
_st(self)._focus();
+return self}, function($ctx1) {$ctx1.fill(self,"onProtocolsFocusRequested",{}, smalltalk.HLProtocolsListWidget)})},
+messageSends: ["focus"]}),
+smalltalk.HLProtocolsListWidget);
+
 smalltalk.addMethod(
 "_renderContentOn_",
 smalltalk.method({
@@ -1519,6 +1581,61 @@ return self}, function($ctx1) {$ctx1.fill(self,"environment:",{anEnvironment:anE
 messageSends: []}),
 smalltalk.HLBrowserModel);
 
+smalltalk.addMethod(
+"_focusOnClasses",
+smalltalk.method({
+selector: "focusOnClasses",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._announcer())._announce_(_st((smalltalk.HLClassesFocusRequested || HLClassesFocusRequested))._new());
+return self}, function($ctx1) {$ctx1.fill(self,"focusOnClasses",{}, smalltalk.HLBrowserModel)})},
+messageSends: ["announce:", "new", "announcer"]}),
+smalltalk.HLBrowserModel);
+
+smalltalk.addMethod(
+"_focusOnMethods",
+smalltalk.method({
+selector: "focusOnMethods",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._announcer())._announce_(_st((smalltalk.HLMethodsFocusRequested || HLMethodsFocusRequested))._new());
+return self}, function($ctx1) {$ctx1.fill(self,"focusOnMethods",{}, smalltalk.HLBrowserModel)})},
+messageSends: ["announce:", "new", "announcer"]}),
+smalltalk.HLBrowserModel);
+
+smalltalk.addMethod(
+"_focusOnPackages",
+smalltalk.method({
+selector: "focusOnPackages",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._announcer())._announce_(_st((smalltalk.HLPackagesFocusRequested || HLPackagesFocusRequested))._new());
+return self}, function($ctx1) {$ctx1.fill(self,"focusOnPackages",{}, smalltalk.HLBrowserModel)})},
+messageSends: ["announce:", "new", "announcer"]}),
+smalltalk.HLBrowserModel);
+
+smalltalk.addMethod(
+"_focusOnProtocols",
+smalltalk.method({
+selector: "focusOnProtocols",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._announcer())._announce_(_st((smalltalk.HLProtocolsFocusRequested || HLProtocolsFocusRequested))._new());
+return self}, function($ctx1) {$ctx1.fill(self,"focusOnProtocols",{}, smalltalk.HLBrowserModel)})},
+messageSends: ["announce:", "new", "announcer"]}),
+smalltalk.HLBrowserModel);
+
+smalltalk.addMethod(
+"_focusOnSourceCode",
+smalltalk.method({
+selector: "focusOnSourceCode",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._announcer())._announce_(_st((smalltalk.HLSourceCodeFocusRequested || HLSourceCodeFocusRequested))._new());
+return self}, function($ctx1) {$ctx1.fill(self,"focusOnSourceCode",{}, smalltalk.HLBrowserModel)})},
+messageSends: ["announce:", "new", "announcer"]}),
+smalltalk.HLBrowserModel);
+
 smalltalk.addMethod(
 "_packages",
 smalltalk.method({
@@ -1826,6 +1943,17 @@ return self}, function($ctx1) {$ctx1.fill(self,"contents:",{aString:aString}, sm
 messageSends: ["methodContents:", "contents:", "codeWidget"]}),
 smalltalk.HLBrowserSourceWidget);
 
+smalltalk.addMethod(
+"_focus",
+smalltalk.method({
+selector: "focus",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._codeWidget())._focus();
+return self}, function($ctx1) {$ctx1.fill(self,"focus",{}, smalltalk.HLBrowserSourceWidget)})},
+messageSends: ["focus", "codeWidget"]}),
+smalltalk.HLBrowserSourceWidget);
+
 smalltalk.addMethod(
 "_hasModification",
 smalltalk.method({
@@ -1912,17 +2040,22 @@ smalltalk.method({
 selector: "observeModel",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(_st(self)._model())._announcer())._on_do_((smalltalk.HLMethodSelected || HLMethodSelected),(function(ann){
+return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+$1=_st(_st(self)._model())._announcer();
+_st($1)._on_do_((smalltalk.HLMethodSelected || HLMethodSelected),(function(ann){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._onMethodSelected_(_st(ann)._item());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
-_st(_st(_st(self)._model())._announcer())._on_do_((smalltalk.HLClassSelected || HLClassSelected),(function(ann){
+_st($1)._on_do_((smalltalk.HLClassSelected || HLClassSelected),(function(ann){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._onClassSelected_(_st(ann)._item());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
-_st(_st(_st(self)._model())._announcer())._on_do_((smalltalk.HLProtocolSelected || HLProtocolSelected),(function(ann){
+_st($1)._on_do_((smalltalk.HLProtocolSelected || HLProtocolSelected),(function(ann){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._onProtocolSelected_(_st(ann)._item());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
+$2=_st($1)._on_do_((smalltalk.HLSourceCodeFocusRequested || HLSourceCodeFocusRequested),(function(ann){
+return smalltalk.withContext(function($ctx2) {
return _st(self)._onSourceCodeFocusRequested();
+}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{}, smalltalk.HLBrowserSourceWidget)})},
-messageSends: ["on:do:", "onMethodSelected:", "item", "announcer", "model", "onClassSelected:", "onProtocolSelected:"]}),
+messageSends: ["on:do:", "onMethodSelected:", "item", "announcer", "model", "onClassSelected:", "onProtocolSelected:", "onSourceCodeFocusRequested"]}),
 smalltalk.HLBrowserSourceWidget);
 
 smalltalk.addMethod(
@@ -2017,6 +2150,17 @@ return self}, function($ctx1) {$ctx1.fill(self,"onProtocolSelected:",{aString:aS
 messageSends: ["ifNil:", "contents:", "selectedClass", "model", "definition"]}),
 smalltalk.HLBrowserSourceWidget);
 
+smalltalk.addMethod(
+"_onSourceCodeFocusRequested",
+smalltalk.method({
+selector: "onSourceCodeFocusRequested",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
_st(self)._focus();
+return self}, function($ctx1) {$ctx1.fill(self,"onSourceCodeFocusRequested",{}, smalltalk.HLBrowserSourceWidget)})},
+messageSends: ["focus"]}),
+smalltalk.HLBrowserSourceWidget);
+
 smalltalk.addMethod(
 "_refresh",
 smalltalk.method({

+ 225 - 26
js/Helios-Browser.js

@@ -536,14 +536,17 @@ return smalltalk.withContext(function($ctx2) {
return _st(self)._onPackageSelect
 _st($1)._on_do_((smalltalk.HLShowInstanceToggled || HLShowInstanceToggled),(function(ann){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._onShowInstanceToggled();
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
-$2=_st($1)._on_do_((smalltalk.HLClassSelected || HLClassSelected),(function(ann){
+_st($1)._on_do_((smalltalk.HLClassSelected || HLClassSelected),(function(ann){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._onClassSelected_(_st(ann)._item());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
+$2=_st($1)._on_do_((smalltalk.HLClassesFocusRequested || HLClassesFocusRequested),(function(ann){
+return smalltalk.withContext(function($ctx2) {
return _st(self)._onClassesFocusRequested();
+}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{}, smalltalk.HLClassesListWidget)})},
 args: [],
-source: "observeModel\x0a\x09self model announcer \x0a    \x09on: HLPackageSelected do: [ :ann | self onPackageSelected: ann item ];\x0a    \x09on: HLShowInstanceToggled do: [ :ann | self onShowInstanceToggled ];\x0a\x09\x09on: HLClassSelected do: [ :ann | self onClassSelected: ann item ]",
-messageSends: ["on:do:", "onPackageSelected:", "item", "announcer", "model", "onShowInstanceToggled", "onClassSelected:"],
-referencedClasses: ["HLPackageSelected", "HLShowInstanceToggled", "HLClassSelected"]
+source: "observeModel\x0a\x09self model announcer \x0a    \x09on: HLPackageSelected do: [ :ann | self onPackageSelected: ann item ];\x0a    \x09on: HLShowInstanceToggled do: [ :ann | self onShowInstanceToggled ];\x0a\x09\x09on: HLClassSelected do: [ :ann | self onClassSelected: ann item ];\x0a\x09\x09on: HLClassesFocusRequested do: [ :ann | self onClassesFocusRequested ]",
+messageSends: ["on:do:", "onPackageSelected:", "item", "announcer", "model", "onShowInstanceToggled", "onClassSelected:", "onClassesFocusRequested"],
+referencedClasses: ["HLPackageSelected", "HLShowInstanceToggled", "HLClassSelected", "HLClassesFocusRequested"]
 }),
 smalltalk.HLClassesListWidget);
 
@@ -645,6 +648,22 @@ referencedClasses: []
 }),
 smalltalk.HLClassesListWidget);
 
+smalltalk.addMethod(
+"_onClassesFocusRequested",
+smalltalk.method({
+selector: "onClassesFocusRequested",
+category: 'reactions',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
_st(self)._focus();
+return self}, function($ctx1) {$ctx1.fill(self,"onClassesFocusRequested",{}, smalltalk.HLClassesListWidget)})},
+args: [],
+source: "onClassesFocusRequested\x0a\x09self focus",
+messageSends: ["focus"],
+referencedClasses: []
+}),
+smalltalk.HLClassesListWidget);
+
 smalltalk.addMethod(
 "_onPackageSelected_",
 smalltalk.method({
@@ -1114,20 +1133,25 @@ selector: "observeModel",
 category: 'actions',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(_st(self)._model())._announcer())._on_do_((smalltalk.HLProtocolSelected || HLProtocolSelected),(function(ann){
+return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+$1=_st(_st(self)._model())._announcer();
+_st($1)._on_do_((smalltalk.HLProtocolSelected || HLProtocolSelected),(function(ann){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._onProtocolSelected_(_st(ann)._item());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
-_st(_st(_st(self)._model())._announcer())._on_do_((smalltalk.HLShowInstanceToggled || HLShowInstanceToggled),(function(ann){
+_st($1)._on_do_((smalltalk.HLShowInstanceToggled || HLShowInstanceToggled),(function(ann){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._onProtocolSelected_(nil);
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
-_st(_st(_st(self)._model())._announcer())._on_do_((smalltalk.HLMethodSelected || HLMethodSelected),(function(ann){
+_st($1)._on_do_((smalltalk.HLMethodSelected || HLMethodSelected),(function(ann){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._onMethodSelected_(_st(ann)._item());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
+$2=_st($1)._on_do_((smalltalk.HLMethodsFocusRequested || HLMethodsFocusRequested),(function(ann){
+return smalltalk.withContext(function($ctx2) {
return _st(self)._onMethodsFocusRequested();
+}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{}, smalltalk.HLMethodsListWidget)})},
 args: [],
-source: "observeModel\x0a\x09self model announcer on: HLProtocolSelected do: [ :ann |\x0a    \x09self onProtocolSelected: ann item ].\x0a    self model announcer on: HLShowInstanceToggled do: [ :ann |\x0a    \x09self onProtocolSelected: nil ].\x0a    self model announcer on: HLMethodSelected do: [ :ann |\x0a    \x09self onMethodSelected: ann item ]",
-messageSends: ["on:do:", "onProtocolSelected:", "item", "announcer", "model", "onMethodSelected:"],
-referencedClasses: ["HLProtocolSelected", "HLShowInstanceToggled", "HLMethodSelected"]
+source: "observeModel\x0a\x09self model announcer \x0a\x09\x09on: HLProtocolSelected \x0a\x09\x09do: [ :ann | self onProtocolSelected: ann item ];\x0a\x09\x09on: HLShowInstanceToggled \x0a\x09\x09do: [ :ann | self onProtocolSelected: nil ];\x0a\x09\x09on: HLMethodSelected \x0a\x09\x09do: [ :ann | self onMethodSelected: ann item ];\x0a\x09\x09on: HLMethodsFocusRequested \x0a\x09\x09do: [ :ann | self onMethodsFocusRequested ]",
+messageSends: ["on:do:", "onProtocolSelected:", "item", "announcer", "model", "onMethodSelected:", "onMethodsFocusRequested"],
+referencedClasses: ["HLProtocolSelected", "HLShowInstanceToggled", "HLMethodSelected", "HLMethodsFocusRequested"]
 }),
 smalltalk.HLMethodsListWidget);
 
@@ -1241,6 +1265,22 @@ referencedClasses: []
 }),
 smalltalk.HLMethodsListWidget);
 
+smalltalk.addMethod(
+"_onMethodsFocusRequested",
+smalltalk.method({
+selector: "onMethodsFocusRequested",
+category: 'reactions',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
_st(self)._focus();
+return self}, function($ctx1) {$ctx1.fill(self,"onMethodsFocusRequested",{}, smalltalk.HLMethodsListWidget)})},
+args: [],
+source: "onMethodsFocusRequested\x0a\x09self focus",
+messageSends: ["focus"],
+referencedClasses: []
+}),
+smalltalk.HLMethodsListWidget);
+
 smalltalk.addMethod(
 "_onProtocolSelected_",
 smalltalk.method({
@@ -1544,14 +1584,19 @@ selector: "observeModel",
 category: 'actions',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(_st(self)._model())._announcer())._on_do_((smalltalk.HLPackageSelected || HLPackageSelected),(function(ann){
+return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+$1=_st(_st(self)._model())._announcer();
+_st($1)._on_do_((smalltalk.HLPackageSelected || HLPackageSelected),(function(ann){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._onPackageSelected_(_st(ann)._item());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
+$2=_st($1)._on_do_((smalltalk.HLPackagesFocusRequested || HLPackagesFocusRequested),(function(ann){
+return smalltalk.withContext(function($ctx2) {
return _st(self)._onPackagesFocusRequested();
+}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{}, smalltalk.HLPackagesListWidget)})},
 args: [],
-source: "observeModel\x0a    self model announcer on: HLPackageSelected do: [ :ann |\x0a    \x09self onPackageSelected: ann item ]",
-messageSends: ["on:do:", "onPackageSelected:", "item", "announcer", "model"],
-referencedClasses: ["HLPackageSelected"]
+source: "observeModel\x0a    self model announcer \x0a\x09\x09on: HLPackageSelected \x0a\x09\x09do: [ :ann | self onPackageSelected: ann item ];\x0a\x09\x09on: HLPackagesFocusRequested \x0a\x09\x09do: [ :ann | self onPackagesFocusRequested ]",
+messageSends: ["on:do:", "onPackageSelected:", "item", "announcer", "model", "onPackagesFocusRequested"],
+referencedClasses: ["HLPackageSelected", "HLPackagesFocusRequested"]
 }),
 smalltalk.HLPackagesListWidget);
 
@@ -1572,6 +1617,22 @@ referencedClasses: []
 }),
 smalltalk.HLPackagesListWidget);
 
+smalltalk.addMethod(
+"_onPackagesFocusRequested",
+smalltalk.method({
+selector: "onPackagesFocusRequested",
+category: 'reactions',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
_st(self)._focus();
+return self}, function($ctx1) {$ctx1.fill(self,"onPackagesFocusRequested",{}, smalltalk.HLPackagesListWidget)})},
+args: [],
+source: "onPackagesFocusRequested\x0a\x09self focus",
+messageSends: ["focus"],
+referencedClasses: []
+}),
+smalltalk.HLPackagesListWidget);
+
 smalltalk.addMethod(
 "_renderButtonsOn_",
 smalltalk.method({
@@ -1655,20 +1716,25 @@ selector: "observeModel",
 category: 'actions',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(_st(self)._model())._announcer())._on_do_((smalltalk.HLClassSelected || HLClassSelected),(function(ann){
+return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+$1=_st(_st(self)._model())._announcer();
+_st($1)._on_do_((smalltalk.HLClassSelected || HLClassSelected),(function(ann){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._onClassSelected_(_st(ann)._item());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
-_st(_st(_st(self)._model())._announcer())._on_do_((smalltalk.HLShowInstanceToggled || HLShowInstanceToggled),(function(ann){
+_st($1)._on_do_((smalltalk.HLShowInstanceToggled || HLShowInstanceToggled),(function(ann){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._onClassSelected_(_st(_st(self)._model())._selectedClass());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
-_st(_st(_st(self)._model())._announcer())._on_do_((smalltalk.HLProtocolSelected || HLProtocolSelected),(function(ann){
+_st($1)._on_do_((smalltalk.HLProtocolSelected || HLProtocolSelected),(function(ann){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._onProtocolSelected_(_st(ann)._item());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
+$2=_st($1)._on_do_((smalltalk.HLProtocolsFocusRequested || HLProtocolsFocusRequested),(function(ann){
+return smalltalk.withContext(function($ctx2) {
return _st(self)._onProtocolsFocusRequested();
+}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{}, smalltalk.HLProtocolsListWidget)})},
 args: [],
-source: "observeModel\x0a    self model announcer on: HLClassSelected do: [ :ann |\x0a    \x09self onClassSelected: ann item ].\x0a    self model announcer on: HLShowInstanceToggled do: [ :ann |\x0a    \x09self onClassSelected: self model selectedClass ].\x0a    self model announcer on: HLProtocolSelected do: [ :ann |\x0a    \x09self onProtocolSelected: ann item ]",
-messageSends: ["on:do:", "onClassSelected:", "item", "announcer", "model", "selectedClass", "onProtocolSelected:"],
-referencedClasses: ["HLClassSelected", "HLShowInstanceToggled", "HLProtocolSelected"]
+source: "observeModel\x0a    self model announcer \x0a\x09\x09on: HLClassSelected \x0a\x09\x09do: [ :ann | self onClassSelected: ann item ];\x0a    \x09on: HLShowInstanceToggled \x0a\x09\x09do: [ :ann | self onClassSelected: self model selectedClass ];\x0a    \x09on: HLProtocolSelected\x0a\x09\x09do: [ :ann | self onProtocolSelected: ann item ];\x0a\x09\x09on: HLProtocolsFocusRequested \x0a\x09\x09do: [ :ann | self onProtocolsFocusRequested ]",
+messageSends: ["on:do:", "onClassSelected:", "item", "announcer", "model", "selectedClass", "onProtocolSelected:", "onProtocolsFocusRequested"],
+referencedClasses: ["HLClassSelected", "HLShowInstanceToggled", "HLProtocolSelected", "HLProtocolsFocusRequested"]
 }),
 smalltalk.HLProtocolsListWidget);
 
@@ -1788,6 +1854,22 @@ referencedClasses: []
 }),
 smalltalk.HLProtocolsListWidget);
 
+smalltalk.addMethod(
+"_onProtocolsFocusRequested",
+smalltalk.method({
+selector: "onProtocolsFocusRequested",
+category: 'reactions',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
_st(self)._focus();
+return self}, function($ctx1) {$ctx1.fill(self,"onProtocolsFocusRequested",{}, smalltalk.HLProtocolsListWidget)})},
+args: [],
+source: "onProtocolsFocusRequested\x0a\x09self focus",
+messageSends: ["focus"],
+referencedClasses: []
+}),
+smalltalk.HLProtocolsListWidget);
+
 smalltalk.addMethod(
 "_renderContentOn_",
 smalltalk.method({
@@ -1974,6 +2056,86 @@ referencedClasses: []
 }),
 smalltalk.HLBrowserModel);
 
+smalltalk.addMethod(
+"_focusOnClasses",
+smalltalk.method({
+selector: "focusOnClasses",
+category: 'actions',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._announcer())._announce_(_st((smalltalk.HLClassesFocusRequested || HLClassesFocusRequested))._new());
+return self}, function($ctx1) {$ctx1.fill(self,"focusOnClasses",{}, smalltalk.HLBrowserModel)})},
+args: [],
+source: "focusOnClasses\x0a\x09self announcer announce: HLClassesFocusRequested new",
+messageSends: ["announce:", "new", "announcer"],
+referencedClasses: ["HLClassesFocusRequested"]
+}),
+smalltalk.HLBrowserModel);
+
+smalltalk.addMethod(
+"_focusOnMethods",
+smalltalk.method({
+selector: "focusOnMethods",
+category: 'actions',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._announcer())._announce_(_st((smalltalk.HLMethodsFocusRequested || HLMethodsFocusRequested))._new());
+return self}, function($ctx1) {$ctx1.fill(self,"focusOnMethods",{}, smalltalk.HLBrowserModel)})},
+args: [],
+source: "focusOnMethods\x0a\x09self announcer announce: HLMethodsFocusRequested new",
+messageSends: ["announce:", "new", "announcer"],
+referencedClasses: ["HLMethodsFocusRequested"]
+}),
+smalltalk.HLBrowserModel);
+
+smalltalk.addMethod(
+"_focusOnPackages",
+smalltalk.method({
+selector: "focusOnPackages",
+category: 'actions',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._announcer())._announce_(_st((smalltalk.HLPackagesFocusRequested || HLPackagesFocusRequested))._new());
+return self}, function($ctx1) {$ctx1.fill(self,"focusOnPackages",{}, smalltalk.HLBrowserModel)})},
+args: [],
+source: "focusOnPackages\x0a\x09self announcer announce: HLPackagesFocusRequested new",
+messageSends: ["announce:", "new", "announcer"],
+referencedClasses: ["HLPackagesFocusRequested"]
+}),
+smalltalk.HLBrowserModel);
+
+smalltalk.addMethod(
+"_focusOnProtocols",
+smalltalk.method({
+selector: "focusOnProtocols",
+category: 'actions',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._announcer())._announce_(_st((smalltalk.HLProtocolsFocusRequested || HLProtocolsFocusRequested))._new());
+return self}, function($ctx1) {$ctx1.fill(self,"focusOnProtocols",{}, smalltalk.HLBrowserModel)})},
+args: [],
+source: "focusOnProtocols\x0a\x09self announcer announce: HLProtocolsFocusRequested new",
+messageSends: ["announce:", "new", "announcer"],
+referencedClasses: ["HLProtocolsFocusRequested"]
+}),
+smalltalk.HLBrowserModel);
+
+smalltalk.addMethod(
+"_focusOnSourceCode",
+smalltalk.method({
+selector: "focusOnSourceCode",
+category: 'actions',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._announcer())._announce_(_st((smalltalk.HLSourceCodeFocusRequested || HLSourceCodeFocusRequested))._new());
+return self}, function($ctx1) {$ctx1.fill(self,"focusOnSourceCode",{}, smalltalk.HLBrowserModel)})},
+args: [],
+source: "focusOnSourceCode\x0a\x09self announcer announce: HLSourceCodeFocusRequested new",
+messageSends: ["announce:", "new", "announcer"],
+referencedClasses: ["HLSourceCodeFocusRequested"]
+}),
+smalltalk.HLBrowserModel);
+
 smalltalk.addMethod(
 "_packages",
 smalltalk.method({
@@ -2366,6 +2528,22 @@ referencedClasses: []
 }),
 smalltalk.HLBrowserSourceWidget);
 
+smalltalk.addMethod(
+"_focus",
+smalltalk.method({
+selector: "focus",
+category: 'actions',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._codeWidget())._focus();
+return self}, function($ctx1) {$ctx1.fill(self,"focus",{}, smalltalk.HLBrowserSourceWidget)})},
+args: [],
+source: "focus\x0a\x09self codeWidget focus",
+messageSends: ["focus", "codeWidget"],
+referencedClasses: []
+}),
+smalltalk.HLBrowserSourceWidget);
+
 smalltalk.addMethod(
 "_hasModification",
 smalltalk.method({
@@ -2483,20 +2661,25 @@ selector: "observeModel",
 category: 'actions',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(_st(self)._model())._announcer())._on_do_((smalltalk.HLMethodSelected || HLMethodSelected),(function(ann){
+return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+$1=_st(_st(self)._model())._announcer();
+_st($1)._on_do_((smalltalk.HLMethodSelected || HLMethodSelected),(function(ann){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._onMethodSelected_(_st(ann)._item());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
-_st(_st(_st(self)._model())._announcer())._on_do_((smalltalk.HLClassSelected || HLClassSelected),(function(ann){
+_st($1)._on_do_((smalltalk.HLClassSelected || HLClassSelected),(function(ann){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._onClassSelected_(_st(ann)._item());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
-_st(_st(_st(self)._model())._announcer())._on_do_((smalltalk.HLProtocolSelected || HLProtocolSelected),(function(ann){
+_st($1)._on_do_((smalltalk.HLProtocolSelected || HLProtocolSelected),(function(ann){
 return smalltalk.withContext(function($ctx2) {
return _st(self)._onProtocolSelected_(_st(ann)._item());
 }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
+$2=_st($1)._on_do_((smalltalk.HLSourceCodeFocusRequested || HLSourceCodeFocusRequested),(function(ann){
+return smalltalk.withContext(function($ctx2) {
return _st(self)._onSourceCodeFocusRequested();
+}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{}, smalltalk.HLBrowserSourceWidget)})},
 args: [],
-source: "observeModel\x0a\x09self model announcer on: HLMethodSelected do: [ :ann |\x0a    \x09self onMethodSelected: ann item ].\x0a    self model announcer on: HLClassSelected do: [ :ann |\x0a    \x09self onClassSelected: ann item ].\x0a    self model announcer on: HLProtocolSelected do: [ :ann |\x0a    \x09self onProtocolSelected: ann item ]",
-messageSends: ["on:do:", "onMethodSelected:", "item", "announcer", "model", "onClassSelected:", "onProtocolSelected:"],
-referencedClasses: ["HLMethodSelected", "HLClassSelected", "HLProtocolSelected"]
+source: "observeModel\x0a\x09self model announcer \x0a\x09\x09on: HLMethodSelected \x0a\x09\x09do: [ :ann | self onMethodSelected: ann item ];\x0a    \x09on: HLClassSelected \x0a\x09\x09do: [ :ann | self onClassSelected: ann item ];\x0a    \x09on: HLProtocolSelected \x0a\x09\x09do: [ :ann | self onProtocolSelected: ann item ];\x0a\x09\x09on: HLSourceCodeFocusRequested \x0a\x09\x09do: [ :ann | self onSourceCodeFocusRequested ]",
+messageSends: ["on:do:", "onMethodSelected:", "item", "announcer", "model", "onClassSelected:", "onProtocolSelected:", "onSourceCodeFocusRequested"],
+referencedClasses: ["HLMethodSelected", "HLClassSelected", "HLProtocolSelected", "HLSourceCodeFocusRequested"]
 }),
 smalltalk.HLBrowserSourceWidget);
 
@@ -2617,6 +2800,22 @@ referencedClasses: []
 }),
 smalltalk.HLBrowserSourceWidget);
 
+smalltalk.addMethod(
+"_onSourceCodeFocusRequested",
+smalltalk.method({
+selector: "onSourceCodeFocusRequested",
+category: 'reactions',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
_st(self)._focus();
+return self}, function($ctx1) {$ctx1.fill(self,"onSourceCodeFocusRequested",{}, smalltalk.HLBrowserSourceWidget)})},
+args: [],
+source: "onSourceCodeFocusRequested\x0a\x09self focus",
+messageSends: ["focus"],
+referencedClasses: []
+}),
+smalltalk.HLBrowserSourceWidget);
+
 smalltalk.addMethod(
 "_refresh",
 smalltalk.method({

+ 44 - 8
js/Helios-Commands.deploy.js

@@ -174,9 +174,9 @@ smalltalk.method({
 selector: "execute",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._model())._selectedClass_(_st(_st(self)._model())._selectedClass());
+return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._model())._focusOnClasses();
 return self}, function($ctx1) {$ctx1.fill(self,"execute",{}, smalltalk.HLGoToClassesCommand)})},
-messageSends: ["selectedClass:", "selectedClass", "model"]}),
+messageSends: ["focusOnClasses", "model"]}),
 smalltalk.HLGoToClassesCommand);
 
 
@@ -210,9 +210,9 @@ smalltalk.method({
 selector: "execute",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._model())._selectedMethod_(_st(_st(self)._model())._selectedMethod());
+return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._model())._focusOnMethods();
 return self}, function($ctx1) {$ctx1.fill(self,"execute",{}, smalltalk.HLGoToMethodsCommand)})},
-messageSends: ["selectedMethod:", "selectedMethod", "model"]}),
+messageSends: ["focusOnMethods", "model"]}),
 smalltalk.HLGoToMethodsCommand);
 
 
@@ -246,9 +246,9 @@ smalltalk.method({
 selector: "execute",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._model())._selectedPackage_(_st(_st(self)._model())._selectedPackage());
+return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._model())._focusOnPackages();
 return self}, function($ctx1) {$ctx1.fill(self,"execute",{}, smalltalk.HLGoToPackagesCommand)})},
-messageSends: ["selectedPackage:", "selectedPackage", "model"]}),
+messageSends: ["focusOnPackages", "model"]}),
 smalltalk.HLGoToPackagesCommand);
 
 
@@ -282,9 +282,9 @@ smalltalk.method({
 selector: "execute",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._model())._selectedProtocol_(_st(_st(self)._model())._selectedProtocol());
+return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._model())._focusOnProtocols();
 return self}, function($ctx1) {$ctx1.fill(self,"execute",{}, smalltalk.HLGoToProtocolsCommand)})},
-messageSends: ["selectedProtocol:", "selectedProtocol", "model"]}),
+messageSends: ["focusOnProtocols", "model"]}),
 smalltalk.HLGoToProtocolsCommand);
 
 
@@ -311,6 +311,42 @@ messageSends: []}),
 smalltalk.HLGoToProtocolsCommand.klass);
 
 
+smalltalk.addClass('HLGoToSourceCodeCommand', smalltalk.HLGoToCommand, [], 'Helios-Commands');
+smalltalk.addMethod(
+"_execute",
+smalltalk.method({
+selector: "execute",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._model())._focusOnSourceCode();
+return self}, function($ctx1) {$ctx1.fill(self,"execute",{}, smalltalk.HLGoToSourceCodeCommand)})},
+messageSends: ["focusOnSourceCode", "model"]}),
+smalltalk.HLGoToSourceCodeCommand);
+
+
+smalltalk.addMethod(
+"_key",
+smalltalk.method({
+selector: "key",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
return (83);
+}, function($ctx1) {$ctx1.fill(self,"key",{}, smalltalk.HLGoToSourceCodeCommand.klass)})},
+messageSends: []}),
+smalltalk.HLGoToSourceCodeCommand.klass);
+
+smalltalk.addMethod(
+"_label",
+smalltalk.method({
+selector: "label",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
return "Source code";
+}, function($ctx1) {$ctx1.fill(self,"label",{}, smalltalk.HLGoToSourceCodeCommand.klass)})},
+messageSends: []}),
+smalltalk.HLGoToSourceCodeCommand.klass);
+
+
 smalltalk.addClass('HLToggleCommand', smalltalk.HLBrowserCommand, [], 'Helios-Commands');
 
 smalltalk.addMethod(

+ 63 - 12
js/Helios-Commands.js

@@ -240,11 +240,11 @@ selector: "execute",
 category: 'executing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._model())._selectedClass_(_st(_st(self)._model())._selectedClass());
+return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._model())._focusOnClasses();
 return self}, function($ctx1) {$ctx1.fill(self,"execute",{}, smalltalk.HLGoToClassesCommand)})},
 args: [],
-source: "execute\x0a\x09self model selectedClass: self model selectedClass",
-messageSends: ["selectedClass:", "selectedClass", "model"],
+source: "execute\x0a\x09self model focusOnClasses",
+messageSends: ["focusOnClasses", "model"],
 referencedClasses: []
 }),
 smalltalk.HLGoToClassesCommand);
@@ -291,11 +291,11 @@ selector: "execute",
 category: 'executing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._model())._selectedMethod_(_st(_st(self)._model())._selectedMethod());
+return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._model())._focusOnMethods();
 return self}, function($ctx1) {$ctx1.fill(self,"execute",{}, smalltalk.HLGoToMethodsCommand)})},
 args: [],
-source: "execute\x0a\x09self model selectedMethod: self model selectedMethod",
-messageSends: ["selectedMethod:", "selectedMethod", "model"],
+source: "execute\x0a\x09self model focusOnMethods",
+messageSends: ["focusOnMethods", "model"],
 referencedClasses: []
 }),
 smalltalk.HLGoToMethodsCommand);
@@ -342,11 +342,11 @@ selector: "execute",
 category: 'executing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._model())._selectedPackage_(_st(_st(self)._model())._selectedPackage());
+return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._model())._focusOnPackages();
 return self}, function($ctx1) {$ctx1.fill(self,"execute",{}, smalltalk.HLGoToPackagesCommand)})},
 args: [],
-source: "execute\x0a\x09self model selectedPackage: self model selectedPackage",
-messageSends: ["selectedPackage:", "selectedPackage", "model"],
+source: "execute\x0a\x09self model focusOnPackages",
+messageSends: ["focusOnPackages", "model"],
 referencedClasses: []
 }),
 smalltalk.HLGoToPackagesCommand);
@@ -393,11 +393,11 @@ selector: "execute",
 category: 'executing',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._model())._selectedProtocol_(_st(_st(self)._model())._selectedProtocol());
+return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._model())._focusOnProtocols();
 return self}, function($ctx1) {$ctx1.fill(self,"execute",{}, smalltalk.HLGoToProtocolsCommand)})},
 args: [],
-source: "execute\x0a\x09self model selectedProtocol: self model selectedProtocol",
-messageSends: ["selectedProtocol:", "selectedProtocol", "model"],
+source: "execute\x0a\x09self model focusOnProtocols",
+messageSends: ["focusOnProtocols", "model"],
 referencedClasses: []
 }),
 smalltalk.HLGoToProtocolsCommand);
@@ -436,6 +436,57 @@ referencedClasses: []
 smalltalk.HLGoToProtocolsCommand.klass);
 
 
+smalltalk.addClass('HLGoToSourceCodeCommand', smalltalk.HLGoToCommand, [], 'Helios-Commands');
+smalltalk.addMethod(
+"_execute",
+smalltalk.method({
+selector: "execute",
+category: 'executing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._model())._focusOnSourceCode();
+return self}, function($ctx1) {$ctx1.fill(self,"execute",{}, smalltalk.HLGoToSourceCodeCommand)})},
+args: [],
+source: "execute\x0a\x09self model focusOnSourceCode",
+messageSends: ["focusOnSourceCode", "model"],
+referencedClasses: []
+}),
+smalltalk.HLGoToSourceCodeCommand);
+
+
+smalltalk.addMethod(
+"_key",
+smalltalk.method({
+selector: "key",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
return (83);
+}, function($ctx1) {$ctx1.fill(self,"key",{}, smalltalk.HLGoToSourceCodeCommand.klass)})},
+args: [],
+source: "key\x0a\x09\x22s\x22\x0a    \x0a\x09^ 83",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLGoToSourceCodeCommand.klass);
+
+smalltalk.addMethod(
+"_label",
+smalltalk.method({
+selector: "label",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
return "Source code";
+}, function($ctx1) {$ctx1.fill(self,"label",{}, smalltalk.HLGoToSourceCodeCommand.klass)})},
+args: [],
+source: "label\x0a\x09^ 'Source code'",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLGoToSourceCodeCommand.klass);
+
+
 smalltalk.addClass('HLToggleCommand', smalltalk.HLBrowserCommand, [], 'Helios-Commands');
 
 smalltalk.addMethod(

+ 0 - 1
js/Helios-KeyBindings.deploy.js

@@ -435,7 +435,6 @@ selector: "flushBindings",
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@bindings"]=nil;
-self["@helper"]=nil;
 return self}, function($ctx1) {$ctx1.fill(self,"flushBindings",{}, smalltalk.HLKeyBinder)})},
 messageSends: []}),
 smalltalk.HLKeyBinder);

+ 1 - 2
js/Helios-KeyBindings.js

@@ -601,10 +601,9 @@ category: 'actions',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
self["@bindings"]=nil;
-self["@helper"]=nil;
 return self}, function($ctx1) {$ctx1.fill(self,"flushBindings",{}, smalltalk.HLKeyBinder)})},
 args: [],
-source: "flushBindings\x0a\x09bindings := nil.\x0a    helper := nil",
+source: "flushBindings\x0a\x09bindings := nil",
 messageSends: [],
 referencedClasses: []
 }),

+ 2 - 2
js/Helios-Workspace.deploy.js

@@ -249,9 +249,9 @@ smalltalk.method({
 selector: "focus",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._editor())._focus();
+return smalltalk.withContext(function($ctx1) { 
_st(self["@editor"])._focus();
 return self}, function($ctx1) {$ctx1.fill(self,"focus",{}, smalltalk.HLCodeWidget)})},
-messageSends: ["focus", "editor"]}),
+messageSends: ["focus"]}),
 smalltalk.HLCodeWidget);
 
 smalltalk.addMethod(

+ 3 - 3
js/Helios-Workspace.js

@@ -335,11 +335,11 @@ selector: "focus",
 category: 'actions',
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._editor())._focus();
+return smalltalk.withContext(function($ctx1) { 
_st(self["@editor"])._focus();
 return self}, function($ctx1) {$ctx1.fill(self,"focus",{}, smalltalk.HLCodeWidget)})},
 args: [],
-source: "focus\x0a      self editor focus",
-messageSends: ["focus", "editor"],
+source: "focus\x0a\x09editor focus",
+messageSends: ["focus"],
 referencedClasses: []
 }),
 smalltalk.HLCodeWidget);

+ 24 - 0
st/Helios-Announcements.st

@@ -48,6 +48,30 @@ HLAnnouncement subclass: #HLDiveRequested
 	instanceVariableNames: ''
 	package: 'Helios-Announcements'!
 
+HLAnnouncement subclass: #HLFocusRequested
+	instanceVariableNames: ''
+	package: 'Helios-Announcements'!
+
+HLFocusRequested subclass: #HLClassesFocusRequested
+	instanceVariableNames: ''
+	package: 'Helios-Announcements'!
+
+HLFocusRequested subclass: #HLMethodsFocusRequested
+	instanceVariableNames: ''
+	package: 'Helios-Announcements'!
+
+HLFocusRequested subclass: #HLPackagesFocusRequested
+	instanceVariableNames: ''
+	package: 'Helios-Announcements'!
+
+HLFocusRequested subclass: #HLProtocolsFocusRequested
+	instanceVariableNames: ''
+	package: 'Helios-Announcements'!
+
+HLFocusRequested subclass: #HLSourceCodeFocusRequested
+	instanceVariableNames: ''
+	package: 'Helios-Announcements'!
+
 HLAnnouncement subclass: #HLItemSelected
 	instanceVariableNames: 'item'
 	package: 'Helios-Announcements'!

+ 80 - 21
st/Helios-Browser.st

@@ -181,7 +181,8 @@ observeModel
 	self model announcer 
     	on: HLPackageSelected do: [ :ann | self onPackageSelected: ann item ];
     	on: HLShowInstanceToggled do: [ :ann | self onShowInstanceToggled ];
-		on: HLClassSelected do: [ :ann | self onClassSelected: ann item ]
+		on: HLClassSelected do: [ :ann | self onClassSelected: ann item ];
+		on: HLClassesFocusRequested do: [ :ann | self onClassesFocusRequested ]
 !
 
 observeSystem
@@ -238,6 +239,10 @@ onClassSelected: aClass
     self focus
 !
 
+onClassesFocusRequested
+	self focus
+!
+
 onPackageSelected: aPackage
     self selectedItem: nil.
     
@@ -386,12 +391,15 @@ selectorsInProtocol: aString
 !HLMethodsListWidget methodsFor: 'actions'!
 
 observeModel
-	self model announcer on: HLProtocolSelected do: [ :ann |
-    	self onProtocolSelected: ann item ].
-    self model announcer on: HLShowInstanceToggled do: [ :ann |
-    	self onProtocolSelected: nil ].
-    self model announcer on: HLMethodSelected do: [ :ann |
-    	self onMethodSelected: ann item ]
+	self model announcer 
+		on: HLProtocolSelected 
+		do: [ :ann | self onProtocolSelected: ann item ];
+		on: HLShowInstanceToggled 
+		do: [ :ann | self onProtocolSelected: nil ];
+		on: HLMethodSelected 
+		do: [ :ann | self onMethodSelected: ann item ];
+		on: HLMethodsFocusRequested 
+		do: [ :ann | self onMethodsFocusRequested ]
 !
 
 observeSystem
@@ -460,6 +468,10 @@ onMethodSelected: aMethod
     self focus
 !
 
+onMethodsFocusRequested
+	self focus
+!
+
 onProtocolSelected: aString
     self selectedItem: nil.
     
@@ -521,8 +533,11 @@ focusClassesListWidget
 !
 
 observeModel
-    self model announcer on: HLPackageSelected do: [ :ann |
-    	self onPackageSelected: ann item ]
+    self model announcer 
+		on: HLPackageSelected 
+		do: [ :ann | self onPackageSelected: ann item ];
+		on: HLPackagesFocusRequested 
+		do: [ :ann | self onPackagesFocusRequested ]
 !
 
 selectItem: aPackage
@@ -534,6 +549,10 @@ selectItem: aPackage
 onPackageSelected: aPackage
 	self selectedItem: aPackage.
 	self focus
+!
+
+onPackagesFocusRequested
+	self focus
 ! !
 
 !HLPackagesListWidget methodsFor: 'rendering'!
@@ -576,12 +595,15 @@ selectedItem
 !HLProtocolsListWidget methodsFor: 'actions'!
 
 observeModel
-    self model announcer on: HLClassSelected do: [ :ann |
-    	self onClassSelected: ann item ].
-    self model announcer on: HLShowInstanceToggled do: [ :ann |
-    	self onClassSelected: self model selectedClass ].
-    self model announcer on: HLProtocolSelected do: [ :ann |
-    	self onProtocolSelected: ann item ]
+    self model announcer 
+		on: HLClassSelected 
+		do: [ :ann | self onClassSelected: ann item ];
+    	on: HLShowInstanceToggled 
+		do: [ :ann | self onClassSelected: self model selectedClass ];
+    	on: HLProtocolSelected
+		do: [ :ann | self onProtocolSelected: ann item ];
+		on: HLProtocolsFocusRequested 
+		do: [ :ann | self onProtocolsFocusRequested ]
 !
 
 observeSystem
@@ -642,6 +664,10 @@ onProtocolSelected: aString
 	aString ifNil: [ ^ self ].
     
     self focus
+!
+
+onProtocolsFocusRequested
+	self focus
 ! !
 
 !HLProtocolsListWidget methodsFor: 'rendering'!
@@ -763,6 +789,28 @@ showInstance: aBoolean
     self announcer announce: HLShowInstanceToggled new
 ! !
 
+!HLBrowserModel methodsFor: 'actions'!
+
+focusOnClasses
+	self announcer announce: HLClassesFocusRequested new
+!
+
+focusOnMethods
+	self announcer announce: HLMethodsFocusRequested new
+!
+
+focusOnPackages
+	self announcer announce: HLPackagesFocusRequested new
+!
+
+focusOnProtocols
+	self announcer announce: HLProtocolsFocusRequested new
+!
+
+focusOnSourceCode
+	self announcer announce: HLSourceCodeFocusRequested new
+! !
+
 !HLBrowserModel class methodsFor: 'actions'!
 
 on: anEnvironment
@@ -811,13 +859,20 @@ model: aBrowserModel
 
 !HLBrowserSourceWidget methodsFor: 'actions'!
 
+focus
+	self codeWidget focus
+!
+
 observeModel
-	self model announcer on: HLMethodSelected do: [ :ann |
-    	self onMethodSelected: ann item ].
-    self model announcer on: HLClassSelected do: [ :ann |
-    	self onClassSelected: ann item ].
-    self model announcer on: HLProtocolSelected do: [ :ann |
-    	self onProtocolSelected: ann item ]
+	self model announcer 
+		on: HLMethodSelected 
+		do: [ :ann | self onMethodSelected: ann item ];
+    	on: HLClassSelected 
+		do: [ :ann | self onClassSelected: ann item ];
+    	on: HLProtocolSelected 
+		do: [ :ann | self onProtocolSelected: ann item ];
+		on: HLSourceCodeFocusRequested 
+		do: [ :ann | self onSourceCodeFocusRequested ]
 !
 
 observeSystem
@@ -860,6 +915,10 @@ onProtocolSelected: aString
 	self model selectedClass ifNil: [ ^ self contents: '' ].
     
     self contents: self model selectedClass definition
+!
+
+onSourceCodeFocusRequested
+	self focus
 ! !
 
 !HLBrowserSourceWidget methodsFor: 'rendering'!

+ 26 - 4
st/Helios-Commands.st

@@ -86,7 +86,7 @@ HLGoToCommand subclass: #HLGoToClassesCommand
 !HLGoToClassesCommand methodsFor: 'executing'!
 
 execute
-	self model selectedClass: self model selectedClass
+	self model focusOnClasses
 ! !
 
 !HLGoToClassesCommand class methodsFor: 'accessing'!
@@ -108,7 +108,7 @@ HLGoToCommand subclass: #HLGoToMethodsCommand
 !HLGoToMethodsCommand methodsFor: 'executing'!
 
 execute
-	self model selectedMethod: self model selectedMethod
+	self model focusOnMethods
 ! !
 
 !HLGoToMethodsCommand class methodsFor: 'accessing'!
@@ -130,7 +130,7 @@ HLGoToCommand subclass: #HLGoToPackagesCommand
 !HLGoToPackagesCommand methodsFor: 'executing'!
 
 execute
-	self model selectedPackage: self model selectedPackage
+	self model focusOnPackages
 ! !
 
 !HLGoToPackagesCommand class methodsFor: 'accessing'!
@@ -152,7 +152,7 @@ HLGoToCommand subclass: #HLGoToProtocolsCommand
 !HLGoToProtocolsCommand methodsFor: 'executing'!
 
 execute
-	self model selectedProtocol: self model selectedProtocol
+	self model focusOnProtocols
 ! !
 
 !HLGoToProtocolsCommand class methodsFor: 'accessing'!
@@ -167,6 +167,28 @@ label
 	^ 'Protocols'
 ! !
 
+HLGoToCommand subclass: #HLGoToSourceCodeCommand
+	instanceVariableNames: ''
+	package: 'Helios-Commands'!
+
+!HLGoToSourceCodeCommand methodsFor: 'executing'!
+
+execute
+	self model focusOnSourceCode
+! !
+
+!HLGoToSourceCodeCommand class methodsFor: 'accessing'!
+
+key
+	"s"
+    
+	^ 83
+!
+
+label
+	^ 'Source code'
+! !
+
 HLBrowserCommand subclass: #HLToggleCommand
 	instanceVariableNames: ''
 	package: 'Helios-Commands'!

+ 1 - 2
st/Helios-KeyBindings.st

@@ -201,8 +201,7 @@ deactivate
 !
 
 flushBindings
-	bindings := nil.
-    helper := nil
+	bindings := nil
 ! !
 
 !HLKeyBinder methodsFor: 'events'!

+ 1 - 1
st/Helios-Workspace.st

@@ -140,7 +140,7 @@ editor
 !
 
 focus
-      self editor focus
+	editor focus
 !
 
 inspectIt