[squeak-dev] Review Request: genericDropSourceCode.cs & complements
christoph.thiede at student.hpi.uni-potsdam.de
christoph.thiede at student.hpi.uni-potsdam.de
Thu Jan 27 00:08:37 UTC 2022
This review requests consists of 3 changesets, for each of which I am appending a summary below:
- genericDropSourceCode.cs
- browse&drop-Monticello.cs
- browse&drag-Tools+System.cs
tl;dr: You can now drop pretty much everything into the world to spawn a new tool for it. See also the attached screencast that I have recorded just for your entertainment. :-)
Screencast: https://shorturl.at/gkwC6
Please review & let me know when I can merge it! :D
Best,
Christoph
=============== Summary (genericDropSourceCode.cs) ===============
Change Set: genericDropSourceCode
Date: 26 January 2022
Author: Christoph Thiede
This changeset simplifies & generalizes the #dropSourceCode mechanism which you can observe by dragging a class or method from a tool into the world. With this patch, the coupling between PasteUpMorph and tools is eliminated, and other classes can easily participate in the mechanism by specifying the dragTransferType #sourceCode and providing a passenger that implements #browse and answers the tool-buildable or a window. In addition, it is now also possible to drag a string or text into the world to spawn a new workspace.
=============== Diff ===============
Object>>browse {*Tools-Browsing} · ct 1/26/2022 21:54 (changed)
browse
- ToolSet browseClass: self class
+ ^ ToolSet browseClass: self class
PasteUpMorph>>acceptDroppingMorph:event: {dropping/grabbing} · ct 1/27/2022 00:39 (changed)
acceptDroppingMorph: dropped event: evt
"The supplied morph, known to be acceptable to the receiver, is now to be assimilated; the precipitating event is supplied"
| aMorph |
(self isWorldMorph and: [dropped isTransferMorph]) ifTrue: [
dropped dragTransferType = #filesAndDirectories
ifTrue: [^ self dropFiles: dropped passenger event: evt].
dropped dragTransferType = #sourceCode
- ifTrue: [^ self dropSourceCode: dropped passenger event: evt]].
+ ifTrue: [^ self dropSourceCode: dropped passenger event: evt].
+ (dropped passenger isString or: [dropped passenger isText])
+ ifTrue: [^ self dropEditable: dropped passenger event: evt]].
aMorph := self morphToDropFrom: dropped.
self isWorldMorph
ifFalse: [super acceptDroppingMorph: aMorph event: evt]
ifTrue:
["Add the given morph to this world and start stepping it if it wants to be."
aMorph isInWorld ifFalse: [aMorph position: evt position].
self addMorphFront: aMorph.
(aMorph fullBounds intersects: self viewBox) ifFalse:
[Beeper beep.
aMorph position: self bounds center]].
aMorph submorphsDo: [:m | (m isKindOf: HaloMorph) ifTrue: [m delete]].
aMorph allMorphsDo: "Establish any penDown morphs in new world"
[:m | | tfm mm |
m player ifNotNil:
[m player getPenDown ifTrue:
[((mm := m player costume) notNil and: [(tfm := mm owner transformFrom: self) notNil])
ifTrue: [self noteNewLocation: (tfm localPointToGlobal: mm referencePosition)
forPlayer: m player]]]].
self isPartsBin
ifTrue:
[aMorph isPartsDonor: true.
aMorph stopSteppingSelfAndSubmorphs.
aMorph suspendEventHandler]
ifFalse:
[self world startSteppingSubmorphsOf: aMorph].
" self presenter morph: aMorph droppedIntoPasteUpMorph: self."
self showingListView ifTrue:
[self sortSubmorphsBy: (self valueOfProperty: #sortOrder).
self currentWorld abandonAllHalos].
self bringTopmostsToFront.
PasteUpMorph>>dropEditable:event: {event handling} · ct 1/27/2022 00:38
+ dropEditable: aStringOrText event: evt
+
+ ^ self dropTool: aStringOrText edit event: evt
PasteUpMorph>>dropSourceCode:event: {event handling} · ct 1/27/2022 00:37 (changed)
dropSourceCode: anObject event: evt
- (anObject isMethodReference and: [anObject isValid])
- ifTrue: [^ self dropSourceCode: anObject compiledMethod event: evt].
-
- (anObject isBehavior or: [anObject isCompiledMethod])
- ifTrue: [
- | tool window |
- tool := anObject isBehavior
- ifTrue: [Browser new
- setClass: anObject]
- ifFalse: [CodeHolder new
- setClass: anObject methodClass
- selector: anObject selector].
- window := ToolBuilder open: tool.
- window center: evt position.
- window bounds: (window bounds translatedToBeWithin: self bounds)].
-
- anObject isString
- ifTrue: [anObject edit].
+ ^ self dropTool: anObject browse event: evt
PasteUpMorph>>dropTool:event: {event handling} · ct 1/27/2022 00:37
+ dropTool: tool event: evt
+
+ | window |
+ tool ifNil: [^ self].
+
+ window := tool containingWindow ifNil: [ToolBuilder open: tool].
+ window center: evt position.
+ window bounds: (window bounds translatedToBeWithin: self bounds).
+ ^ window
PasteUpMorph>>wantsDroppedTransferMorph: {dropping/grabbing} · ct 1/26/2022 22:11 (changed)
wantsDroppedTransferMorph: transferMorph
^ self hasTransferMorphConverter
or: [transferMorph dragTransferType = #filesAndDirectories]
- or: [transferMorph dragTransferType = #sourceCode]
+ or: [transferMorph dragTransferType = #sourceCode]
+ or: [transferMorph passenger isString or: [transferMorph passenger isText]]
String>>edit {*toolbuilder-kernel} · ct 1/26/2022 22:13 (changed)
edit
- UIManager default edit: self.
+ ^ Project uiManager edit: self.
SystemWindow>>openAsTool {*ToolBuilder-Morphic-opening} · ct 1/26/2022 21:53 (changed)
openAsTool
"Open this window as a tool, that is, honor the preferences such as #reuseWindows and #openToolsAttachedToMouseCursor."
-
+
| meOrSimilarWindow |
meOrSimilarWindow := self openInWorldExtent: self extent.
- (Project uiManager openToolsAttachedToMouseCursor "and: [ | event |
- event := self currentEvent.
- event isMouse and: [event isMouseUp]]") ifTrue: [
- meOrSimilarWindow setProperty: #initialDrop toValue: true.
- meOrSimilarWindow hasDropShadow: false.
- self currentHand attachMorph: meOrSimilarWindow].
+ (Project uiManager openToolsAttachedToMouseCursor
+ and: [ | event |
+ event := self currentEvent.
+ (event isMouse and: [event isMouseUp]) or: [event isDropEvent]])
+ ifTrue: [
+ meOrSimilarWindow setProperty: #initialDrop toValue: true.
+ meOrSimilarWindow hasDropShadow: false.
+ self currentHand attachMorph: meOrSimilarWindow].
^ meOrSimilarWindow
Text>>edit {*ToolBuilder-Kernel} · ct 1/26/2022 22:13 (changed)
edit
- UIManager default edit: self.
+ ^ Project uiManager edit: self.
=============== Summary (browse&drop-Monticello.cs) ===============
Change Set: browse&drop-Monticello
Date: 27 January 2022
Author: Christoph Thiede
This changeset complements genericDropSourceCode.cs by specifying the #dragItem/#dragType protocol for most tools in the Monticello UI and providing proper implementations of #browse in the model classes. At a few places, multilingual support is improved, too.
As an entrypoint to this changeset, please read: MCToolWindowBuilder>>#listMorph:selection:menu:keystroke:drag:
=============== Diff ===============
MCClassDefinition>>browseVersions {browsing} · ct 1/26/2022 22:59
+ browseVersions
+
+ ^ self actualClass browse
MCConfiguration>>browse {actions} · ct 1/26/2022 22:02 (changed)
browse
| browser |
browser := MCConfigurationBrowser new configuration: self copyForEdit.
name ifNotNil: [:nm | browser label: browser defaultLabel , ' ' , nm].
- browser show
+ ^ browser show
MCDefinition>>browseVersions {browsing} · ct 1/26/2022 22:58
+ browseVersions
+
+ ^ nil
MCFileBasedRepository>>morphicOpen: {user interface} · ct 1/26/2022 22:22 (changed)
morphicOpen: aWorkingCopy
- (MCFileRepositoryInspector repository: self workingCopy: aWorkingCopy)
+ ^ (MCFileRepositoryInspector repository: self workingCopy: aWorkingCopy)
show
MCMethodDefinition>>actualMethod {accessing} · ct 1/26/2022 22:39
+ actualMethod
+ ^ self actualMethodIn: Environment current
MCMethodDefinition>>actualMethodIn: {accessing} · ct 1/27/2022 00:43
+ actualMethodIn: anEnvironment
+ "Answer the installed compiled method that belongs to this definition, or a change record if this version of the method is no longer installed."
+ | class method |
+ class := (self actualClassIn: anEnvironment) ifNil: [^ nil].
+ method := class compiledMethodAt: self selector ifAbsent: [nil].
+ (method isNil or: [method timeStamp = self timeStamp])
+ ifFalse: [method := (class changeRecordsAt: self selector)
+ detect: [:record | record stamp = self timeStamp]
+ ifNone: [nil]].
+ ^ method
MCMethodDefinition>>browse {browsing} · ct 1/26/2022 23:00 (changed and recategorized)
browse
- | browser |
- browser := MCSnapshotBrowser forSnapshot: (MCSnapshot fromDefinitions: {self}).
- browser
- categorySelection: 1;
- classSelection: 1.
- classIsMeta ifTrue: [browser switchBeClass].
- browser
- protocolSelection: 1;
- methodSelection: 1;
- showLabelled: 'Snapshot of ', self summary.
- ^ browser
+
+ ^ self actualMethod ifNotNil: [:method | method isCompiledMethod
+ ifTrue: [method browse]
+ ifFalse: [self browseVersions]]
MCMethodDefinition>>browseVersions {browsing} · ct 1/26/2022 23:00
+ browseVersions
+
+ ^ ToolSet browseVersionsOf: self actualClass selector: self selector
MCOperationsBrowser>>methodAt: {accessing} · ct 1/26/2022 22:53
+ methodAt: index
+
+ ^ self items at: index
MCOperationsBrowser>>widgetSpecs {ui} · ct 1/26/2022 22:51 (changed)
widgetSpecs
Preferences annotationPanes ifFalse: [ ^#(
- ((listMorph:selection:menu:keystroke: list selection methodListMenu: methodListKey:from:) (0 0 1 0.4) (0 0 0 0))
+ ((listMorph:selection:menu:keystroke:drag: list selection methodListMenu: methodListKey:from: methodAt:) (0 0 1 0.4) (0 0 0 0))
((textMorph: text) (0 0.4 1 1))
) ].
^ #(
- ((listMorph:selection:menu:keystroke: list selection methodListMenu: methodListKey:from:) (0 0 1 0.4) (0 0 0 0))
+ ((listMorph:selection:menu:keystroke:drag: list selection methodListMenu: methodListKey:from: methodAt:) (0 0 1 0.4) (0 0 0 0))
((textMorph: annotations) (0 0.4 1 0.4) (0 0 0 defaultAnnotationPaneHeight))
((textMorph: text) (0 0.4 1 1) (0 defaultAnnotationPaneHeight 0 0))
)
MCOperationsList>>browse {ui} · ct 1/26/2022 22:02 (changed)
browse
- (self browserClass items: operations) show
+ ^ (self browserClass items: operations) show
MCPatch>>browse {ui} · ct 1/26/2022 22:02 (changed)
browse
- (self browserClass forPatch: self) show
+ ^ (self browserClass forPatch: self) show
MCPatchOperation>>browse {browsing} · ct 1/26/2022 22:58
+ browse
+
+ ^ self definition browseVersions
MCRepository>>browse {user interface} · ct 1/26/2022 22:21
+ browse
+
+ ^ self morphicOpen
MCRepository>>morphicOpen {user interface} · ct 1/26/2022 22:21 (changed)
morphicOpen
- self morphicOpen: nil
+ ^ self morphicOpen: nil
MCRepository>>morphicOpen: {user interface} · ct 1/26/2022 22:21 (changed)
morphicOpen: aWorkingCopy
- (MCRepositoryInspector repository: self workingCopy: aWorkingCopy) show
+ ^ (MCRepositoryInspector repository: self workingCopy: aWorkingCopy) show
MCRepositoryInspector>>packageAt: {morphic ui} · ct 1/26/2022 22:24
+ packageAt: index
+ ^ nil
MCRepositoryInspector>>versionAt: {morphic ui} · ct 1/26/2022 22:25
+ versionAt: index
+
+ ^ repository versionNamed: (self versionNames at: index)
MCSnapshotBrowser>>categoryAt: {listing} · ct 1/26/2022 22:36
+ categoryAt: index
+ ^ nil
MCSnapshotBrowser>>classAt: {listing} · ct 1/26/2022 22:37
+ classAt: index
+ | className environment |
+ className := self visibleClasses at: index.
+ environment := self environmentInDisplayingImage.
+ ^ environment at: className ifAbsent:
+ [environment valueOf: className]
MCSnapshotBrowser>>methodAt: {listing} · ct 1/26/2022 22:34
+ methodAt: index
+ ^ self visibleMethods at: index
MCSnapshotBrowser>>protocolAt: {listing} · ct 1/26/2022 22:35
+ protocolAt: index
+ ^ nil
MCSnapshotBrowser>>widgetSpecs {morphic ui} · ct 1/27/2022 00:24 (changed)
widgetSpecs
Preferences annotationPanes ifFalse: [ ^#(
((listMorph: category) (0 0 0.25 0.4))
((listMorph: class) (0.25 0 0.50 0.4) (0 0 0 -30))
((listMorph: protocol) (0.50 0 0.75 0.4))
- ((listMorph:selection:menu:keystroke: methodList methodSelection methodListMenu: methodListKey:from:) (0.75 0 1 0.4))
+ ((listMorph:selection:menu:keystroke:drag: methodList methodSelection methodListMenu: methodListKey:from: methodAt:) (0.75 0 1 0.4))
((buttonRow) (0.25 0.4 0.5 0.4) (0 -30 0 0))
((codePane: text) (0 0.4 1 1))
) ].
^#(
((listMorph: category) (0 0 0.25 0.4))
((listMorph: class) (0.25 0 0.50 0.4) (0 0 0 -30))
((listMorph: protocol) (0.50 0 0.75 0.4))
- ((listMorph:selection:menu:keystroke: methodList methodSelection methodListMenu: methodListKey:from:) (0.75 0 1 0.4))
+ ((listMorph:selection:menu:keystroke:drag: methodList methodSelection methodListMenu: methodListKey:from: methodAt:) (0.75 0 1 0.4))
((buttonRow) (0.25 0.4 0.5 0.4) (0 -30 0 0))
((inputMorph: annotations) (0 0.4 1 0.4) (0 0 0 defaultInputFieldHeight))
((codePane: text) (0 0.4 1 1) (0 defaultInputFieldHeight 0 0))
)
MCTool>>dragType: {morphic ui} · ct 1/26/2022 22:16
+ dragType: anObject
+
+ ^ #sourceCode
MCToolWindowBuilder>>listMorph: {building-parts} · ct 1/26/2022 22:19 (changed)
listMorph: listSymbol
^ self
listMorph: (listSymbol, 'List') asSymbol
selection: (listSymbol, 'Selection') asSymbol
- menu: (listSymbol, 'ListMenu:') asSymbol
+ menu: (listSymbol, 'ListMenu:') asSymbol
+ keystroke: nil
+ drag: (listSymbol, 'At:') asSymbol
MCToolWindowBuilder>>listMorph:selection: {building-parts} · ct 1/26/2022 22:27 (changed)
listMorph: listSymbol selection: selectionSymbol
- self listMorph: listSymbol selection: selectionSymbol menu: nil
+ ^ self listMorph: listSymbol selection: selectionSymbol menu: nil
MCToolWindowBuilder>>listMorph:selection:menu: {building-parts} · ct 1/26/2022 22:17 (changed)
listMorph: listSymbol selection: selectionSymbol menu: menuSymbol
- self listMorph: listSymbol selection: selectionSymbol menu: menuSymbol keystroke: nil
+ ^ self listMorph: listSymbol selection: selectionSymbol menu: menuSymbol keystroke: nil
MCToolWindowBuilder>>listMorph:selection:menu:keystroke: {building-parts} · ct 1/26/2022 22:17 (changed)
listMorph: listSymbol selection: selectionSymbol menu: menuSymbol keystroke: keystrokeSymbol
- | list |
- list := builder pluggableListSpec new.
- list
- model: tool;
- list: listSymbol;
- getIndex: selectionSymbol;
- setIndex: (selectionSymbol, ':') asSymbol;
- frame: currentFrame.
- menuSymbol ifNotNil: [list menu: menuSymbol].
- keystrokeSymbol ifNotNil: [list keyPress: keystrokeSymbol].
- window children add: list
+ ^ self listMorph: listSymbol selection: selectionSymbol menu: menuSymbol keystroke: nil drag: nil
MCToolWindowBuilder>>listMorph:selection:menu:keystroke:drag: {building-parts} · ct 1/26/2022 22:27
+ listMorph: listSymbol selection: selectionSymbol menu: menuSymbol keystroke: keystrokeSymbol drag: dragSymbol
+ | list |
+ list := builder pluggableListSpec new.
+ list
+ model: tool;
+ list: listSymbol;
+ getIndex: selectionSymbol;
+ setIndex: (selectionSymbol, ':') asSymbol;
+ frame: currentFrame;
+ dragItem: dragSymbol;
+ dragType: #dragType:.
+ menuSymbol ifNotNil: [list menu: menuSymbol].
+ keystrokeSymbol ifNotNil: [list keyPress: keystrokeSymbol].
+ window children add: list
MCVersion>>browse {actions} · ct 1/27/2022 00:24 (changed)
browse
- (MCSnapshotBrowser forSnapshot: self snapshot)
- label: 'Snapshot of ', self fileName;
+ ^ (MCSnapshotBrowser forSnapshot: self snapshot)
+ label: ('Snapshot of {1}' translated format: {self fileName});
show
MCVersionHistoryBrowser>>versionAt: {accessing} · ct 1/27/2022 00:16
+ versionAt: index
+ ^ self repositoryGroup versionWithInfo: (self infos at: index)
MCVersionHistoryBrowser>>widgetSpecs {morphic ui} · ct 1/27/2022 00:16 (changed)
widgetSpecs
^ #(
- ((listMorph:selection:menu: list selection getMenu:) (0 0 0.3 1))
+ ((listMorph:selection:menu:keystroke:drag: list selection getMenu: nil versionAt:) (0 0 0.3 1))
((textMorph: summary) (0.3 0 1 1))
)
MCVersionInspector>>browse {accessing} · ct 1/26/2022 22:02 (changed)
browse
- self version browse
+ ^ self version browse
MCWorkingCopy>>browse {ui} · ct 1/27/2022 00:25 (changed)
browse
- (MCSnapshotBrowser forSnapshot: self package snapshot)
- label: 'Snapshot Browser: ', self packageName;
- show.
+ ^ (MCSnapshotBrowser forSnapshot: self package snapshot)
+ label: ('Snapshot Browser: {1}' translated format: {self packageName});
+ show
MCWorkingCopyBrowser>>repositoryAt: {morphic ui} · ct 1/26/2022 22:20
+ repositoryAt: index
+ ^ self repositories at: index
MCWorkingCopyBrowser>>workingCopyAt: {morphic ui} · ct 1/26/2022 22:19
+ workingCopyAt: index
+ ^ self workingCopies at: index
=============== Summary (browse&drag-Tools+System.cs) ===============
Change Set: browse&drag-Tools+System
Date: 27 January 2022
Author: Christoph Thiede
This changeset complements genericDropSourceCode.cs by specifying the #dragItem/#dragType protocol for some changes tools and browsers, and providing proper implementations of #browse for changes.
All affected tools:
- Change sorters (single + dual), change set browser
- Dependency browser
- Package browser
- Preferences (no UI support yet, just follow the idiom to answer the browsing tool from #browse)
=============== Postscript ===============
('accessing' author classChanges classRemoves editPostscript hasPostscript methodChanges methodInfoFromRemoval: name name: numberOfChanges postscriptHasDependents printOn: removePostscript structures superclasses)
('change logging' addClass: changeClass:from: event: noteNewMethod:forClass:selector:priorMethod: removeSelector:class:priorMethod:lastMethodInfo: renameClass:from:to:)
('class changes' changedClassNames changedClasses changedClassesDo: classChangeAt: commentClass: containsClass: fatDefForClass: noteClassForgotten: noteClassStructure: noteRemovalOf: reorganizeClass: trimHistory)
('converting' convertApril2000:using: convertToCurrentVersion:refStream:)
('fileIn/Out' askAddedInstVars: askRemovedInstVars: askRenames:addTo:using: assurePostscriptExists assurePreambleExists buildMessageForMailOutWithUser: checkForAlienAuthorship checkForAnyAlienAuthorship checkForConversionMethods checkForSlips checkForUnclassifiedMethods checkForUncommentedClasses checkForUncommentedMethods checkForUnsentMessages chooseSubjectPrefixForEmail defaultChangeSetDirectory fileOut fileOutChangesFor:on: fileOutOn: fileOutPSFor:on: fileOutPostscriptOn: fileOutPreambleOn: lookForSlips mailOut objectForDataStream: postscript postscriptString postscriptString: postscript: preamble preambleString preambleString: preambleTemplate preamble: setPreambleToSay: summaryString summaryStringDelta: verboseFileOut)
('initialize-release' beIsolationSetFor: clear initialize isMoribund veryDeepCopyWith: wither zapHistory)
('isolation layers' invoke isolatedProject isolationSet: revoke uninstall)
('method changes' adoptSelector:forClass: atSelector:class:put: changedMessageList changedMessageListAugmented changedMethods changedMethodsDo: hasAnyChangeForSelector: messageListForChangesWhich:ifNone: methodChangesAtClass: removeSelectorChanges:class: selectorsInClass:)
('moving changes' absorbClass:from: absorbMethod:class:from: absorbStructureOfClass:from: assimilateAllChangesFoundIn: editPreamble expungeEmptyClassChangeEntries expungeUniclasses forgetAllChangesFoundIn: forgetChangesForClass:in: hasPreamble methodsWithAnyInitialsOtherThan: methodsWithInitialsOtherThan: methodsWithoutComments removeClassAndMetaClassChanges: removeClassChanges: removePreamble)
('testing' belongsToAProject containsMethodAtPosition: correspondingProject isEmpty methodsWithoutClassifications okayToRemove okayToRemoveInforming: projectsBelongedTo)
('private' addCoherency: atClass:add: atClass:includes: atSelector:class: changed:with: changeRecorderFor: fileOutClassDefinition:on: oldNameFor:)
('*Monticello-testing' isForPackageLoad)
('*Etoys-Squeakland-fileIn/Out' checkForSUnit)
('*Tools-Browsing' browse)
=============== Diff ===============
ChangeSet>>browse {*Tools-Browsing} · ct 1/26/2022 22:03
+ browse
+
+ ^ ChangeSetBrowser openOn: self
ChangeSorter>>buildChangeSetListWith: {toolbuilder} · ct 1/26/2022 22:04 (changed)
buildChangeSetListWith: builder
| listSpec |
listSpec := builder pluggableListSpec new.
listSpec
model: self;
list: #changeSetList;
getSelected: #currentCngSet;
setSelected: #showChangeSetNamed:;
menu: #changeSetMenu:shifted:;
keyPress: #changeSetListKey:from:;
dragItem: #dragChangeSet:;
+ dragType: #dragTypeForChangeSet:;
autoDeselect: false.
^ listSpec
ChangeSorter>>buildClassListWith: {toolbuilder} · ct 1/26/2022 22:06 (changed)
buildClassListWith: builder
| listSpec |
listSpec := builder pluggableListSpec new.
listSpec
model: self;
list: #classList;
getSelected: #currentClassName;
setSelected: #currentClassName:;
menu: #classListMenu:shifted:;
keyPress: #classListKey:from:;
- dragItem: #dragClass:.
+ dragItem: #dragClass:;
+ dragType: #dragTypeForClass:.
^ listSpec
ChangeSorter>>buildMessageListWith: {toolbuilder} · ct 1/26/2022 22:07 (changed)
buildMessageListWith: builder
| listSpec |
listSpec := builder pluggableListSpec new.
listSpec
model: self;
list: #messageList;
getSelected: #currentSelector;
setSelected: #currentSelector:;
menu: #messageMenu:shifted:;
keyPress: #messageListKey:from:;
- dragItem: #dragMessage:.
+ dragItem: #dragMessage:;
+ dragType: #dragTypeForMessage:.
^ listSpec
ChangeSorter>>dragTypeForChangeSet: {dragging} · ct 1/26/2022 22:04
+ dragTypeForChangeSet: anIndex
+
+ ^ #sourceCode
ChangeSorter>>dragTypeForClass: {dragging} · ct 1/26/2022 22:06
+ dragTypeForClass: anIndex
+
+ ^ #sourceCode
ChangeSorter>>dragTypeForMessage: {dragging} · ct 1/26/2022 22:06
+ dragTypeForMessage: anIndex
+
+ ^ #sourceCode
DependencyBrowser>>buildClassDepsWith: {toolbuilder} · ct 1/27/2022 00:03 (changed)
buildClassDepsWith: builder
| listSpec |
listSpec := builder pluggableListSpec new.
listSpec
model: self;
name: 'Required Classes' ;
list: #classDepsList;
getIndex: #classDepsIndex;
setIndex: #classDepsIndex:;
menu: #classDepsMenu:;
- keyPress: #classDepsKey:from:.
+ keyPress: #classDepsKey:from:;
+ dragItem: #dragFromClassDepAt:;
+ dragType: #dragTypeForClassDepAt:.
^listSpec
DependencyBrowser>>buildClassListWith: {toolbuilder} · ct 1/27/2022 00:07 (changed)
buildClassListWith: builder
| listSpec |
listSpec := builder pluggableListSpec new.
listSpec
model: self;
name: 'Client classes' ;
list: #classList;
getIndex: #classListIndex;
setIndex: #classListIndex:;
menu: #classListMenu:;
- keyPress: #classListKey:from:.
+ keyPress: #classListKey:from:;
+ dragItem: #dragFromClassAt:;
+ dragType: #dragTypeForClassAt:.
^listSpec
DependencyBrowser>>buildMessageListWith: {toolbuilder} · ct 1/27/2022 00:05 (changed)
buildMessageListWith: builder
| listSpec |
listSpec := builder pluggableListSpec new.
listSpec
model: self;
name: 'Client methods' ;
list: #messageList;
getIndex: #messageListIndex;
setIndex: #messageListIndex:;
menu: #messageListMenu:;
- keyPress: #messageListKey:from:.
+ keyPress: #messageListKey:from:;
+ dragItem: #dragFromMessageAt:;
+ dragType: #dragTypeForMessageAt:.
^listSpec
DependencyBrowser>>buildPackageDepsWith: {toolbuilder} · ct 1/27/2022 00:05 (changed)
buildPackageDepsWith: builder
| listSpec |
listSpec := builder pluggableListSpec new.
- listSpec
+ listSpec
model: self;
- name: 'Required Packages' ;
- list: #packageDepsList;
- getIndex: #packageDepsIndex;
- setIndex: #packageDepsIndex:;
- menu: #packageDepsMenu:;
- keyPress: #packageDepsKey:from:.
- ^listSpec
+ name: 'Required Packages';
+ list: #packageDepsList;
+ getIndex: #packageDepsIndex;
+ setIndex: #packageDepsIndex:;
+ menu: #packageDepsMenu:;
+ keyPress: #packageDepsKey:from:;
+ dragItem: #dragFromPackageDepAt:;
+ dragType: #dragTypeForPackageDepAt:.
+ ^ listSpec
DependencyBrowser>>buildPackageListWith: {toolbuilder} · ct 1/27/2022 00:06 (changed)
buildPackageListWith: builder
| listSpec |
listSpec := builder pluggableListSpec new.
listSpec
model: self;
name: 'Packages' ;
list: #packageList;
getIndex: #packageListIndex;
setIndex: #packageListIndex:;
menu: #packageListMenu:;
- keyPress: #packageListKey:from:.
+ keyPress: #packageListKey:from:;
+ dragItem: #dragFromPackageAt:;
+ dragType: #dragTypeForPackageAt:.
^listSpec
DependencyBrowser>>dragFromClassAt: {class list} · ct 1/27/2022 00:08
+ dragFromClassAt: anInteger
+
+ ^ self environment classNamed: (self classList at: anInteger)
DependencyBrowser>>dragFromClassDepAt: {class dependencies} · ct 1/27/2022 00:04
+ dragFromClassDepAt: anInteger
+
+ ^ self environment classNamed: (self classDeps at: anInteger)
DependencyBrowser>>dragFromMessageAt: {message list} · ct 1/27/2022 00:08
+ dragFromMessageAt: anInteger
+
+ ^ self selectedClass >> (self messageList at: anInteger)
DependencyBrowser>>dragFromPackageAt: {package list} · ct 1/27/2022 00:10
+ dragFromPackageAt: anInteger
+
+ ^ PackageInfo named: (self packageList at: anInteger)
DependencyBrowser>>dragFromPackageDepAt: {package dependencies} · ct 1/27/2022 00:11
+ dragFromPackageDepAt: anInteger
+
+ ^ PackageInfo named: (self packageDeps at: anInteger)
DependencyBrowser>>dragTypeForClassAt: {class list} · ct 1/27/2022 00:07
+ dragTypeForClassAt: anInteger
+
+ ^ #sourceCode
DependencyBrowser>>dragTypeForClassDepAt: {class dependencies} · ct 1/27/2022 00:04
+ dragTypeForClassDepAt: anInteger
+
+ ^ #sourceCode
DependencyBrowser>>dragTypeForMessageAt: {message list} · ct 1/27/2022 00:08
+ dragTypeForMessageAt: anInteger
+
+ ^ #sourceCode
DependencyBrowser>>dragTypeForPackageAt: {package list} · ct 1/27/2022 00:10
+ dragTypeForPackageAt: anInteger
+
+ ^ #sourceCode
DependencyBrowser>>dragTypeForPackageDepAt: {package dependencies} · ct 1/27/2022 00:09
+ dragTypeForPackageDepAt: anInteger
+
+ ^ #sourceCode
PackagePaneBrowser>>buildPackageListWith: {toolbuilder} · ct 1/27/2022 00:11 (changed)
buildPackageListWith: builder
| listSpec |
listSpec := builder pluggableListSpec new.
listSpec
model: self;
name: #packageList;
list: #packageList;
getIndex: #packageListIndex;
setIndex: #packageListIndex:;
menu: #packageMenu:;
- keyPress: #packageListKey:from:.
+ keyPress: #packageListKey:from:;
+ dragItem: #dragFromPackageAt:;
+ dragType: #dragTypeForPackageAt:.
^listSpec
PackagePaneBrowser>>dragFromPackageAt: {package list} · ct 1/27/2022 00:12
+ dragFromPackageAt: anInteger
+
+ ^ PackageInfo named: (self packageList at: anInteger)
PackagePaneBrowser>>dragTypeForPackageAt: {package list} · ct 1/27/2022 00:11
+ dragTypeForPackageAt: anInteger
+
+ ^ #sourceCode
PragmaPreference>>browse {browsing} · ct 1/26/2022 22:02 (changed)
browse
- ToolSet
+ ^ ToolSet
browse: self provider class
- selector: self selectors first.
+ selector: self selectors first
Preference>>browse {browsing} · ct 1/26/2022 22:02 (changed)
browse
- ToolSet
+ ^ ToolSet
browse: Preferences class
- selector: self selectors first.
+ selector: self selectors first
---
Sent from Squeak Inbox Talk
["genericDropSourceCode.1.cs"]
["browse&drop-Monticello.1.cs"]
["browse&drag-Tools+System.1.cs"]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220127/4682941c/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: genericDropSourceCode.1.cs
Type: application/octet-stream
Size: 4644 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220127/4682941c/attachment-0003.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: browse&drop-Monticello.1.cs
Type: application/octet-stream
Size: 8497 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220127/4682941c/attachment-0004.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: browse&drag-Tools+System.1.cs
Type: application/octet-stream
Size: 11635 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220127/4682941c/attachment-0005.obj>
More information about the Squeak-dev
mailing list
|