Browse Source

Fix reselect in Browser panes.

Herby Vojčík 5 years ago
parent
commit
425a7f8118
6 changed files with 321 additions and 208 deletions
  1. 102 1
      src/Helios-Announcements.js
  2. 26 1
      src/Helios-Announcements.st
  3. 64 24
      src/Helios-Browser.js
  4. 13 6
      src/Helios-Browser.st
  5. 100 148
      src/Helios-Core.js
  6. 16 28
      src/Helios-Core.st

+ 102 - 1
src/Helios-Announcements.js

@@ -527,7 +527,80 @@ $globals.HLInstVarAdded);
 
 
 
-$core.addClass("HLItemSelected", $globals.HLAnnouncement, ["item"], "Helios-Announcements");
+$core.addClass("HLItemSelected", $globals.HLAnnouncement, ["item", "soft"], "Helios-Announcements");
+$core.addMethod(
+$core.method({
+selector: "beSoft",
+protocol: "accessing",
+fn: function (){
+var self=this,$self=this;
+$self.soft=true;
+return self;
+
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "beSoft\x0a\x09soft := true",
+referencedClasses: [],
+//>>excludeEnd("ide");
+pragmas: [],
+messageSends: []
+}),
+$globals.HLItemSelected);
+
+$core.addMethod(
+$core.method({
+selector: "initialize",
+protocol: "initialization",
+fn: function (){
+var self=this,$self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+(
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.supercall = true,
+//>>excludeEnd("ctx");
+($globals.HLItemSelected.superclass||$boot.nilAsClass).fn.prototype._initialize.apply($self, []));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.supercall = false;
+//>>excludeEnd("ctx");;
+$self.item=nil;
+$self.soft=false;
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"initialize",{})});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "initialize\x0a\x09super initialize.\x0a\x09item := nil.\x0a\x09soft := false",
+referencedClasses: [],
+//>>excludeEnd("ide");
+pragmas: [],
+messageSends: ["initialize"]
+}),
+$globals.HLItemSelected);
+
+$core.addMethod(
+$core.method({
+selector: "isSoft",
+protocol: "testing",
+fn: function (){
+var self=this,$self=this;
+return $self.soft;
+
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "isSoft\x0a\x09^ soft",
+referencedClasses: [],
+//>>excludeEnd("ide");
+pragmas: [],
+messageSends: []
+}),
+$globals.HLItemSelected);
+
 $core.addMethod(
 $core.method({
 selector: "item",
@@ -595,6 +668,34 @@ messageSends: ["item:", "new", "yourself"]
 }),
 $globals.HLItemSelected.a$cls);
 
+$core.addMethod(
+$core.method({
+selector: "softOn:",
+protocol: "instance creation",
+fn: function (anItem){
+var self=this,$self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1;
+$1=$self._new();
+$recv($1)._item_(anItem);
+$recv($1)._beSoft();
+return $recv($1)._yourself();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"softOn:",{anItem:anItem})});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["anItem"],
+source: "softOn: anItem\x0a\x09^ self new\x0a    \x09item: anItem;\x0a\x09\x09beSoft;\x0a        yourself",
+referencedClasses: [],
+//>>excludeEnd("ide");
+pragmas: [],
+messageSends: ["item:", "new", "beSoft", "yourself"]
+}),
+$globals.HLItemSelected.a$cls);
+
 
 $core.addClass("HLClassSelected", $globals.HLItemSelected, [], "Helios-Announcements");
 

+ 26 - 1
src/Helios-Announcements.st

@@ -217,11 +217,15 @@ variableName: aString
 ! !
 
 HLAnnouncement subclass: #HLItemSelected
-	slots: {#item}
+	slots: {#item. #soft}
 	package: 'Helios-Announcements'!
 
 !HLItemSelected methodsFor: 'accessing'!
 
+beSoft
+	soft := true
+!
+
 item
 	^ item
 !
@@ -230,12 +234,33 @@ item: anObject
 	item := anObject
 ! !
 
+!HLItemSelected methodsFor: 'initialization'!
+
+initialize
+	super initialize.
+	item := nil.
+	soft := false
+! !
+
+!HLItemSelected methodsFor: 'testing'!
+
+isSoft
+	^ soft
+! !
+
 !HLItemSelected class methodsFor: 'instance creation'!
 
 on: anItem
 	^ self new
     	item: anItem;
         yourself
+!
+
+softOn: anItem
+	^ self new
+    	item: anItem;
+		beSoft;
+        yourself
 ! !
 
 HLItemSelected subclass: #HLClassSelected

+ 64 - 24
src/Helios-Browser.js

@@ -2456,6 +2456,11 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
+var $1;
+$1=$recv(anAnnouncement)._isSoft();
+if($core.assert($1)){
+return self;
+}
 $self._selectedItem_(nil);
 $self._setItemsForSelectedPackage();
 $self._refresh();
@@ -2466,11 +2471,11 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["anAnnouncement"],
-source: "onPackageSelected: anAnnouncement\x0a    self selectedItem: nil.\x0a    \x0a    self setItemsForSelectedPackage.\x0a    self refresh",
+source: "onPackageSelected: anAnnouncement\x0a\x09anAnnouncement isSoft ifTrue: [ ^ self ].\x0a    self selectedItem: nil.\x0a    \x0a    self setItemsForSelectedPackage.\x0a    self refresh",
 referencedClasses: [],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: ["selectedItem:", "setItemsForSelectedPackage", "refresh"]
+messageSends: ["ifTrue:", "isSoft", "selectedItem:", "setItemsForSelectedPackage", "refresh"]
 }),
 $globals.HLClassesListWidget);
 
@@ -2813,7 +2818,7 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-$recv($self._model())._forceSelectedClass_(anItem);
+$recv($self._model())._softSelectedClass_(anItem);
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"reselectItem:",{anItem:anItem})});
@@ -2821,11 +2826,11 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["anItem"],
-source: "reselectItem: anItem\x0a\x09self model forceSelectedClass: anItem",
+source: "reselectItem: anItem\x0a\x09self model softSelectedClass: anItem",
 referencedClasses: [],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: ["forceSelectedClass:", "model"]
+messageSends: ["softSelectedClass:", "model"]
 }),
 $globals.HLClassesListWidget);
 
@@ -4416,6 +4421,11 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
+var $1;
+$1=$recv(anAnnouncement)._isSoft();
+if($core.assert($1)){
+return self;
+}
 $self._selectedItem_(nil);
 $self._setItemsForSelectedProtocol();
 $self._refresh();
@@ -4426,11 +4436,11 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["anAnnouncement"],
-source: "onProtocolSelected: anAnnouncement\x0a    self selectedItem: nil.\x0a    \x0a\x09self setItemsForSelectedProtocol.\x0a    self refresh",
+source: "onProtocolSelected: anAnnouncement\x0a\x09anAnnouncement isSoft ifTrue: [ ^ self ].\x0a    self selectedItem: nil.\x0a    \x0a\x09self setItemsForSelectedProtocol.\x0a    self refresh",
 referencedClasses: [],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: ["selectedItem:", "setItemsForSelectedProtocol", "refresh"]
+messageSends: ["ifTrue:", "isSoft", "selectedItem:", "setItemsForSelectedProtocol", "refresh"]
 }),
 $globals.HLMethodsListWidget);
 
@@ -4443,7 +4453,7 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-$self._onProtocolSelected_(nil);
+$self._onProtocolSelected_($recv($globals.HLProtocolSelected)._on_(nil));
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"onShowInstanceToggled",{})});
@@ -4451,11 +4461,11 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "onShowInstanceToggled\x0a\x09self onProtocolSelected: nil",
-referencedClasses: [],
+source: "onShowInstanceToggled\x0a\x09self onProtocolSelected: (HLProtocolSelected on: nil)",
+referencedClasses: ["HLProtocolSelected"],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: ["onProtocolSelected:"]
+messageSends: ["onProtocolSelected:", "on:"]
 }),
 $globals.HLMethodsListWidget);
 
@@ -4656,7 +4666,7 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-$recv($self._model())._forceSelectedMethod_($self._methodForSelector_(aSelector));
+$recv($self._model())._softSelectedMethod_($self._methodForSelector_(aSelector));
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"reselectItem:",{aSelector:aSelector})});
@@ -4664,11 +4674,11 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aSelector"],
-source: "reselectItem: aSelector\x0a\x09self model forceSelectedMethod: (self methodForSelector: aSelector)",
+source: "reselectItem: aSelector\x0a\x09self model softSelectedMethod: (self methodForSelector: aSelector)",
 referencedClasses: [],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: ["forceSelectedMethod:", "model", "methodForSelector:"]
+messageSends: ["softSelectedMethod:", "model", "methodForSelector:"]
 }),
 $globals.HLMethodsListWidget);
 
@@ -5262,7 +5272,7 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-$recv($self._model())._forceSelectedPackage_(anItem);
+$recv($self._model())._softSelectedPackage_(anItem);
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"reselectItem:",{anItem:anItem})});
@@ -5270,11 +5280,11 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["anItem"],
-source: "reselectItem: anItem\x0a\x09self model forceSelectedPackage: anItem",
+source: "reselectItem: anItem\x0a\x09self model softSelectedPackage: anItem",
 referencedClasses: [],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: ["forceSelectedPackage:", "model"]
+messageSends: ["softSelectedPackage:", "model"]
 }),
 $globals.HLPackagesListWidget);
 
@@ -5422,7 +5432,7 @@ $recv($1)._on_send_to_($globals.HLClassSelected,"onClassSelected:",self);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["on:send:to:"]=1;
 //>>excludeEnd("ctx");
-$recv($1)._on_send_to_($globals.HLShowInstanceToggled,"onClassSelected:",self);
+$recv($1)._on_send_to_($globals.HLShowInstanceToggled,"onShowInstanceToggled:",self);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["on:send:to:"]=2;
 //>>excludeEnd("ctx");
@@ -5438,7 +5448,7 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "observeModel\x0a    self model announcer \x0a\x09\x09on: HLClassSelected\x0a\x09\x09send: #onClassSelected:\x0a\x09\x09to: self;\x0a\x09\x09\x0a    \x09on: HLShowInstanceToggled \x0a\x09\x09send: #onClassSelected:\x0a\x09\x09to: self;\x0a\x09\x09\x0a    \x09on: HLProtocolSelected\x0a\x09\x09send: #onProtocolSelected:\x0a\x09\x09to: self;\x0a\x09\x09\x0a\x09\x09on: HLProtocolsFocusRequested \x0a\x09\x09send: #onProtocolsFocusRequested\x0a\x09\x09to: self",
+source: "observeModel\x0a    self model announcer \x0a\x09\x09on: HLClassSelected\x0a\x09\x09send: #onClassSelected:\x0a\x09\x09to: self;\x0a\x09\x09\x0a    \x09on: HLShowInstanceToggled \x0a\x09\x09send: #onShowInstanceToggled:\x0a\x09\x09to: self;\x0a\x09\x09\x0a    \x09on: HLProtocolSelected\x0a\x09\x09send: #onProtocolSelected:\x0a\x09\x09to: self;\x0a\x09\x09\x0a\x09\x09on: HLProtocolsFocusRequested \x0a\x09\x09send: #onProtocolsFocusRequested\x0a\x09\x09to: self",
 referencedClasses: ["HLClassSelected", "HLShowInstanceToggled", "HLProtocolSelected", "HLProtocolsFocusRequested"],
 //>>excludeEnd("ide");
 pragmas: [],
@@ -5486,6 +5496,11 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
+var $1;
+$1=$recv(anAnnouncement)._isSoft();
+if($core.assert($1)){
+return self;
+}
 $self._selectedItem_(nil);
 $self._setItemsForSelectedClass();
 $self._refresh();
@@ -5496,11 +5511,11 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["anAnnouncement"],
-source: "onClassSelected: anAnnouncement\x0a    self selectedItem: nil.\x0a    \x0a    self setItemsForSelectedClass.\x0a    self refresh",
+source: "onClassSelected: anAnnouncement\x0a\x09anAnnouncement isSoft ifTrue: [ ^ self ].\x0a    self selectedItem: nil.\x0a    \x0a    self setItemsForSelectedClass.\x0a    self refresh",
 referencedClasses: [],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: ["selectedItem:", "setItemsForSelectedClass", "refresh"]
+messageSends: ["ifTrue:", "isSoft", "selectedItem:", "setItemsForSelectedClass", "refresh"]
 }),
 $globals.HLProtocolsListWidget);
 
@@ -5649,6 +5664,31 @@ messageSends: ["focus"]
 }),
 $globals.HLProtocolsListWidget);
 
+$core.addMethod(
+$core.method({
+selector: "onShowInstanceToggled:",
+protocol: "reactions",
+fn: function (anAnnouncement){
+var self=this,$self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+$self._onClassSelected_($recv($globals.HLClassSelected)._on_(nil));
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"onShowInstanceToggled:",{anAnnouncement:anAnnouncement})});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["anAnnouncement"],
+source: "onShowInstanceToggled: anAnnouncement\x0a\x09self onClassSelected: (HLClassSelected on: nil)",
+referencedClasses: ["HLClassSelected"],
+//>>excludeEnd("ide");
+pragmas: [],
+messageSends: ["onClassSelected:", "on:"]
+}),
+$globals.HLProtocolsListWidget);
+
 $core.addMethod(
 $core.method({
 selector: "renderContentOn:",
@@ -5716,7 +5756,7 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-$recv($self._model())._forceSelectedProtocol_(anItem);
+$recv($self._model())._softSelectedProtocol_(anItem);
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"reselectItem:",{anItem:anItem})});
@@ -5724,11 +5764,11 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["anItem"],
-source: "reselectItem: anItem\x0a\x09self model forceSelectedProtocol: anItem",
+source: "reselectItem: anItem\x0a\x09self model softSelectedProtocol: anItem",
 referencedClasses: [],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: ["forceSelectedProtocol:", "model"]
+messageSends: ["softSelectedProtocol:", "model"]
 }),
 $globals.HLProtocolsListWidget);
 

+ 13 - 6
src/Helios-Browser.st

@@ -532,7 +532,7 @@ observeSystem
 !
 
 reselectItem: anItem
-	self model forceSelectedClass: anItem
+	self model softSelectedClass: anItem
 !
 
 selectItem: aClass
@@ -673,6 +673,7 @@ onClassesFocusRequested
 !
 
 onPackageSelected: anAnnouncement
+	anAnnouncement isSoft ifTrue: [ ^ self ].
     self selectedItem: nil.
     
     self setItemsForSelectedPackage.
@@ -1041,7 +1042,7 @@ observeSystem
 !
 
 reselectItem: aSelector
-	self model forceSelectedMethod: (self methodForSelector: aSelector)
+	self model softSelectedMethod: (self methodForSelector: aSelector)
 !
 
 selectItem: aSelector
@@ -1136,6 +1137,7 @@ onProtocolRemoved: anAnnouncement
 !
 
 onProtocolSelected: anAnnouncement
+	anAnnouncement isSoft ifTrue: [ ^ self ].
     self selectedItem: nil.
     
 	self setItemsForSelectedProtocol.
@@ -1143,7 +1145,7 @@ onProtocolSelected: anAnnouncement
 !
 
 onShowInstanceToggled
-	self onProtocolSelected: nil
+	self onProtocolSelected: (HLProtocolSelected on: nil)
 ! !
 
 !HLMethodsListWidget methodsFor: 'rendering'!
@@ -1245,7 +1247,7 @@ observeSystem
 !
 
 reselectItem: anItem
-	self model forceSelectedPackage: anItem
+	self model softSelectedPackage: anItem
 !
 
 selectItem: aPackage
@@ -1340,7 +1342,7 @@ observeModel
 		to: self;
 		
     	on: HLShowInstanceToggled 
-		send: #onClassSelected:
+		send: #onShowInstanceToggled:
 		to: self;
 		
     	on: HLProtocolSelected
@@ -1364,7 +1366,7 @@ observeSystem
 !
 
 reselectItem: anItem
-	self model forceSelectedProtocol: anItem
+	self model softSelectedProtocol: anItem
 !
 
 selectItem: aString
@@ -1389,6 +1391,7 @@ setItemsForSelectedClass
 !HLProtocolsListWidget methodsFor: 'reactions'!
 
 onClassSelected: anAnnouncement
+	anAnnouncement isSoft ifTrue: [ ^ self ].
     self selectedItem: nil.
     
     self setItemsForSelectedClass.
@@ -1440,6 +1443,10 @@ onProtocolSelected: anAnnouncement
 
 onProtocolsFocusRequested
 	self focus
+!
+
+onShowInstanceToggled: anAnnouncement
+	self onClassSelected: (HLClassSelected on: nil)
 ! !
 
 !HLProtocolsListWidget methodsFor: 'rendering'!

+ 100 - 148
src/Helios-Core.js

@@ -718,154 +718,6 @@ messageSends: ["withChangesDo:", "copyClass:to:", "environment", "theNonMetaClas
 }),
 $globals.HLToolModel);
 
-$core.addMethod(
-$core.method({
-selector: "forceSelectedClass:",
-protocol: "accessing",
-fn: function (aClass){
-var self=this,$self=this;
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx1) {
-//>>excludeEnd("ctx");
-$self._withChangesDo_((function(){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
-//>>excludeEnd("ctx");
-$self._selectedClass_(nil);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["selectedClass:"]=1;
-//>>excludeEnd("ctx");
-return $self._selectedClass_(aClass);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
-//>>excludeEnd("ctx");
-}));
-return self;
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"forceSelectedClass:",{aClass:aClass})});
-//>>excludeEnd("ctx");
-},
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: ["aClass"],
-source: "forceSelectedClass: aClass\x0a\x09self withChangesDo: [\x0a\x09\x09self \x09\x0a\x09\x09\x09selectedClass: nil;\x0a\x09\x09\x09selectedClass: aClass ]",
-referencedClasses: [],
-//>>excludeEnd("ide");
-pragmas: [],
-messageSends: ["withChangesDo:", "selectedClass:"]
-}),
-$globals.HLToolModel);
-
-$core.addMethod(
-$core.method({
-selector: "forceSelectedMethod:",
-protocol: "accessing",
-fn: function (aMethod){
-var self=this,$self=this;
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx1) {
-//>>excludeEnd("ctx");
-$self._withChangesDo_((function(){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
-//>>excludeEnd("ctx");
-$self._selectedMethod_(nil);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["selectedMethod:"]=1;
-//>>excludeEnd("ctx");
-return $self._selectedMethod_(aMethod);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
-//>>excludeEnd("ctx");
-}));
-return self;
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"forceSelectedMethod:",{aMethod:aMethod})});
-//>>excludeEnd("ctx");
-},
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: ["aMethod"],
-source: "forceSelectedMethod: aMethod\x0a\x09self withChangesDo: [\x0a\x09\x09self \x09\x0a\x09\x09\x09selectedMethod: nil;\x0a\x09\x09\x09selectedMethod: aMethod ]",
-referencedClasses: [],
-//>>excludeEnd("ide");
-pragmas: [],
-messageSends: ["withChangesDo:", "selectedMethod:"]
-}),
-$globals.HLToolModel);
-
-$core.addMethod(
-$core.method({
-selector: "forceSelectedPackage:",
-protocol: "accessing",
-fn: function (aPackage){
-var self=this,$self=this;
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx1) {
-//>>excludeEnd("ctx");
-$self._withChangesDo_((function(){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
-//>>excludeEnd("ctx");
-$self._selectedPackage_(nil);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["selectedPackage:"]=1;
-//>>excludeEnd("ctx");
-return $self._selectedPackage_(aPackage);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
-//>>excludeEnd("ctx");
-}));
-return self;
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"forceSelectedPackage:",{aPackage:aPackage})});
-//>>excludeEnd("ctx");
-},
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: ["aPackage"],
-source: "forceSelectedPackage: aPackage\x0a\x09self withChangesDo: [\x0a\x09\x09self \x09\x0a\x09\x09\x09selectedPackage: nil;\x0a\x09\x09\x09selectedPackage: aPackage ]",
-referencedClasses: [],
-//>>excludeEnd("ide");
-pragmas: [],
-messageSends: ["withChangesDo:", "selectedPackage:"]
-}),
-$globals.HLToolModel);
-
-$core.addMethod(
-$core.method({
-selector: "forceSelectedProtocol:",
-protocol: "accessing",
-fn: function (aProtocol){
-var self=this,$self=this;
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx1) {
-//>>excludeEnd("ctx");
-$self._withChangesDo_((function(){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
-//>>excludeEnd("ctx");
-$self._selectedProtocol_(nil);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["selectedProtocol:"]=1;
-//>>excludeEnd("ctx");
-return $self._selectedProtocol_(aProtocol);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
-//>>excludeEnd("ctx");
-}));
-return self;
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"forceSelectedProtocol:",{aProtocol:aProtocol})});
-//>>excludeEnd("ctx");
-},
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: ["aProtocol"],
-source: "forceSelectedProtocol: aProtocol\x0a\x09self withChangesDo: [\x0a\x09\x09self \x09\x0a\x09\x09\x09selectedProtocol: nil;\x0a\x09\x09\x09selectedProtocol: aProtocol ]",
-referencedClasses: [],
-//>>excludeEnd("ide");
-pragmas: [],
-messageSends: ["withChangesDo:", "selectedProtocol:"]
-}),
-$globals.HLToolModel);
-
 $core.addMethod(
 $core.method({
 selector: "handleCompileError:",
@@ -1850,6 +1702,106 @@ messageSends: ["or:", "isNil", "selectedClass", "match:"]
 }),
 $globals.HLToolModel);
 
+$core.addMethod(
+$core.method({
+selector: "softSelectedClass:",
+protocol: "accessing",
+fn: function (aClass){
+var self=this,$self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+$recv($self._announcer())._announce_($recv($globals.HLClassSelected)._softOn_(aClass));
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"softSelectedClass:",{aClass:aClass})});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aClass"],
+source: "softSelectedClass: aClass\x0a\x09self announcer announce: (HLClassSelected softOn: aClass)",
+referencedClasses: ["HLClassSelected"],
+//>>excludeEnd("ide");
+pragmas: [],
+messageSends: ["announce:", "announcer", "softOn:"]
+}),
+$globals.HLToolModel);
+
+$core.addMethod(
+$core.method({
+selector: "softSelectedMethod:",
+protocol: "accessing",
+fn: function (aMethod){
+var self=this,$self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+$recv($self._announcer())._announce_($recv($globals.HLMethodSelected)._softOn_(aMethod));
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"softSelectedMethod:",{aMethod:aMethod})});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aMethod"],
+source: "softSelectedMethod: aMethod\x0a\x09self announcer announce: (HLMethodSelected softOn: aMethod)",
+referencedClasses: ["HLMethodSelected"],
+//>>excludeEnd("ide");
+pragmas: [],
+messageSends: ["announce:", "announcer", "softOn:"]
+}),
+$globals.HLToolModel);
+
+$core.addMethod(
+$core.method({
+selector: "softSelectedPackage:",
+protocol: "accessing",
+fn: function (aPackage){
+var self=this,$self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+$recv($self._announcer())._announce_($recv($globals.HLPackageSelected)._softOn_(aPackage));
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"softSelectedPackage:",{aPackage:aPackage})});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aPackage"],
+source: "softSelectedPackage: aPackage\x0a\x09self announcer announce: (HLPackageSelected softOn: aPackage)",
+referencedClasses: ["HLPackageSelected"],
+//>>excludeEnd("ide");
+pragmas: [],
+messageSends: ["announce:", "announcer", "softOn:"]
+}),
+$globals.HLToolModel);
+
+$core.addMethod(
+$core.method({
+selector: "softSelectedProtocol:",
+protocol: "accessing",
+fn: function (aProtocol){
+var self=this,$self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+$recv($self._announcer())._announce_($recv($globals.HLProtocolSelected)._softOn_(aProtocol));
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"softSelectedProtocol:",{aProtocol:aProtocol})});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aProtocol"],
+source: "softSelectedProtocol: aProtocol\x0a\x09self announcer announce: (HLProtocolSelected softOn: aProtocol)",
+referencedClasses: ["HLProtocolSelected"],
+//>>excludeEnd("ide");
+pragmas: [],
+messageSends: ["announce:", "announcer", "softOn:"]
+}),
+$globals.HLToolModel);
+
 $core.addMethod(
 $core.method({
 selector: "unclassifiedProtocol",

+ 16 - 28
src/Helios-Core.st

@@ -123,34 +123,6 @@ availableProtocols
 	^ self environment availableProtocolsFor: self selectedClass
 !
 
-forceSelectedClass: aClass
-	self withChangesDo: [
-		self 	
-			selectedClass: nil;
-			selectedClass: aClass ]
-!
-
-forceSelectedMethod: aMethod
-	self withChangesDo: [
-		self 	
-			selectedMethod: nil;
-			selectedMethod: aMethod ]
-!
-
-forceSelectedPackage: aPackage
-	self withChangesDo: [
-		self 	
-			selectedPackage: nil;
-			selectedPackage: aPackage ]
-!
-
-forceSelectedProtocol: aProtocol
-	self withChangesDo: [
-		self 	
-			selectedProtocol: nil;
-			selectedProtocol: aProtocol ]
-!
-
 packageToCommit
 	"Answer the package to commit depending on the context:
 	- if a Method is selected, answer its package
@@ -232,6 +204,22 @@ selectedProtocol: aString
 		selectedProtocol := aString.
 		self selectedMethod: nil.
 		self announcer announce: (HLProtocolSelected on: aString) ]
+!
+
+softSelectedClass: aClass
+	self announcer announce: (HLClassSelected softOn: aClass)
+!
+
+softSelectedMethod: aMethod
+	self announcer announce: (HLMethodSelected softOn: aMethod)
+!
+
+softSelectedPackage: aPackage
+	self announcer announce: (HLPackageSelected softOn: aPackage)
+!
+
+softSelectedProtocol: aProtocol
+	self announcer announce: (HLProtocolSelected softOn: aProtocol)
 ! !
 
 !HLToolModel methodsFor: 'actions'!