<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<meta content="text/html; charset=UTF-8">
<style type="text/css" style="">
<!--
p
{margin-top:0;
margin-bottom:0}
-->
</style>
<div dir="ltr">
<div id="x_divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:#000000; font-family:Calibri,Helvetica,sans-serif">
<p>Should all the removed methods here be to moved into *60Deprecated, or would you consider them an implementation detail?</p>
<div id="x_Signature">
<div name="x_divtagdefaultwrapper" style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:; margin:0">
<div><font size="2" color="#808080"></font></div>
</div>
</div>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>Von:</b> Squeak-dev <squeak-dev-bounces@lists.squeakfoundation.org> im Auftrag von commits@source.squeak.org <commits@source.squeak.org><br>
<b>Gesendet:</b> Mittwoch, 2. Oktober 2019 23:19:38<br>
<b>An:</b> squeak-dev@lists.squeakfoundation.org<br>
<b>Betreff:</b> [squeak-dev] The Inbox: Tools-ct.901.mcz</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">A new version of Tools was added to project The Inbox:<br>
<a href="http://source.squeak.org/inbox/Tools-ct.901.mcz">http://source.squeak.org/inbox/Tools-ct.901.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: Tools-ct.901<br>
Author: ct<br>
Time: 2 October 2019, 11:19:39.149682 pm<br>
UUID: 2641031f-a660-7642-8fae-5f415cf51f6d<br>
Ancestors: Tools-ul.899<br>
<br>
Deduplicates the InspectorBrowser by adapting to a real Browser and respecting to super. This also enhances look + functionality noticeably. Increases initialExtent for a nicer sight.<br>
<br>
You can open an InspectorBrowser by doing:<br>
InspectorBrowser openOn: Morph new.<br>
<br>
=============== Diff against Tools-ul.899 ===============<br>
<br>
Item was changed:<br>
Inspector subclass: #InspectorBrowser<br>
+ instanceVariableNames: 'browser'<br>
- instanceVariableNames: 'fieldList msgList msgListIndex'<br>
classVariableNames: ''<br>
poolDictionaries: ''<br>
category: 'Tools-Inspector'!<br>
<br>
!InspectorBrowser commentStamp: 'tcj 3/12/2018 07:55' prior: 0!<br>
I am an inspector that also shows all messages the inspected objects can understand. I combine inspector and code browser.<br>
<br>
InspectorBrowser openOn: Smalltalk!<br>
<br>
Item was added:<br>
+ ----- Method: InspectorBrowser>>browser (in category 'initialize-release') -----<br>
+ browser<br>
+ <br>
+ ^ browser ifNil: [browser := Browser new]!<br>
<br>
Item was changed:<br>
+ ----- Method: InspectorBrowser>>buildWith: (in category 'toolbuilder') -----<br>
- ----- Method: InspectorBrowser>>buildWith: (in category 'tool builder') -----<br>
buildWith: builder<br>
<br>
+ | windowSpec |<br>
+ windowSpec := self buildWindowWith: builder specs: {<br>
+ (0@0 corner: 0.3@0.3) -> [self buildFieldListWith: builder].<br>
+ (0.3@0 corner: 1.0@0.3) -> [self buildValuePaneWith: builder].<br>
+ (0@0.3 corner: 0.3@1.0) -> [browser buildMessageListWith: builder].<br>
+ (0.3@0.3 corner: 1.0@1.0) -> [browser buildCodePaneWith: builder].<br>
+ }.<br>
+ ^ builder build: windowSpec!<br>
- | window fieldSpec valueSpec msgSpec codeSpec |<br>
- <br>
- window := builder pluggableWindowSpec new<br>
- model: self;<br>
- children: OrderedCollection new;<br>
- yourself.<br>
- <br>
- fieldSpec := builder pluggableListSpec new<br>
- model: self;<br>
- list: #fieldList;<br>
- getIndex: #selectionIndex;<br>
- setIndex: #toggleIndex:;<br>
- menu: #fieldListMenu:;<br>
- frame: (0@0 corner: 0.3@0.5).<br>
- <br>
- valueSpec := builder pluggableTextSpec new<br>
- model: self;<br>
- getText: #contents;<br>
- setText: #accept:;<br>
- menu: #codePaneMenu:shifted:;<br>
- frame: (0.3@0 corner: 1.0@0.5).<br>
- <br>
- msgSpec := builder pluggableListSpec new<br>
- model: self;<br>
- list: #msgList;<br>
- getIndex: #msgListIndex;<br>
- setIndex: #msgListIndex:;<br>
- menu: #msgListMenu;<br>
- frame: (0@0.5 corner: 0.3@1.0).<br>
- <br>
- codeSpec := builder pluggableTextSpec new<br>
- model: self;<br>
- getText: #msgText;<br>
- setText: #msgAccept:from:;<br>
- menu: #msgPaneMenu:shifted:;<br>
- frame: (0.3@0.5 corner: 1.0@1.0).<br>
- <br>
- window children addAll: {fieldSpec. valueSpec. msgSpec. codeSpec}.<br>
- ^ builder build: window!<br>
<br>
Item was removed:<br>
- ----- Method: InspectorBrowser>>fieldList (in category 'accessing') -----<br>
- fieldList<br>
- fieldList ifNotNil: [^ fieldList].<br>
- ^ (fieldList := super fieldList)!<br>
<br>
Item was added:<br>
+ ----- Method: InspectorBrowser>>initialExtent (in category 'toolbuilder') -----<br>
+ initialExtent<br>
+ <br>
+ ^ super initialExtent * 3/2!<br>
<br>
Item was removed:<br>
- ----- Method: InspectorBrowser>>initialize (in category 'initialize-release') -----<br>
- initialize<br>
- <br>
- super initialize.<br>
- fieldList := nil.<br>
- msgListIndex := 0.<br>
- self changed: #msgText<br>
- !<br>
<br>
Item was changed:<br>
----- Method: InspectorBrowser>>inspect: (in category 'initialize-release') -----<br>
inspect: anObject <br>
"Initialize the receiver so that it is inspecting anObject. There is no current selection.<br>
Overriden so that my class is not changed to 'anObject inspectorClass'."<br>
<br>
object := anObject.<br>
+ self browser selectClass: anObject class.<br>
self initialize<br>
!<br>
<br>
Item was removed:<br>
- ----- Method: InspectorBrowser>>msgAccept:from: (in category 'messages') -----<br>
- msgAccept: newText from: editor<br>
- | category |<br>
- category := msgListIndex = 0<br>
- ifTrue: [ClassOrganizer default]<br>
- ifFalse: [object class organization categoryOfElement: (msgList at: msgListIndex)].<br>
- ^ (object class compile: newText classified: category notifying: editor) ~~ nil!<br>
<br>
Item was removed:<br>
- ----- Method: InspectorBrowser>>msgList (in category 'messages') -----<br>
- msgList<br>
- <br>
- ^msgList ifNil: [ msgList := object class selectors sort ]!<br>
<br>
Item was removed:<br>
- ----- Method: InspectorBrowser>>msgListIndex (in category 'messages') -----<br>
- msgListIndex <br>
- ^msgListIndex!<br>
<br>
Item was removed:<br>
- ----- Method: InspectorBrowser>>msgListIndex: (in category 'messages') -----<br>
- msgListIndex: anInteger<br>
- "A selection has been made in the message pane"<br>
- <br>
- msgListIndex := anInteger.<br>
- self changed: #msgText.!<br>
<br>
Item was removed:<br>
- ----- Method: InspectorBrowser>>msgListMenu: (in category 'messages') -----<br>
- msgListMenu: aMenu <br>
- ^ aMenu labels: 'Not yet implemented' lines: #(0) selections: #(flash)!<br>
<br>
Item was removed:<br>
- ----- Method: InspectorBrowser>>msgPaneMenu:shifted: (in category 'messages') -----<br>
- msgPaneMenu: aMenu shifted: shifted<br>
- ^ aMenu labels: <br>
- 'find... (f)<br>
- find again (g)<br>
- find and replace...<br>
- do/replace again (j)<br>
- undo (z)<br>
- redo (Z)<br>
- copy (c)<br>
- cut (x)<br>
- paste (v)<br>
- do it (d)<br>
- print it (p)<br>
- inspect it (i)<br>
- accept (s)<br>
- cancel (l)' <br>
- lines: #(0 4 6 9 12)<br>
- selections: #(find findAgain findReplace again undo redo copySelection cut paste doIt printIt inspectIt accept cancel)!<br>
<br>
Item was removed:<br>
- ----- Method: InspectorBrowser>>msgText (in category 'messages') -----<br>
- msgText<br>
- msgListIndex = 0 ifTrue: [^ nil].<br>
- ^ object class sourceCodeAt: (msgList at: msgListIndex)!<br>
<br>
Item was removed:<br>
- ----- Method: InspectorBrowser>>step (in category 'stepping and presenter') -----<br>
- step<br>
- | list fieldString msg |<br>
- (list := super fieldList) = fieldList ifFalse:<br>
- [fieldString := selectionIndex > 0 ifTrue: [fieldList at: selectionIndex] ifFalse: [nil].<br>
- fieldList := list.<br>
- selectionIndex := fieldList indexOf: fieldString.<br>
- self changed: #fieldList.<br>
- self changed: #selectionIndex].<br>
- list := msgList. msgList := nil. "force recomputation"<br>
- list = self msgList ifFalse:<br>
- [msg := msgListIndex > 0 ifTrue: [list at: msgListIndex] ifFalse: [nil].<br>
- msgListIndex := msgList indexOf: msg.<br>
- self changed: #msgList.<br>
- self changed: #msgListIndex].<br>
- super step!<br>
<br>
Item was added:<br>
+ ----- Method: InspectorBrowser>>stepAt:in: (in category 'stepping and presenter') -----<br>
+ stepAt: millisecondClockValue in: aWindow<br>
+ <br>
+ super stepAt: millisecondClockValue in: aWindow.<br>
+ browser stepAt: millisecondClockValue in: aWindow.!<br>
<br>
Item was removed:<br>
- ----- Method: InspectorBrowser>>wantsSteps (in category 'accessing') -----<br>
- wantsSteps<br>
- ^ true!<br>
<br>
<br>
</div>
</span></font>
</body>
</html>