<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>