'From Squeak3.7 of ''4 September 2004'' [latest update: #5989] on 11 May 2008 at 8:52:43 am'!
!classDefinition: #ListLW category: #'LightWidgets-Kernel'!
CompositeLW subclass: #ListLW
	instanceVariableNames: ''
	classVariableNames: ''
	poolDictionaries: ''
	category: 'LightWidgets-Kernel'!

!ListLW commentStamp: '<historical>' prior: 0!
CompositeLW and keyboard navigation already provide most of the functionality for a list widget. ListLW only add scrolling to make the current item visible. Later, it might add scrollbars.!


!LightWidget methodsFor: 'dropping/grabbing' stamp: 'jmv 5/11/2008 07:30'!
justDroppedInto: aMorph event: anEvent
	"This message is sent to a dropped morph after it has been dropped on -- and been accepted by -- a drop-sensitive morph"

	| aWindow |
	self formerOwner: nil.
	self formerPosition: nil.
	(aWindow _ aMorph ownerThatIsA: OldSystemWindow) ifNotNil:
		[aWindow isActive ifFalse:
			[aWindow activate]].
	(self isInWorld ) ifTrue:
		[self world startSteppingSubmorphsOf: self].
	"Note an unhappy inefficiency here:  the startStepping... call will often have already been called in the sequence leading up to entry to this method, but unfortunately the isPartsDonor: call often will not have already happened, with the result that the startStepping... call will not have resulted in the startage of the steppage."! !

!LightWidget methodsFor: 'focus handling' stamp: 'jmv 5/11/2008 07:43'!
gotNavigationFocus
	owner ifNotNil: [owner gotNavigationFocus: self].
	self comeToFront; changed! !

!LightWidget methodsFor: 'focus handling' stamp: 'jmv 5/11/2008 07:08'!
keyboardFocusChange: aBoolean
	"The message is sent to a morph when its keyboard focus change. The given argument indicates that the receiver is gaining keyboard focus (versus losing) the keyboard focus. Morphs that accept keystrokes could change their appearance in some way when they are the current keyboard focus. This default implementation does nothing."! !

!LightWidget methodsFor: 'focus handling' stamp: 'jmv 5/11/2008 07:16'!
lostNavigationFocus

	self changed! !

!LightWidget methodsFor: 'geometry' stamp: 'jmv 5/11/2008 08:13'!
height

	^ bounds height! !

!LightWidget methodsFor: 'geometry' stamp: 'jmv 5/11/2008 08:13'!
width

	^ bounds width! !

!LightWidget methodsFor: 'geometry' stamp: 'jmv 5/11/2008 08:12'!
width: aNumber

	self extent: aNumber asInteger@self height! !

!LightWidget methodsFor: 'private' stamp: 'jmv 5/11/2008 07:57'!
privateFullMoveBy: delta
	"Private!! Relocate me and all of my subMorphs by recursion. Subclasses that implement different coordinate systems may override this method."

	self privateMoveBy: delta.
	owner ifNotNil:[
		owner isTextMorph ifTrue:[owner adjustTextAnchor: self]].! !


!ButtonLW class methodsFor: 'instance creation' stamp: 'jmv 5/11/2008 08:43'!
target: anObject action: aSymbol label: aString
	^self new
		target: anObject action: aSymbol;
		label: aString! !


!CompositeLW methodsFor: 'focus handling' stamp: 'jmv 5/11/2008 07:45'!
gotNavigationFocus: aSubMorph
	"Default is to do nothing."! !

!CompositeLW methodsFor: 'private' stamp: 'jmv 5/11/2008 07:58'!
privateFullMoveBy: delta
	"Private!! Relocate me and all of my subMorphs by recursion. Subclasses that implement different coordinate systems may override this method."

	self privateMoveBy: delta.
	submorphs do: [ :m |
		m privateFullMoveBy: delta ].
	owner ifNotNil:[
		owner isTextMorph ifTrue:[owner adjustTextAnchor: self]].! !


!LabelLW class methodsFor: 'instance creation' stamp: 'jmv 5/11/2008 08:44'!
label: aString
	^self new label: aString! !


!ListLW methodsFor: 'focus handling' stamp: 'jmv 5/11/2008 08:00'!
gotNavigationFocus: aSubmorph
	"Default is to do nothing."
	
	| delta |
	delta _ aSubmorph bounds amountToTranslateWithin: bounds.
	delta = (0@0) ifFalse: [
		submorphs do: [ :m |
			m privateFullMoveBy: delta].
		self changed]! !

!ListLW methodsFor: 'submorphs-add/remove' stamp: 'jmv 5/11/2008 08:51'!
addItem: aString action: aSymbol
	^self addItem: aString target: owner action: aSymbol! !

!ListLW methodsFor: 'submorphs-add/remove' stamp: 'jmv 5/11/2008 08:52'!
addItem: aString target: anObject action: aSymbol

	| item |
	item _ MenuItemLW target: anObject action: aSymbol label: aString.
	self addMorph: item.
	^item! !

!ListLW methodsFor: 'submorphs-add/remove' stamp: 'jmv 5/11/2008 08:16'!
addMorph: aMorph
	| p |
	p _ submorphs isEmpty 
		ifFalse: [submorphs last bounds bottomLeft]
		ifTrue: [bounds topLeft].
	self addMorphBack: aMorph.
	aMorph width: self width; position: p! !


!MenuItemLW class methodsFor: 'instance creation' stamp: 'jmv 5/11/2008 08:37'!
target: anObject action: aSymbol label: aString
	^self new
		target: anObject action: aSymbol;
		label: aString! !


!Morph methodsFor: 'dropping/grabbing' stamp: 'jmv 5/11/2008 07:30'!
justDroppedInto: aMorph event: anEvent
	"This message is sent to a dropped morph after it has been dropped on -- and been accepted by -- a drop-sensitive morph"

	| aWindow |
	self formerOwner: nil.
	self formerPosition: nil.
	(aWindow _ aMorph ownerThatIsA: OldSystemWindow) ifNotNil:
		[aWindow isActive ifFalse:
			[aWindow activate]].
	(self isInWorld ) ifTrue:
		[self world startSteppingSubmorphsOf: self].
	"Note an unhappy inefficiency here:  the startStepping... call will often have already been called in the sequence leading up to entry to this method, but unfortunately the isPartsDonor: call often will not have already happened, with the result that the startStepping... call will not have resulted in the startage of the steppage."! !

!Morph methodsFor: 'focus handling' stamp: 'jmv 5/11/2008 07:44'!
gotNavigationFocus
	owner ifNotNil: [owner gotNavigationFocus: self].
	self comeToFront; changed! !

!Morph methodsFor: 'focus handling' stamp: 'jmv 5/11/2008 07:09'!
keyboardFocusChange: aBoolean
	"The message is sent to a morph when its keyboard focus change. The given argument indicates that the receiver is gaining keyboard focus (versus losing) the keyboard focus. Morphs that accept keystrokes could change their appearance in some way when they are the current keyboard focus. This default implementation does nothing."! !

!Morph methodsFor: 'focus handling' stamp: 'jmv 5/11/2008 07:17'!
lostNavigationFocus

	self changed! !

!Morph methodsFor: 'private' stamp: 'jmv 5/11/2008 07:57'!
privateFullMoveBy: delta

	self privateMoveBy: delta.
	owner ifNotNil:[
		owner isTextMorph ifTrue:[owner adjustTextAnchor: self]].! !


!CompositeMorph methodsFor: 'focus handling' stamp: 'jmv 5/11/2008 07:45'!
gotNavigationFocus: aSubMorph
	"Default is to do nothing."! !

!CompositeMorph methodsFor: 'private' stamp: 'jmv 5/11/2008 07:57'!
privateFullMoveBy: delta
	"Private!! Relocate me and all of my subMorphs by recursion. Subclasses that implement different coordinate systems may override this method."

	self privateMoveBy: delta.
	self revisar.
	owner ifNotNil:[
		owner isTextMorph ifTrue:[owner adjustTextAnchor: self]].! !


!OldMorph methodsFor: 'dropping/grabbing' stamp: 'jmv 5/11/2008 07:30'!
justDroppedInto: aMorph event: anEvent 
	"This message is sent to a dropped morph after it has been dropped on -- and been accepted by -- a drop-sensitive morph"

	| aWindow |
	self formerOwner: nil.
	self formerPosition: nil.
	(aWindow := aMorph ownerThatIsA: OldSystemWindow) 
		ifNotNil: [aWindow isActive ifFalse: [aWindow activate]].
	self isInWorld ifTrue: [self world startSteppingSubmorphsOf: self].
	"Note an unhappy inefficiency here:  the startStepping... call will often have already been called in the sequence leading up to entry to this method, but unfortunately the isPartsDonor: call often will not have already happened, with the result that the startStepping... call will not have resulted in the startage of the steppage."! !

!OldMorph methodsFor: 'focus handling' stamp: 'jmv 5/11/2008 07:44'!
gotNavigationFocus
	owner ifNotNil: [owner gotNavigationFocus: self].
	self comeToFront; changed! !

!OldMorph methodsFor: 'focus handling' stamp: 'jmv 5/11/2008 07:48'!
gotNavigationFocus: aSubMorph
	"Default is to do nothing."! !

!OldMorph methodsFor: 'focus handling' stamp: 'jmv 5/11/2008 07:11'!
keyboardFocusChange: aBoolean
	"The message is sent to a morph when its keyboard focus change. The given argument indicates that the receiver is gaining keyboard focus (versus losing) the keyboard focus. Morphs that accept keystrokes should change their appearance in some way when they are the current keyboard focus. This default implementation does nothing."! !

!OldMorph methodsFor: 'focus handling' stamp: 'jmv 5/11/2008 07:17'!
lostNavigationFocus

	self changed! !

!OldMorph methodsFor: 'geometry' stamp: 'jmv 5/11/2008 08:11'!
width: aNumber

	self extent: aNumber asInteger@self height! !

!OldMorph methodsFor: 'private' stamp: 'jmv 5/11/2008 07:58'!
privateFullMoveBy: delta
	"Private!! Relocate me and all of my subMorphs by recursion. Subclasses that implement different coordinate systems may override this method."

	self privateMoveBy: delta.
	submorphs do: [ :m |
		m privateFullMoveBy: delta ].
	owner ifNotNil:[
		owner isTextMorph ifTrue:[owner adjustTextAnchor: self]].! !


!OldHandMorph methodsFor: 'focus handling' stamp: 'jmv 5/11/2008 07:19'!
navigationFocus: aMorph
	self newKeyboardFocus: aMorph.
	navigationFocus notNil ifTrue: [
		navigationFocus lostNavigationFocus].
	navigationFocus _ (aMorph == World) ifTrue: [nil] ifFalse: [aMorph].
	navigationFocus notNil ifTrue: [
		navigationFocus gotNavigationFocus].! !


!OldSystemWindow methodsFor: 'focus handling' stamp: 'jmv 5/11/2008 07:44'!
gotNavigationFocus
	owner ifNotNil: [owner gotNavigationFocus: self].
	self activate; changed! !


!StackedPageSample1LW methodsFor: 'initialization' stamp: 'jmv 5/11/2008 08:51'!
initialize
	| title close menu |
	super initialize.
	level _ 1.
	bounds _ 0 @ 0 extent: 400 @ 300.
	title _ LabelLW label: 'Application Start'.
	title bounds: (110@30 corner: 300@60).
	close _ ButtonLW target: self action: #delete label: 'x'.
	close bounds: (0@0 extent: 25@25).
	menu _ ListLW new.
	menu bounds: (20@150 extent: 340@120).
	self
		addMorph: title;
		addMorph: close;
		addMorph: menu.
	firstFocus _ menu addItem: 'Go back' action: #delete.
	menu
		addItem: 'Something to do 1' action: #openChild;
		addItem: 'Something to do 2' action: #openChild;
		addItem: 'Something to do 3' action: #openChild;
		addItem: 'Something to do 4' action: #openChild;
		addItem: 'Something to do 5' action: #openChild;
		addItem: 'Something to do 6' action: #openChild.
	ActiveHand navigationFocus: firstFocus! !


!OldSystemWindow reorganize!
('drawing' areasRemainingToFill: colorForInsets makeMeVisible raisedColor scrollBarColor)
('events' doFastFrameDrag: handleListenEvent: handlesMouseDown: handlesMouseOverDragging: mouseDown: mouseEnterDragging: mouseLeaveDragging: mouseMove: mouseUp: paneTransition: secondaryPaneTransition:divider: wantsToBeDroppedInto:)
('focus handling' gotNavigationFocus)
('geometry' extent: justDroppedInto:event: labelRect paneMorphs panelRect position: setPaneRectsFromBounds)
('initialization' addCloseBox addExpandBox addLabelArea addMenuControl applyModelExtent boxExtent createBox createCloseBox createCollapseBox createExpandBox createMenuBox defaultBorderColor defaultBorderWidth defaultColor initialize initializeLabelArea maximumExtent maximumExtent: model: replaceBoxes setFramesForLabelArea)
('label' externalName getRawLabel label labelHeight labelWidgetAllowance relabel setLabel: setLabelWidgetAllowance setStripeColorsFrom: tryToRenameTo: update: wantsLabel widthOfFullLabelText)
('layout' layoutBounds)
('menu' addCustomMenuItems:hand: buildWindowMenu changeColor deleteCloseBox fullScreen makeClosable makeSecondTopmost makeUnclosable offerWindowMenu sendToBack setWindowColor setWindowColor:)
('open/close' closeBoxHit delete initialExtent mustNotClose openAsIs openAsIsIn: openInWorld: openInWorld:extent: openInWorldExtent: positionSubmorphs)
('panes' addMorph:frame: addMorph:fullFrame: holdsTranscript paneColor paneColor: paneColorToUse paneMorphSatisfying: replacePane:with: restoreDefaultPaneColor setUpdatablePanesFrom: titleAndPaneText updatablePanes updateBox:color: updateBoxesColor: updatePaneColors)
('resize/collapse' collapse collapseOrExpand collapsedFrame doFastWindowReframe: expand expandBoxHit fastFramingOn getCollapsedFrame isCollapsed mouseLeaveEvent:fromPane: paneWithLongestSide:near: reframePanesAdjoining:along:to: spawnOffsetReframeHandle:divider: spawnPaneFrameHandle: spawnReframeHandle: unexpandedFrame unexpandedFrame: wantsExpandBox)
('stepping' amendSteppingStatus stepAt: stepTime wantsSteps wantsStepsWhenCollapsed)
('testing' isSystemWindow shouldDropOnMouseUp)
('top window' activate activateAndForceLabelToShow activeOnlyOnTop adjustBorderUponActivationWhenLabeless adjustBorderUponDeactivationWhenLabeless isActive lockInactivePortions passivate updatePanesFromSubmorphs)
!

OldPasteUpMorph removeSelector: #privateFullMoveBy:!
OldMorph removeSelector: #goHome!

!OldMorph reorganize!
('*geniestubs-stubs' handleMouseDown: mouseStillDownStepRate)
('Morphic 3 support' addLocationsTo:zoomNScrollTo:coordinateSystemsTo:from: coordinatesFromWorld: externalize:in: externalize:to: internalize:from:)
('WiW support' addMorphInFrontOfLayer: addMorphInLayer: morphicLayerNumber morphicLayerNumberWithin: shouldGetStepsFrom:)
('accessing' adoptPaneColor: balloonText beSticky borderColor borderColor: borderStyle borderStyle: borderStyleForSymbol: borderWidth borderWidth: color color: colorForInsets doesBevels eventHandler eventHandler: forwardDirection highlight highlightColor insetColor isLocked isSticky lock lock: raisedColor rememberedColor rememberedColor: resistsRemoval scaleFactor setBorderStyle: sticky: toggleResistsRemoval toggleStickiness unlock unlockContents userString)
('accessing - extension' assureExtension extension hasExtension initializeExtension privateExtension: resetExtension)
('accessing - properties' hasProperty: otherProperties removeProperty: setProperty:toValue: valueOfProperty: valueOfProperty:ifAbsent: valueOfProperty:ifAbsentPut: valueOfProperty:ifPresentDo:)
('as yet unclassified' rotationDegrees:)
('button' doButtonAction)
('caching' fullReleaseCachedState releaseCachedState)
('change reporting' addedMorph: invalidRect: invalidRect:from: ownerChanged privateInvalidateMorph:)
('classification' isAlignmentMorph isHandMorph isPlayfieldLike isTextMorph isWorldMorph isWorldOrHandMorph)
('copying' copy deepCopy duplicate duplicateMorphCollection: veryDeepCopyWith: veryDeepFixupWith: veryDeepInner:)
('creation' asMorph)
('debug and other' addDebuggingItemsTo:hand: allStringsAfter: altSpecialCursor0 altSpecialCursor1 altSpecialCursor2 altSpecialCursor3 altSpecialCursor3: buildDebugMenu: inspectOwnerChain installModelIn: ownerChain resumeAfterDrawError resumeAfterStepError)
('dispatching' disableSubmorphFocusForHand:)
('drawing' areasRemainingToFill: changeClipSubmorphs clipLayoutCells clipLayoutCells: clipSubmorphs clipSubmorphs: clippingBounds drawDropHighlightOn: drawErrorOn: drawHighlightOn: drawMouseDownHighlightOn: drawOn: drawSubmorphsOn: drawingFails drawingFailsNot fullDrawOn: hasClipSubmorphsString hide highlightForMouseDown highlightForMouseDown: highlightedForMouseDown imageForm imageForm:forRectangle: imageFormForRectangle: isKnownFailing refreshWorld shadowForm show visible visible:)
('drop shadows' shadowColor shadowColor:)
('dropping/grabbing' aboutToBeGrabbedBy: dragEnabled dragEnabled: dragNDropEnabled dropEnabled dropEnabled: dropHighlightColor enableDrag: enableDragNDrop enableDragNDrop: enableDrop: formerOwner formerOwner: formerPosition formerPosition: highlightForDrop highlightForDrop: highlightedForDrop justDroppedInto:event: justGrabbedFrom: rejectDropMorphEvent: repelsMorph:event: resetHighlightForDrop separateDragAndDrop slideBackToFormerSituation: startDrag:with: vanishAfterSlidingTo:event: wantsDroppedMorph:event: wantsToBeDroppedInto: wantsToBeOpenedInWorld)
('e-toy support' allMorphsAndBookPagesInto: changeAllBorderColorsFrom:to: containingWindow cursor defaultValueOrNil embeddedInMorphicWindowLabeled: rotationStyle rotationStyle: unlockOneSubpart wantsRecolorHandle wrappedInWindow: wrappedInWindowWithTitle:)
('event handling' click click: cursorPoint doubleClick: doubleClickTimeout: dropFiles: handlesKeyboard: handlesMouseDown: handlesMouseOver: handlesMouseOverDragging: handlesMouseStillDown: hasFocus keyDown: keyStroke: keyUp: mouseDown: mouseEnter: mouseEnterDragging: mouseLeave: mouseLeaveDragging: mouseMove: mouseStillDown: mouseStillDownThreshold mouseUp: on:send:to: on:send:to:withValue: startDrag: suspendEventHandler transformFrom: transformFromOutermostWorld transformFromWorld wantsDropFiles: wantsKeyboardFocusFor: wouldAcceptKeyboardFocus wouldAcceptKeyboardFocusUponTab)
('events-accessing' actionMap updateableActionMap)
('events-alarms' addAlarm:after: addAlarm:at: addAlarm:with:after: addAlarm:with:at: addAlarm:with:with:after: addAlarm:with:with:at: addAlarm:withArguments:after: addAlarm:withArguments:at: alarmScheduler removeAlarm: removeAlarm:at:)
('events-processing' containsPoint:event: defaultEventDispatcher handleDropFiles: handleDropMorph: handleEvent: handleFocusEvent: handleKeyDown: handleKeyUp: handleKeystroke: handleListenEvent: handleMouseEnter: handleMouseLeave: handleMouseMove: handleMouseOver: handleMouseStillDown: handleMouseUp: handleUnknownEvent: handlerForMouseDown: mouseDownPriority processEvent: processEvent:using: rejectDropEvent: rejectsEvent: transformedFrom:)
('events-removing' releaseActionMap)
('fileIn/out' prepareToBeSaved)
('filter streaming' drawOnCanvas:)
('focus handling' gotNavigationFocus gotNavigationFocus: keyboardFocusChange: lostNavigationFocus)
('geometry' align:with: bottom bottom: bottomCenter bottomLeft bottomRight bounds bounds: bounds:in: boundsIn: boundsInWorld center center: extent extent: fullBoundsInWorld globalPointToLocal: height height: innerBounds left left: leftCenter localPointToGlobal: minimumExtent point:from: point:in: pointFromWorld: pointInWorld: position position: positionInWorld positionSubmorphs right right: rightCenter setConstrainedPosition:hangOut: top top: topCenter topLeft topRight width width: worldBounds worldBoundsForHalo)
('geometry eToy' addTransparentSpacerOfSize: beTransparent forwardDirection: heading referencePosition referencePosition: rotationCenter rotationCenter: setDirectionFrom: transparentSpacerOfSize:)
('geometry testing' containsPoint: fullContainsPoint:)
('halos and balloon help' addHalo addHalo: addHalo:from: addHandlesTo:box: addMagicHaloFor: addOptionalHandlesTo:box: addSimpleHandlesTo:box: addWorldHandlesTo:box: balloonColor balloonColor: balloonFont balloonFont: balloonHelpAligner balloonHelpDelayTime balloonHelpTextForHandle: boundsForBalloon comeToFrontAndAddHalo defaultBalloonColor defaultBalloonFont deleteBalloon editBalloonHelpContent: editBalloonHelpText halo haloClass mouseDownOnHelpHandle: noHelpString okayToBrownDragEasily okayToResizeEasily okayToRotateEasily removeHalo setBalloonText: setBalloonText:maxLineLength: setCenteredBalloonText: showBalloon: showBalloon:hand: transferHalo:from: wantsBalloon wantsHaloFromClick wantsHaloHandleWithSelector:inHalo:)
('initialization' defaultBounds defaultColor inATwoWayScrollPane initialize intoWorld: openCenteredInWorld openInHand openInWorld openInWorld:)
('layout' acceptDroppingMorph:event: adjustLayoutBounds doLayoutIn: fullBounds layoutBounds layoutBounds: layoutChanged layoutInBounds: layoutProportionallyIn: minExtent minHeight minWidth privateFullBounds submorphBounds)
('layout-menu' addCellLayoutMenuItems:hand: addLayoutMenuItems:hand: addTableLayoutMenuItems:hand: changeCellInset: changeClipLayoutCells changeDisableTableLayout changeLayoutInset: changeListDirection: changeMaxCellSize: changeMinCellSize: changeNoLayout changeProportionalLayout changeReverseCells changeRubberBandCells changeTableLayout hasClipLayoutCellsString hasDisableTableLayoutString hasNoLayoutString hasProportionalLayoutString hasReverseCellsString hasRubberBandCellsString hasTableLayoutString layoutMenuPropertyString:from:)
('layout-properties' assureLayoutProperties assureTableProperties cellInset cellInset: cellPositioning cellPositioning: cellPositioningString: cellSpacing cellSpacing: cellSpacingString: disableTableLayout disableTableLayout: hResizing hResizing: hResizingString: layoutFrame layoutFrame: layoutInset layoutInset: layoutPolicy layoutPolicy: layoutProperties layoutProperties: listCentering listCentering: listCenteringString: listDirection listDirection: listDirectionString: listSpacing listSpacing: listSpacingString: maxCellSize maxCellSize: minCellSize minCellSize: reverseTableCells reverseTableCells: rubberBandCells rubberBandCells: spaceFillWeight vResizing vResizing: vResizingString: wrapCentering wrapCentering: wrapCenteringString: wrapDirection wrapDirection: wrapDirectionString:)
('macpal' flash)
('menu' addBorderStyleMenuItems:hand:)
('menus' addAddHandMenuItemsForHalo:hand: addCopyItemsTo: addCustomHaloMenuItems:hand: addCustomMenuItems:hand: addExportMenuItems:hand: addFillStyleMenuItems:hand: addHaloActionsTo: addPaintingItemsTo:hand: addStandardHaloMenuItemsTo:hand: addTitleForHaloMenu: addToggleItemsToHaloMenu: adhereToEdge: adjustedCenter adjustedCenter: changeColor changeDragAndDrop chooseNewGraphic chooseNewGraphicCoexisting: chooseNewGraphicFromHalo collapse defaultArrowheadSize exportAsBMP exportAsGIF exportAsJPEG exportAsPNG hasDragAndDropEnabledString inspectInMorphic: lockUnlockMorph lockedString maybeAddCollapseItemTo: resetForwardDirection resistsRemovalString setToAdhereToEdge: snapToEdgeIfAppropriate stickinessString uncollapseSketch)
('meta-actions' addEmbeddingMenuItemsTo:hand: blueButtonDown: blueButtonUp: buildHandleMenu: buildMetaMenu: changeColorTarget:selector:originalColor:hand: copyToPasteBuffer: dismissMorph: duplicateMorph: grabMorph: handlerForBlueButtonDown: handlerForMetaMenu: inspectAt:event: invokeMetaMenu: invokeMetaMenuAt:event: maybeDuplicateMorph maybeDuplicateMorph: potentialEmbeddingTargets resizeFromMenu resizeMorph: showActions)
('miscellaneous' setExtentFromHalo:)
('naming' name: nameForFindWindowFeature setNamePropertyTo: setNameTo:)
('objects from disk' objectForDataStream: storeDataOn:)
('other events' menuButtonMouseEnter: menuButtonMouseLeave:)
('player' assureExternalName okayToDuplicate)
('player commands' beep: playSoundNamed:)
('printing' clipText colorString: fullPrintOn: initString printConstructorOn:indent:nodeDict: printOn:)
('rotate scale and flex' rotationDegrees)
('stepping and presenter' arrangeToStartStepping arrangeToStartSteppingIn: start startStepping startStepping:at:arguments:stepTime: startSteppingSelector: step stepAt: stopStepping stopSteppingSelector:)
('structure' activeHand allOwners allOwnersDo: firstOwnerSuchThat: hasOwner: isInWorld nearestOwnerThat: outermostMorphThat: outermostWorldMorph owner ownerThatIsA: pasteUpMorph pasteUpMorphHandlingTabAmongFields primaryHand root withAllOwnersDo: world)
('submorphs-accessing' allMorphs allMorphsDo: allNonSubmorphMorphs findA: findDeepSubmorphThat:ifAbsent: findSubmorphBinary: firstSubmorph hasSubmorphs lastSubmorph morphsAt: morphsAt:behind:unlocked: morphsAt:unlocked: morphsAt:unlocked:do: morphsInFrontOf:overlapping:do: noteNewOwner: rootMorphsAt: submorphCount submorphNamed: submorphNamed:ifNone: submorphThat:ifNone: submorphs submorphsBehind:do: submorphsDo: submorphsInFrontOf:do: submorphsReverseDo: submorphsSatisfying:)
('submorphs-add/remove' abandon actWhen actWhen: addAllMorphs: addAllMorphs:after: addMorph: addMorph:behind: addMorph:fullFrame: addMorph:inFrontOf: addMorphBack: addMorphCentered: addMorphFront: addMorphFront:fromWorldPosition: addMorphFrontFromWorldPosition: comeToFront copyWithoutSubmorph: delete dismissViaHalo goBehind privateDelete removeAllMorphs removeAllMorphsIn: removeMorph: removedMorph: replaceSubmorph:by:)
('testing' canDrawAtHigherResolution canDrawBorder: isMorph knownName shouldDropOnMouseUp stepTime wantsSteps)
('text-anchor' addTextAnchorMenuItems:hand: changeDocumentAnchor changeInlineAnchor changeParagraphAnchor hasDocumentAnchorString hasInlineAnchorString hasParagraphAnchorString relativeTextAnchorPosition relativeTextAnchorPosition: textAnchorType textAnchorType:)
('updating' changed)
('user interface' defaultLabelForInspector initialExtent)
('visual properties' canHaveFillStyles fillStyle fillStyle: fillWithRamp:oriented: useBitmapFill useDefaultFill useGradientFill useSolidFill)
('private' privateAddAllMorphs:atIndex: privateAddMorph:atIndex: privateBounds: privateColor: privateFullMoveBy: privateMoveBy: privateOwner: privateRemove: privateSubmorphs:)
!


!CompositeMorph reorganize!
('No se...' containsPoint:event: fullContainsPoint: privateFullBounds)
('change reporting' addedMorph: invalidRect: invalidRect:from:)
('drawing' drawSubmorphsOn: fullDrawOn:)
('dropping/grabbing' acceptDroppingMorph:event: wantsDroppedMorph:event:)
('events-processing' handleDropMorph:)
('focus handling' gotNavigationFocus:)
('geometry' fullBounds)
('halos and baloon help' setExtentFromHalo: transferHalo:from:)
('initialization' initialize intoWorld:)
('old Morph extension' clipSubmorphs dropEnabled)
('old Morphic compatibility' outOfWorld:)
('submorphs-accessing' allMorphsDo: firstSubmorph hasSubmorphs morphsAt:behind:unlocked: submorphs submorphsDo:)
('submorphs-add/remove' addMorph: addMorphBack: addMorphFront: removeMorph: removedMorph:)
('private' privateAddMorph:atIndex: privateFullMoveBy: privateRemove:)
!


!Morph reorganize!
('DNU' doesNotUnderstand:)
('No se...' activeHand areasRemainingToFill: buildDebugMenu: containsPoint:event: delete fullContainsPoint: morphicLayerNumber morphicLayerNumberWithin: ownerChanged privateDelete privateFullBounds referencePosition referencePosition: rotationCenter shouldDropOnMouseUp transformedFrom: wantsSteps world)
('change reporting' invalidRect: privateInvalidateMorph:)
('classification' isHandMorph isMorph isTextMorph isWorldMorph isWorldOrHandMorph)
('copying' duplicate)
('drawing' drawErrorOn: drawHighlightOn: drawOn: drawingFails drawingFailsNot fullDrawOn: imageForm imageForm:forRectangle: imageFormForRectangle: isKnownFailing shadowForm)
('dropping/grabbing' aboutToBeGrabbedBy: justDroppedInto:event: justGrabbedFrom: rejectDropMorphEvent: repelsMorph:event: wantsToBeDroppedInto: wantsToBeOpenedInWorld)
('event handling' handlesMouseDown: handlesMouseOver: handlesMouseOverDragging: handlesMouseStillDown: keyDown: keyUp: mouseDown: mouseEnter: mouseEnterDragging: mouseLeave: mouseMove: mouseStillDown: mouseStillDownStepRate mouseStillDownThreshold mouseUp: transformFrom:)
('events-processing' handleEvent: handleFocusEvent: handleKeyDown: handleKeyUp: handleKeystroke: handleMouseDown: handleMouseEnter: handleMouseLeave: handleMouseMove: handleMouseOver: handleMouseStillDown: handleMouseUp: handlerForMouseDown: handlesKeyboard: keyStroke: mouseDownPriority processEvent:using: rejectDropEvent: rejectsEvent:)
('focus handling' gotNavigationFocus keyboardFocusChange: lostNavigationFocus)
('geometry' addLocationsTo:zoomNScrollTo:coordinateSystemsTo:from: bounds coordinatesFromWorld: extent extent: externalize:to: fullBounds fullBoundsInWorld internalize:from: point:from: point:in: pointInWorld: position position: setConstrainedPosition:hangOut: worldBoundsForHalo)
('geometry testing' containsPoint:)
('halos and baloon help' addHalo: addHalo:from: addHandlesTo:box: addOptionalHandlesTo:box: balloonHelpTextForHandle: dismissViaHalo halo haloClass removeHalo setExtentFromHalo: transferHalo:from: wantsBalloon wantsHaloFromClick)
('initialization' initialize intoWorld: openInWorld openInWorld:)
('layout' layoutChanged)
('menus' inspectInMorphic:)
('meta actions' blueButtonDown: blueButtonUp: dismissMorph: duplicateMorph: handlerForBlueButtonDown: handlerForMetaMenu: invokeMetaMenu:)
('old Morph extension' balloonText eventHandler formerOwner: formerPosition: hasProperty: isLocked isSticky knownName resistsRemoval visible)
('old Morphic compatibility' bottomRight installModelIn: isPlayfieldLike outOfWorld:)
('rotate scale and flex' rotationDegrees rotationDegrees:)
('stepping and presenter' shouldGetStepsFrom: startStepping:at:arguments:stepTime: stopSteppingSelector:)
('structure' allOwnersDo: firstOwnerSuchThat: hasOwner: isInWorld outermostWorldMorph owner ownerThatIsA: withAllOwnersDo:)
('submorphs-accessing' allMorphsDo: morphsAt:behind:unlocked: noteNewOwner: submorphs submorphsDo:)
('submorphs-add/remove' comeToFront goBehind)
('updating' changed)
('private' privateFullMoveBy: privateMoveBy: privateOwner:)
!


!MenuItemLW class reorganize!
('instance creation' target:action:label:)
!


!MenuItemLW reorganize!
('initialization' initialize)
('drawing' drawHighlightOn: drawOn:)
('event handling' mouseUp:)
!


!ListLW reorganize!
('focus handling' gotNavigationFocus:)
('submorphs-add/remove' addItem:action: addItem:target:action: addMorph:)
!


!LabelLW class reorganize!
('instance creation' label:)
!


!CompositeLW reorganize!
('change reporting' addedMorph: privateInvalidateMorph:)
('drawing' drawSubmorphsOn: fullDrawOn:)
('dropping/grabbing' acceptDroppingMorph:event: dropEnabled repelsMorph:event: wantsDroppedMorph:event:)
('events-processing' handleDropMorph: rejectDropEvent:)
('focus handling' gotNavigationFocus:)
('initialization' initialize)
('submorphs-accessing' allMorphsDo: firstSubmorph hasSubmorphs morphsAt:behind:unlocked: submorphs submorphsDo:)
('submorphs-add/remove' addMorph: addMorphBack: addMorphFront: removeMorph: removedMorph:)
('updating' updateView)
('private' privateAddMorph:atIndex: privateFullMoveBy: privateRemove:)
!


!ButtonLW class reorganize!
('instance creation' target:action:label:)
!


!LightWidget reorganize!
('DNU' doesNotUnderstand:)
('accessing' eventHandler isLocked isSticky morphsAt:behind:unlocked: owner privateOwner: world)
('accessing-properties' hasProperty:)
('add/remove' delete dismissViaHalo privateDelete)
('change reporting' invalidRect: invalidRect:from: ownerChanged)
('classification' isHandMorph isWorldMorph isWorldOrHandMorph)
('compatibility' allMorphsDo: isPlayfieldLike morphicLayerNumber morphicLayerNumberWithin: noteNewOwner: submorphs submorphsDo:)
('copying' duplicate)
('debug and other' buildDebugMenu:)
('defaults' borderStyleFor: borderStyleWith: defaultFont pressedBorderStyleWith:)
('drawing' areasRemainingToFill: drawErrorOn: drawHighlightOn: drawOn: drawingFails drawingFailsNot fullDrawOn: hide isKnownFailing shadowForm show visible visible:)
('dropping/grabbing' aboutToBeGrabbedBy: formerOwner: formerPosition: justDroppedInto:event: justGrabbedFrom: rejectDropMorphEvent: wantsToBeDroppedInto:)
('event handling' handlesMouseDown: handlesMouseOver: handlesMouseOverDragging: handlesMouseStillDown: mouseMove: mouseStillDown: mouseStillDownStepRate mouseStillDownThreshold mouseUp: transformFrom: transformedFrom:)
('events-processing' handleEvent: handleFocusEvent: handleKeyDown: handleKeyUp: handleKeystroke: handleMouseDown: handleMouseEnter: handleMouseLeave: handleMouseMove: handleMouseOver: handleMouseStillDown: handleMouseUp: handlerForMouseDown: handlesKeyboard: keyDown: keyStroke: keyUp: mouseDownPriority processEvent:using: rejectDropEvent: rejectsEvent:)
('focus handling' gotNavigationFocus keyboardFocusChange: lostNavigationFocus)
('geometry' bounds bounds: extent: fullBounds fullBoundsInWorld height point:from: point:in: pointInWorld: position position: referencePosition referencePosition: width width: worldBoundsForHalo)
('geometry testing' containsPoint: containsPoint:event: fullContainsPoint:)
('halos and balloon help' addHalo: addHalo:from: addHandlesTo:box: addOptionalHandlesTo:box: balloonHelpTextForHandle: balloonText halo haloClass removeHalo setExtentFromHalo: transferHalo:from: wantsBalloon wantsHaloFromClick)
('initialization' initialize intoWorld: openInWorld openInWorld:)
('layout' layoutChanged)
('menus' inspectInMorphic:)
('meta actions' blueButtonDown: blueButtonUp: dismissMorph: duplicateMorph: handlerForBlueButtonDown:)
('rotation scale and flex' rotationDegrees rotationDegrees:)
('stepping and presenter' shouldGetStepsFrom: startStepping:at:arguments:stepTime: stopSteppingSelector:)
('structure' activeHand allOwnersDo: firstOwnerSuchThat: hasOwner: isInWorld outermostWorldMorph ownerThatIsA: withAllOwnersDo:)
('submorphs-add/remove' comeToFront goBehind)
('testing' hasNavigationFocus isTextMorph resistsRemoval shouldDropOnMouseUp wantsSteps)
('updating' changed)
('view of a model or target' action action: actionAdaptor actionAdaptor: aspect aspect: aspectAdaptor aspectAdaptor: beMainViewOn: modelChanged target target: target:action: target:aspect: target:aspect:aspectAdaptor: target:aspect:aspectAdaptor:modelChangeEvent: targetAspect updateView)
('private' privateFullMoveBy: privateMoveBy:)
!

Object removeSelector: #launchPartVia:label:!
