[Pkg] The Trunk: ToolBuilder-Morphic-mt.149.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Aug 25 08:56:55 UTC 2015


Marcel Taeumel uploaded a new version of ToolBuilder-Morphic to project The Trunk:
http://source.squeak.org/trunk/ToolBuilder-Morphic-mt.149.mcz

==================== Summary ====================

Name: ToolBuilder-Morphic-mt.149
Author: mt
Time: 25 August 2015, 10:56:48.908 am
UUID: a99ffbe0-4d17-0240-92ab-4265cf26bc36
Ancestors: ToolBuilder-Morphic-topa.148

Adds support for drag-type selectors in models for lists and trees instead of hardcoding #dragTransferPlus.

Note that we might want to get rid of Object >> #dragTransferTypeForMorph: someday.... No one is implementing that anyway. Maybe also Object >> #dragPassengerFor:inMorph:. Using #dragItemSelector to let the model decide seems more appropriate.

=============== Diff against ToolBuilder-Morphic-topa.148 ===============

Item was changed:
  PluggableListMorph subclass: #PluggableListMorphPlus
+ 	instanceVariableNames: 'dragItemSelector dropItemSelector wantsDropSelector getHelpSelector dragTypeSelector'
- 	instanceVariableNames: 'dragItemSelector dropItemSelector wantsDropSelector getHelpSelector'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'ToolBuilder-Morphic'!
  
  !PluggableListMorphPlus commentStamp: 'ar 7/15/2005 11:10' prior: 0!
  Extensions for PluggableListMorph needed by ToolBuilder!

Item was added:
+ ----- Method: PluggableListMorphPlus>>dragTypeSelector (in category 'accessing') -----
+ dragTypeSelector
+ 	^dragTypeSelector!

Item was added:
+ ----- Method: PluggableListMorphPlus>>dragTypeSelector: (in category 'accessing') -----
+ dragTypeSelector: aSymbol
+ 	dragTypeSelector := aSymbol.!

Item was changed:
  ----- Method: PluggableListMorphPlus>>startDrag: (in category 'drag and drop') -----
  startDrag: evt 
  	
  	dragItemSelector ifNil:[^self].
  	evt hand hasSubmorphs ifTrue: [^ self].
  	[ | dragIndex draggedItem ddm |
  	(self dragEnabled and: [model okToChange]) ifFalse: [^ self].
  	dragIndex := self rowAtLocation: evt position.
  	dragIndex = 0 ifTrue:[^self].
  	draggedItem := model perform: dragItemSelector with: (self modelIndexFor: dragIndex).
  	draggedItem ifNil:[^self].
  	ddm := TransferMorph withPassenger: draggedItem from: self.
+ 	ddm dragTransferType: (self dragTypeSelector
+ 		ifNil: [#dragTransferPlus]
+ 		ifNotNil: [:s | self model perform: s with: (self modelIndexFor: dragIndex)]).
- 	ddm dragTransferType: #dragTransferPlus.
  	evt hand grabMorph: ddm]
  		ensure: [Cursor normal show.
  			evt hand releaseMouseFocus: self]!

Item was changed:
  SimpleHierarchicalListMorph subclass: #PluggableTreeMorph
+ 	instanceVariableNames: 'rootWrappers selectedWrapper getRootsSelector getChildrenSelector hasChildrenSelector getLabelSelector getIconSelector getSelectedPathSelector setSelectedParentSelector getHelpSelector dropItemSelector wantsDropSelector dragItemSelector dragTypeSelector nodeClass lastKeystrokeTime lastKeystrokes'
- 	instanceVariableNames: 'rootWrappers selectedWrapper getRootsSelector getChildrenSelector hasChildrenSelector getLabelSelector getIconSelector getSelectedPathSelector setSelectedParentSelector getHelpSelector dropItemSelector wantsDropSelector dragItemSelector nodeClass lastKeystrokeTime lastKeystrokes'
  	classVariableNames: 'FilterByLabelsOnly MaximumSearchDepth'
  	poolDictionaries: ''
  	category: 'ToolBuilder-Morphic'!
  
  !PluggableTreeMorph commentStamp: 'ar 2/12/2005 04:38' prior: 0!
  A pluggable tree morph.!

Item was added:
+ ----- Method: PluggableTreeMorph>>dragTypeSelector (in category 'accessing') -----
+ dragTypeSelector
+ 	^dragTypeSelector!

Item was added:
+ ----- Method: PluggableTreeMorph>>dragTypeSelector: (in category 'accessing') -----
+ dragTypeSelector: aSymbol
+ 	dragTypeSelector := aSymbol.!

Item was changed:
  ----- Method: PluggableTreeMorph>>startDrag: (in category 'morphic') -----
  startDrag: evt 
  	| ddm itemMorph passenger |
  	self dragEnabled
  		ifTrue: [itemMorph := scroller submorphs
  						detect: [:any | any highlightedForMouseDown]
  						ifNone: []].
  	(itemMorph isNil
  			or: [evt hand hasSubmorphs])
  		ifTrue: [^ self].
  	itemMorph highlightForMouseDown: false.
  	itemMorph ~= self selectedMorph
  		ifTrue: [self setSelectedMorph: itemMorph].
  	passenger := self model perform: dragItemSelector with: itemMorph withoutListWrapper.
  	passenger
  		ifNotNil: [ddm := TransferMorph withPassenger: passenger from: self.
+ 			ddm dragTransferType: (self dragTypeSelector
+ 				ifNil: [#dragTransferPlus]
+ 				ifNotNil: [:s | self model perform: s with: itemMorph withoutListWrapper]).
- 			ddm dragTransferType: #dragTransferPlus.
  			Preferences dragNDropWithAnimation
  				ifTrue: [self model dragAnimationFor: itemMorph transferMorph: ddm].
  			evt hand grabMorph: ddm].
  	evt hand releaseMouseFocus: self!



More information about the Packages mailing list