Squeak Class Documentation category index | class index  
 
Morph
  category: Morphic-Kernel
  superclass: Object
  subclasses: DrawErrorMorph PianoRollNoteMorph WonderlandActorViewer MatrixTransformMorph ImageMorph B3DMorph WonderlandMorph MenuLineMorph ScreeningMorph LedDigitMorph TilePadMorph TransformMorph StringMorph TransitionMorph SpeakerMorph BouncingAtomsMorph BackgroundMorph BorderedMorph MovieMorph CachingMorph VeryPickyMorph WonderlandWrapperMorph FaceMorph TetrisBlock HaloMorph DownloadingImageMorph TransferMorph TransferMorphAnimation TranslucentProgessMorph MouseActionIndicatorMorph NetworkTerminalMorph SketchEditorMorph SketchMorph SquishedNameMorph SubpaneDividerMorph CRLineMorph HandMorph LedCharacterMorph LedMorph StarSqueakMorph MPEGPlayerMorph B3DSceneMorph CRStrokeMorph MPEGDisplayMorph

A morph (from the Greek "shape" or "form") is an interactive graphical object.

All morphs owned by a morph are held in submorphs.

All coordinates are global screen coordinates. (Except those that are flexed, contained inside a FlexMorph.)

All show on the screen unless they are 'hidden'. Hidden morphs have the property #hidden set to true.

instance methods
  WiW support
  addMorphInFrontOfLayer:
addMorphInLayer:
eToyRejectDropMorph:event:
morphicLayerNumber
morphicLayerNumberWithin:
randomBoundsFor:
shouldGetStepsFrom:

  access properties
  hasProperty:
removeProperty:
setProperty:toValue:
valueOfProperty:
valueOfProperty:ifAbsent:
valueOfProperty:ifAbsentPut:
valueOfProperty:ifPresentDo:

  accessing
  actorState
actorState:
actorStateOrNil
asMorph
balloonText
balloonTextSelector
balloonTextSelector:
beFlap:
beSticky
beUnsticky
borderColor
borderColor:
borderStyle
borderStyle:
borderStyleForSymbol:
borderWidth
borderWidth:
borderWidthForRounding
color
color:
colorForInsets
couldHaveRoundedCorners
eventHandler
eventHandler:
forwardDirection
hasTranslucentColor
highlight
highlightColor
highlightColor:
highlightOnlySubmorph:
insetColor
isFlap
isLocked
isShared
isSticky
lock
lock:
methodCommentAsBalloonHelp
modelOrNil
player
player:
raisedColor
regularColor
regularColor:
rememberedColor
rememberedColor:
resistsRemoval
resistsRemoval:
setBorderStyle:
sqkPage
sticky:
toggleLocked
toggleResistsRemoval
toggleStickiness
unHighlight
unlock
unlockContents
url
userString
wantsToBeCachedByHand

  button
  doButtonAction
fire
firedMouseUpCode

  button properties
  buttonProperties
buttonProperties:
ensuredButtonProperties
hasButtonProperties

  caching
  fullLoadCachedState
fullReleaseCachedState
loadCachedState
releaseCachedState

  card in a stack
  abstractAModel
beAStackBackground
containsCard:
couldHoldSeparateDataForEachInstance
currentDataInstance
explainDesignations
goToNextCardInStack
goToPreviousCardInStack
holdsSeparateDataForEachInstance
insertAsStackBackground
insertCard
installAsCurrent:
isStackBackground
makeHoldSeparateDataForEachInstance
newCard
reassessBackgroundShape
relaxGripOnVariableNames
reshapeBackground
setAsDefaultValueForNewCard
showBackgroundObjects
showDesignationsOfObjects
showForegroundObjects
stack
stackDo:
stopHoldingSeparateDataForEachInstance
tabHitWithEvent:
wrapWithAStack

  change reporting
  addedOrRemovedSubmorph:
changed
colorChangedForSubmorph:
invalidRect:
invalidRect:from:
ownerChanged
userSelectedColor:

  classification
  isAlignmentMorph
isBalloonHelp
isFlapOrTab
isFlapTab
isFlashMorph
isFlexMorph
isHandMorph
isModalShell
isMorph
isMorphicModel
isPlayfieldLike
isRenderer
isStandardViewer
isSyntaxMorph
isWorldMorph
isWorldOrHandMorph

  copying
  copy
deepCopy
duplicate
fullCopy
updateReferencesUsing:
usableSiblingInstance
veryDeepCopyWith:
veryDeepFixupWith:
veryDeepInner:

  debug and other
  addDebuggingItemsTo:hand:
addMouseActionIndicatorsWidth:color:
addMouseUpAction
addMouseUpActionWith:
addViewingItemsTo:
allStringsAfter:
altSpecialCursor0
altSpecialCursor1
altSpecialCursor2
altSpecialCursor3
altSpecialCursor3:
buildDebugMenu:
defineTempCommand
deleteAnyMouseActionIndicators
handMeTilesToFire
inspectArgumentsPlayerInMorphic:
inspectOwnerChain
installModelIn:
mouseUpCodeOrNil
ownerChain
programmedMouseDown:for:
programmedMouseEnter:for:
programmedMouseLeave:for:
programmedMouseUp:for:
programmedMouseUp:for:with:
removeMouseUpAction
reportableSize
resumeAfterDrawError
resumeAfterStepError
tempCommand
viewMorphDirectly

  drawing
  areasRemainingToFill:
boundingBoxOfSubmorphs
boundsWithinCorners
changeClipSubmorphs
clipLayoutCells
clipLayoutCells:
clipSubmorphs
clipSubmorphs:
clippingBounds
doesOwnRotation
drawDropHighlightOn:
drawDropShadowOn:
drawErrorOn:
drawMouseDownHighlightOn:
drawOn:
drawOnCanvas:
drawPostscriptOn:
drawRolloverBorderOn:
drawSubmorphsOn:
expandFullBoundsForDropShadow:
expandFullBoundsForRolloverBorder:
flash
fullDrawOn:
fullDrawPostscriptOn:
hasClipSubmorphsString
hide
highlightForMouseDown
highlightForMouseDown:
highlightedForMouseDown
imageForm
imageForm:forRectangle:
imageFormDepth:
imageFormForRectangle:
imageFormWithout:andStopThere:
refreshWorld
shadowForm
show
visible
visible:

  drop shadows
  addDropShadow
addDropShadowMenuItems:hand:
changeShadowColor
hasDropShadow
hasDropShadow:
hasDropShadowString
hasRolloverBorder
hasRolloverBorder:
removeDropShadow
setShadowOffset:
shadowColor
shadowColor:
shadowOffset
shadowOffset:
shadowPoint:
toggleDropShadow

  dropping/grabbing
  aboutToBeGrabbedBy:
asDraggableMorph
disableDragNDrop
dragEnabled
dragEnabled:
dragNDropEnabled
dragSelectionColor
dropEnabled
dropEnabled:
dropHighlightColor
dropSuccessColor
enableDrag:
enableDragNDrop
enableDragNDrop:
enableDrop:
formerOwner
formerOwner:
formerPosition
formerPosition:
grabTransform
highlightForDrop
highlightForDrop:
highlightedForDrop
justDroppedInto:event:
justGrabbedFrom:
nameForUndoWording
rejectDropMorphEvent:
repelsMorph:event:
resetHighlightForDrop
separateDragAndDrop
slideBackToFormerSituation:
slideToTrash:
startDrag:with:
toggleDragNDrop
transportedMorph
undoGrabCommand
vanishAfterSlidingTo:event:
wantsDroppedMorph:event:
wantsToBeDroppedInto:
wantsToBeOpenedInWorld
willingToBeDiscarded

  e-toy support
  adaptToWorld:
adoptVocabulary:
allMorphsAndBookPagesInto:
appearsToBeSameCostumeAs:
asNumber:
asWearableCostume
asWearableCostumeOfExtent:
automaticViewing
changeAllBorderColorsFrom:to:
configureForKids
containingWindow
copyCostumeStateFrom:
creationStamp
currentPlayerDo:
cursor
cursor:
defaultFloatPrecisionFor:
defaultValueOrNil
defaultVariableName
definePath
deletePath
embedInWindow
embeddedInMorphicWindowLabeled:
enclosingEditor
enforceTileColorPolicy
fenceEnabled
followPath
getNumericValue
gridFormOrigin:grid:background:line:
isAViewer
isCandidateForAutomaticViewing
isTileEditor
listViewLineForFieldList:
makeGraphPaper
makeGraphPaperGrid:background:line:
mustBeBackmost
noteNegotiatedName:for:
objectViewed
referencePlayfield
rotationStyle
rotationStyle:
setAsActionInButtonProperties:
setNaturalLanguageTo:
setNumericValue:
setStandardTexture
slotSpecifications
succeededInRevealing:
textureParameters
topEditor
unlockOneSubpart
updateCachedThumbnail
wantsRecolorHandle
wrappedInWindow:
wrappedInWindowWithTitle:

  event handling
  click
click:
cursorPoint
doubleClick:
doubleClickTimeout:
dropFiles:
firstClickTimedOut:
handlesKeyboard:
handlesMouseDown:
handlesMouseOver:
handlesMouseOverDragging:
handlesMouseStillDown:
hasFocus
keyDown:
keyStroke:
keyUp:
keyboardFocusChange:
mouseDown:
mouseEnter:
mouseEnterDragging:
mouseLeave:
mouseLeaveDragging:
mouseMove:
mouseStillDown:
mouseStillDownThreshold
mouseUp:
on:send:to:
on:send:to:withValue:
removeLink:
restoreSuspendedEventHandler
startDrag:
suspendEventHandler
transformFrom:
transformFromOutermostWorld
transformFromWorld
wantsDropFiles:
wantsEveryMouseMove
wantsKeyboardFocusFor:
wouldAcceptKeyboardFocus
wouldAcceptKeyboardFocusUponTab

  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:
handleMouseDown:
handleMouseEnter:
handleMouseLeave:
handleMouseMove:
handleMouseOver:
handleMouseStillDown:
handleMouseUp:
handleUnknownEvent:
handlerForMouseDown:
mouseDownPriority
processEvent:
processEvent:using:
rejectDropEvent:
rejectsEvent:
transformedFrom:

  fileIn/out
  attachToResource
objectForDataStream:
prepareToBeSaved
reserveUrl:
saveAsResource
saveDocPane
saveOnFile
saveOnURL
saveOnURL:
saveOnURLbasic
storeDataOn:
updateAllFromResources
updateFromResource

  genie-dispatching
  blueButtonClickHand:shift:
gesture:
gestureCode:
gestureCommand:
gestureKeystrokes:
gestureMouseEvent:
gestureStrokes:
handleGesture:
isGestureUndoable:
isSpecialCharacterUndoable:
modifyGesture:by:
undoGesture:

  genie-menu
  addGenieMenuItems:hand:
changeGestureDictionary
hasNotExportedGestureDictionary
hasReferencedGestureDictionary
inspectGestureDictionary
makeOwnCopyOfGestureDictionary
makeOwnSubGestureDictionary

  genie-processing
  allowsGestureEscape
allowsGesturePreprocessing
allowsGestureStart:
defaultGestureDictionaryOrName
disableGestures
gestureDictionary
gestureDictionaryOrName
gestureDictionaryOrName:
gestureHandler
gestureStart:
handlesGestureStart:
onGestureSend:to:

  geometry
  align:with:
bottom
bottom:
bottomLeft
bottomLeft:
bottomRight
bottomRight:
bounds
bounds:
bounds:from:
bounds:in:
boundsIn:
boundsInWorld
center
center:
extent
extent:
fullBoundsInWorld
globalPointToLocal:
gridPoint:
griddedPoint:
height
height:
innerBounds
left
left:
localPointToGlobal:
minimumExtent
minimumExtent:
nextOwnerPage
outerBounds
point:from:
point:in:
pointFromWorld:
pointInWorld:
position
position:
positionInWorld
positionSubmorphs
previousOwnerPage
right
right:
screenLocation
screenRectangle
setConstrainedPosition:hangOut:
shiftSubmorphsBy:
shiftSubmorphsOtherThan:by:
top
top:
topLeft
topLeft:
topRight
topRight:
transformedBy:
width
width:
worldBounds
worldBoundsForHalo

  geometry eToy
  addTransparentSpacerOfSize:
beTransparent
cartesianBoundsTopLeft
cartesianXY
cartesianXY:
color:sees:
colorUnder
degreesOfFlex
forwardDirection:
getIndexInOwner
goHome
heading
heading:
move:toPosition:
referencePosition
referencePosition:
referencePositionInWorld
referencePositionInWorld:
rotationCenter
rotationCenter:
setDirectionFrom:
setIndexInOwner:
touchesColor:
transparentSpacerOfSize:
wrap
x
x:
x:y:
y
y:

  geometry testing
  containsPoint:
fullContainsPoint:
obtrudesBeyondContainer

  halos and balloon help
  addHalo
addHalo:
addHalo:from:
addHandlesTo:box:
addMagicHaloFor:
addOptionalHandlesTo:box:
addSimpleHandlesTo:box:
addWorldHandlesTo:box:
balloonColor
balloonColor:
balloonHelpAligner
balloonHelpDelayTime
balloonHelpTextForHandle:
boundsForBalloon
comeToFrontAndAddHalo
defaultBalloonColor
defersHaloOnClickTo:
deleteBalloon
editBalloonHelpContent:
editBalloonHelpText
halo
haloClass
haloDelayTime
hasHalo
hasHalo:
isLikelyRecipientForMouseOverHalos
mightEntertainDirectionHandles
mouseDownOnHelpHandle:
noHelpString
okayToAddDismissHandle
okayToAddGrabHandle
okayToBrownDragEasily
okayToExtractEasily
okayToResizeEasily
okayToRotateEasily
removeHalo
setBalloonText:
setBalloonText:maxLineLength:
setCenteredBalloonText:
showBalloon:
showBalloon:hand:
transferHalo:from:
wantsBalloon
wantsDirectionHandles
wantsDirectionHandles:
wantsHalo
wantsHaloFor:
wantsHaloFromClick
wantsHaloHandleWithSelector:inHalo:
wantsScriptorHaloHandle

  initialization
  basicInitialize
currentVocabulary
inATwoWayScrollPane
initialExtent
initialize
intoWorld:
openCenteredInWorld
openInHand
openInMVC
openInWindow
openInWindowLabeled:
openInWindowLabeled:inWorld:
openInWorld
openInWorld:
outOfWorld:
resourceJustLoaded
standardPalette

  layout
  acceptDroppingMorph:event:
adjustLayoutBounds
doLayoutIn:
fullBounds
layoutBounds
layoutBounds:
layoutChanged
layoutInBounds:
layoutProportionallyIn:
minExtent
minHeight
minHeight:
minWidth
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
spaceFillWeight:
vResizeToFit:
vResizing
vResizing:
vResizingString:
wrapCentering
wrapCentering:
wrapCenteringString:
wrapDirection
wrapDirection:
wrapDirectionString:

  menu
  addBorderStyleMenuItems:hand:

  menus
  absorbStateFromRenderer:
adMiscExtrasTo:
addAddHandMenuItemsForHalo:hand:
addCopyItemsTo:
addCustomHaloMenuItems:hand:
addCustomMenuItems:hand:
addExportMenuItems:hand:
addFillStyleMenuItems:hand:
addHaloActionsTo:
addPaintingItemsTo:hand:
addPlayerItemsTo:
addStackItemsTo:
addStandardHaloMenuItemsTo:hand:
addTitleForHaloMenu:
addToggleItemsToHaloMenu:
adhereToEdge
adhereToEdge:
adjustedCenter
adjustedCenter:
allMenuWordings
changeColor
changeDirectionHandles
changeDragAndDrop
chooseNewGraphic
chooseNewGraphicCoexisting:
chooseNewGraphicFromHalo
collapse
dismissButton
doMenuItem:
exportAsBMP
exportAsGIF
hasDirectionHandlesString
hasDragAndDropEnabledString
helpButton
inspectInMorphic
inspectInMorphic:
lockUnlockMorph
lockedString
makeNascentScript
maybeAddCollapseItemTo:
menuItemAfter:
menuItemBefore:
presentHelp
printPSToFile
printPSToFileNamed:
putOnBackground
putOnForeground
resetForwardDirection
resistsRemovalString
setRotationCenter
setRotationCenterFrom:
setToAdhereToEdge:
snapToEdgeIfAppropriate
stickinessString
transferStateToRenderer:
uncollapseSketch

  messenger
  affiliatedSelector

  meta-actions
  applyStatusToAllSiblings:
beThisWorldsModel
blueButtonDown:
blueButtonUp:
bringAllSiblingsToMe:
buildHandleMenu:
buildMetaMenu:
changeColorTarget:selector:originalColor:hand:
copyToPasteBuffer:
dismissMorph
dismissMorph:
duplicateMorph:
embedInto:
grabMorph:
handlerForBlueButtonDown:
handlerForMetaMenu:
inspectAt:event:
invokeMetaMenu:
invokeMetaMenuAt:event:
makeMultipleSiblings:
makeNewPlayerInstance:
makeSiblings:
makeSiblingsLookLikeMe:
maybeDuplicateMorph
maybeDuplicateMorph:
openAButtonPropertySheet
openAPropertySheet
openATextPropertySheet
potentialEmbeddingTargets
resizeFromMenu
resizeMorph:
saveAsPrototype
showActions
showHiders
subclassMorph

  miscellaneous
  setExtentFromHalo:

  naming
  choosePartName
defaultNameStemForInstances
downshiftedNameOfObjectRepresented
externalName
innocuousName
knownName
name:
nameForFindWindowFeature
nameInModel
nameOfObjectRepresented
renameTo:
setNamePropertyTo:
setNameTo:
specialNameInModel
tryToRenameTo:
updateAllScriptingElements

  object fileIn
  convertAugust1998:using:
convertNovember2000DropShadow:using:
convertToCurrentVersion:refStream:

  other
  removeAllButFirstSubmorph

  other events
  menuButtonMouseEnter:
menuButtonMouseLeave:

  parts bin
  inPartsBin
initializeToStandAlone
isPartsBin
isPartsDonor
isPartsDonor:
markAsPartsDonor
partRepresented
residesInPartsBin

  pen
  choosePenColor:
choosePenSize
getPenColor
getPenDown
getPenSize
liftPen
lowerPen
penColor:
penUpWhile:
trailMorph

  piano rolls
  addMorphsTo:pianoRoll:eventTime:betweenTime:and:
encounteredAtTime:inScorePlayer:atIndex:inEventTrack:secsPerTick:
justDroppedIntoPianoRoll:event:
pauseFrom:
resetFrom:
resumeFrom:
triggerActionFromPianoRoll

  player
  assureExternalName
assuredCardPlayer
assuredPlayer
currentDataValue
newPlayerInstance
okayToDuplicate
shouldRememberCostumes
showPlayerMenu
variableDocks

  player commands
  beep
beep:
jumpTo:
makeFenceSound
set:

  player viewer
  openViewerForArgument
updateLiteralLabel

  printing
  asEPS
asPostscript
asPostscriptPrintJob
clipPostscript
colorString:
constructorString
defaultLabelForInspector
fullPrintOn:
initString
morphReport
morphReportFor:
morphReportFor:on:indent:
pagesHandledAutomatically
printConstructorOn:indent:
printConstructorOn:indent:nodeDict:
printOn:
printSpecs
printSpecs:
printStructureOn:indent:
structureString
textToPaste

  private
  moveWithPenDownBy:
moveWithPenDownByRAA:
myEvents
myEvents:
privateAddMorph:atIndex:
privateBounds:
privateColor:
privateDeleteWithAbsolutelyNoSideEffects
privateFullBounds:
privateFullMoveBy:
privateMoveBy:
privateOwner:
privateRemoveMorph:
privateRemoveMorphWithAbsolutelyNoSideEffects:
privateSubmorphs
privateSubmorphs:

  property extension
  assureExtension
extension
otherProperties
resetExtension

  rotate scale and flex
  addFlexShell
addFlexShellIfNecessary
keepsTransform
newTransformationMorph
rotationDegrees

  rounding
  cornerStyle:
roundedCorners
roundedCornersString
toggleCornerRounding
wantsRoundedCorners

  scripting
  asEmptyPermanentScriptor
bringTileScriptingElementsUpToDate
bringUpToDate
categoriesForViewer
instantiatedUserScriptsDo:
isTileLike
isTileScriptingElement
jettisonScripts
makeAllTilesColored
makeAllTilesGreen
restoreTypeColor
scriptEditorFor:
scriptPerformer
selectorsForViewer
tearOffTile
triggerScript:
useUniformTileColor
viewAfreshIn:showingScript:at:

  stepping and presenter
  arrangeToStartStepping
arrangeToStartSteppingIn:
isStepping
isSteppingSelector:
start
startStepping
startStepping:at:arguments:stepTime:
startSteppingIn:
startSteppingSelector:
step
stepAt:
stepTime
stop
stopStepping
stopSteppingSelector:
stopSteppingSelfAndSubmorphs
wantsSteps

  structure
  activeHand
allOwners
allOwnersDo:
firstOwnerSuchThat:
hasOwner:
isInWorld
morphPreceding:
nearestOwnerThat:
orOwnerSuchThat:
outermostMorphThat:
outermostWorldMorph
owner
ownerThatIsA:
ownerThatIsA:orA:
pasteUpMorph
pasteUpMorphHandlingTabAmongFields
presenter
primaryHand
renderedMorph
root
rootAt:
topPasteUp
topRendererOrSelf
withAllOwners
withAllOwnersDo:
world

  submorphs-accessing
  allKnownNames
allMorphs
allMorphsDo:
allNonSubmorphMorphs
allSubmorphNamesDo:
findA:
findDeepSubmorphThat:ifAbsent:
findDeeplyA:
findSubmorphBinary:
firstSubmorph
hasSubmorphWithProperty:
hasSubmorphs
indexOfMorphAbove:
lastSubmorph
morphsAt:
morphsAt:behind:unlocked:
morphsAt:unlocked:
morphsAt:unlocked:do:
morphsInFrontOf:overlapping:do:
morphsInFrontOverlapping:
morphsInFrontOverlapping:do:
rootMorphsAt:
rootMorphsAtGlobal:
shuffleSubmorphs
submorphAfter
submorphBefore
submorphCount
submorphNamed:
submorphNamed:ifNone:
submorphOfClass:
submorphThat:ifNone:
submorphWithProperty:
submorphs
submorphsBehind:do:
submorphsDo:
submorphsInFrontOf:do:
submorphsReverseDo:
submorphsSatisfying:

  submorphs-add/remove
  abandon
actWhen
actWhen:
addAllMorphs:
addAllMorphs:after:
addMorph:
addMorph:after:
addMorph:asElementNumber:
addMorph:behind:
addMorph:fullFrame:
addMorph:inFrontOf:
addMorphBack:
addMorphCentered:
addMorphFront:
addMorphFront:fromWorldPosition:
addMorphNearBack:
comeToFront
copyWithoutSubmorph:
delete
deleteSubmorphsWithProperty:
dismissViaHalo
goBehind
privateDelete
removeAllMorphs
removeAllMorphsIn:
replaceSubmorph:by:
submorphIndexOf:

  testing
  canDrawAtHigherResolution
canDrawBorder:
completeModificationHash
isFlexed
modificationHash
shouldDropOnMouseUp

  texture support
  asTexture
installAsWonderlandTextureOn:
isValidWonderlandTexture
isValidWonderlandTexture:
mapPrimitiveVertex:
wonderlandTexture
wonderlandTexture:

  thumbnail
  demandsThumbnailing
morphRepresented
permitsThumbnailing
readoutForField:
representativeNoTallerThan:norWiderThan:thumbnailHeight:
updateThumbnailUrl
updateThumbnailUrlInBook:

  undo
  commandHistory
undoMove:redo:owner:bounds:predecessor:

  visual properties
  canHaveFillStyles
canSetColor
cornerStyle
defaultColor
fillStyle
fillStyle:
fillWithRamp:oriented:
useBitmapFill
useDefaultFill
useGradientFill
useSolidFill

class methods
  class initialization
  initialize

  instance creation
  new
newBounds:
newBounds:color:
newSticky

  misc
  morphsUnknownToTheirOwners
noteCompilationOf:meta:

  new-morph participation
  addPartsDescriptorQuadsTo:if:
includeInNewMorphMenu
initializedInstance
newStandAlone
partName:categories:documentation:
partName:categories:documentation:sampleImageForm:

  parts bin
  supplementaryPartsDescriptions

  scripting
  additionsToViewerCategories
additionsToViewerCategory:
additionsToViewerCategoryBasic
additionsToViewerCategoryColorAndBorder
additionsToViewerCategoryDragAndDrop
additionsToViewerCategoryGeometry
additionsToViewerCategoryLayout
additionsToViewerCategoryMiscellaneous
additionsToViewerCategoryMotion
additionsToViewerCategoryObservation
additionsToViewerCategoryPenUse
additionsToViewerCategoryScripting
additionsToViewerCategoryScripts
additionsToViewerCategoryTests
authoringPrototype
helpContributions
vectorAdditions

instance methods
  WiW support top  
 

addMorphInFrontOfLayer:


 

addMorphInLayer:


 

eToyRejectDropMorph:event:


 

morphicLayerNumber

helpful for insuring some morphs always appear in front of or behind others.
smaller numbers are in front


 

morphicLayerNumberWithin:

helpful for insuring some morphs always appear in front of or behind others.
smaller numbers are in front


 

randomBoundsFor:


 

shouldGetStepsFrom:


  access properties top  
 

hasProperty:

Answer whether the receiver has the given property. Deemed to have it only if I have a property dictionary entry for it and that entry is neither nil nor false


 

removeProperty:


 

setProperty:toValue:


 

valueOfProperty:


 

valueOfProperty:ifAbsent:


 

valueOfProperty:ifAbsentPut:

If the receiver possesses a property of the given name, answer its value. If not, then create a property of the given name, give it the value obtained by evaluating aBlock, then answer that value


 

valueOfProperty:ifPresentDo:

If the receiver has a property of the given name, evaluate aBlock on behalf of the value of that property


  accessing top  
 

actorState

This method instantiates actorState as a side-effect.
For simple queries, use actorStateOrNil


 

actorState:


 

actorStateOrNil


 

asMorph


 

balloonText

Answer balloon help text or nil, if no help is available.
NB: subclasses may override such that they programatically construct
the text, for economy's sake, such as model phrases in a Viewer


 

balloonTextSelector

Answer balloon text selector item in the extension, nil if none


 

balloonTextSelector:


 

beFlap:

Mark the receiver with the #flap property, or unmark it


 

beSticky


 

beUnsticky

If the receiver is marked as sticky, make it now be unsticky


 

borderColor


 

borderColor:


 

borderStyle


 

borderStyle:


 

borderStyleForSymbol:

Answer a suitable BorderStyle for me of the type represented by a given symbol


 

borderWidth


 

borderWidth:


 

borderWidthForRounding


 

color


 

color:

Set the receiver's color. Directly set the color if appropriate, else go by way of fillStyle


 

colorForInsets

Return the color to be used for shading inset borders. The default is my own color, but it might want to be, eg, my owner's color. Whoever's color ends up prevailing, the color itself gets the last chance to determine, so that when, for example, an InfiniteForm serves as the color, callers won't choke on some non-Color object being returned


 

couldHaveRoundedCorners

subclases unhappy with rounded corners reimplement


 

eventHandler


 

eventHandler:

Note that morphs can share eventHandlers and all is OK.


 

forwardDirection

Return the receiver's forward direction (in eToy terms)


 

hasTranslucentColor

Answer true if this any of this morph is translucent but not transparent.


 

highlight

The receiver is being asked to appear in a highlighted state. Mostly used for textual morphs


 

highlightColor


 

highlightColor:


 

highlightOnlySubmorph:

Distinguish only aMorph with border highlighting (2-pixel wide red); make all my other submorphs have one-pixel-black highlighting. This is a rather special-purpose and hard-coded highlighting regime, of course. Later, if someone cared to do it, we could parameterize the widths and colors via properties, or some such.


 

insetColor


 

isFlap

Answer whether the receiver claims to be a flap


 

isLocked


 

isShared

Answer whether the receiver has the #shared property. This property allows it to be treated as a 'background' item


 

isSticky


 

lock


 

lock:


 

methodCommentAsBalloonHelp

Given that I am a morph that is associated with an object and a method, answer a suitable method comment relating to that object & method if possible


 

modelOrNil


 

player


 

player:


 

raisedColor

Return the color to be used for shading raised borders. The default is my own color, but it might want to be, eg, my owner's color. Whoever's color ends up prevailing, the color itself gets the last chance to determine, so that when, for example, an InfiniteForm serves as the color, callers won't choke on some non-Color object being returned


 

regularColor


 

regularColor:


 

rememberedColor

Answer a rememberedColor, or nil if none


 

rememberedColor:

Place aColor in a property so I can retrieve it later. A tortuous but expedient flow of data


 

resistsRemoval

Answer whether the receiver is marked as resisting removal


 

resistsRemoval:

Set the receiver's resistsRemoval property as indicated


 

setBorderStyle:

Set the border style of my costume


 

sqkPage


 

sticky:


 

toggleLocked


 

toggleResistsRemoval

Toggle the resistsRemoval property


 

toggleStickiness


 

unHighlight


 

unlock


 

unlockContents


 

url

If I have been assigned a url, return it. For PasteUpMorphs mostly.


 

userString

Do I have a text string to be searched on?


 

wantsToBeCachedByHand

Return true if the receiver wants to be cached by the hand when it is dragged around.
Note: The default implementation queries all submorphs since subclasses may have shapes that do not fill the receiver's bounds completely.


  button top  
 

doButtonAction

If the receiver has a button-action defined, do it now. The default button action of any morph is, well, to do nothing. Note that there are several ways -- too many ways -- for morphs to have button-like actions. This one refers not to the #mouseUpCodeToRun feature, nor does it refer to the Player-scripting mechanism. Instead it is intended for morph classes whose very nature is to be buttons -- this method provides glue so that arbitrary buttons on the UI can be 'fired' programatticaly from user scripts


 

fire

If the receiver has any kind of button-action defined, fire that action now. Any morph can have special, personal mouseUpCodeToRun, and that will be triggered by this. Additionally, some morphs have specific buttonness, and these get sent the #doButtonAction message to carry out their firing. Finally, some morphs have mouse behaviors associated with one or more Player scripts.
For the present, we'll try out doing *all* the firings this object can do.


 

firedMouseUpCode

If the user has special mouseUpCodeToRun, then fire it once right now and return true, else return false


  button properties top  
 

buttonProperties


 

buttonProperties:


 

ensuredButtonProperties


 

hasButtonProperties


  caching top  
 

fullLoadCachedState

Load the cached state of the receiver and its full submorph tree.


 

fullReleaseCachedState

Release the cached state of the receiver and its full submorph tree.


 

loadCachedState

Load the cached state of this morph. This method may be called to pre-load the cached state of a morph to avoid delays when it is first used. (Cached state can always be recompued on demand, so a morph should not rely on this method being called.) Implementations of this method should do 'super loadCachedState'. This default implementation does nothing.


 

releaseCachedState

Release any state that can be recomputed on demand, such as the pixel values for a color gradient or the editor state for a TextMorph. This method may be called to save space when a morph becomes inaccessible. Implementations of this method should do 'super releaseCachedState'.


  card in a stack top  
 

abstractAModel

Find data-containing fields in me. Make a new class, whose instance variables are named for my fields, and whose values are the values I am showing. Use a CardPlayer for now. Force the user to name the fields. Make slots for text, Number Watchers, SketchMorphs, and ImageMorphs.


 

beAStackBackground

Transform the receiver into one that has stack-background behavior. If just becoming a stack, allocate a uniclass to represent the cards (if one does not already exist


 

containsCard:

Answer whether the given card belongs to the uniclass representing the receiver


 

couldHoldSeparateDataForEachInstance

Answer whether this type of morph is inherently capable of holding separate data for each instance ('card data')


 

currentDataInstance

Answer the current data instance


 

explainDesignations

Hand the user an object that contains explanations for the designation feedback used


 

goToNextCardInStack

Tell my stack to advance to the next page


 

goToPreviousCardInStack

Tell my stack to advance to the previous card


 

holdsSeparateDataForEachInstance

Answer whether the receiver is currently behaving as a 'background field', i.e., whether it is marked as shared (viz. occurring on the background of a stack) *and* is marked as holding separate data for each instance


 

insertAsStackBackground

I am not yet in a stack. Find a Stack that my reference point (center) overlaps, and insert me as a new background.


 

insertCard

Insert a new card in the stack, with the receiver as its background, and have it become the current card of the stack


 

installAsCurrent:

Install anInstance as the one currently viewed in the receiver. Dock up all the morphs in the receiver which contain data rooted in the player instance to the instance data. Run any 'opening' scripts that pertain.


 

isStackBackground

Answer whether the receiver serves as a background of a stack


 

makeHoldSeparateDataForEachInstance

Mark the receiver as holding separate data for each instance (i.e., like a 'background field') and reassess the shape of the corresponding background so that it will be able to accommodate this arrangement.


 

newCard

Create a new card for the receiver and return it


 

reassessBackgroundShape

A change has been made which may affect the instance structure of the Card uniclass that holds the instance state, which can also be thought of as the 'card data'.


 

relaxGripOnVariableNames

Abandon any memory of specific variable names that should be preserved. The overall situation here is not yet completely understood, and this relaxation is basically always done on each reassessment of the background shape nowadays. But this doesn't feel quite right, because if the user has somehow intervened to specify certain name preference we should perhaps honored it. Or perhaps that is no longer relevant. ????


 

reshapeBackground

Abandon any memory of variable-name preferences, and reassess the shape of the background


 

setAsDefaultValueForNewCard

Set the receiver's current value as the one to be used to supply the default value for a variable on a new card. This implementation does not support multiple variables per morph, which is problematical


 

showBackgroundObjects

Momentarily highlight just the background objects on the current playfield


 

showDesignationsOfObjects

Momentarily show the designations of objects on the receiver


 

showForegroundObjects

Temporarily highlight the foreground objects


 

stack

Answer the nearest containing Stack, or, if none, a stack in the current project, and if still none, nil. The extra messiness is because uninstalled backgrounds don't have an owner pointers to their stack.


 

stackDo:

If the receiver has a stack, evaluate aBlock on its behalf


 

stopHoldingSeparateDataForEachInstance

Make the receiver no longer hold separate data for each instance


 

tabHitWithEvent:

The tab key was hit. The keyboard focus has referred this event to me, though this perhaps seems rather backwards. Anyway, the assumption is that I have the property #tabAmongFields, so now the task is to tab to the next field


 

wrapWithAStack

Install me as a card inside a new stack. The stack has no border or controls, so I my look is unchanged. If I don't already have a CardPlayer, find my data fields and make one. Be ready to make new cards in the stack that look like me, but hold different field data.


  change reporting top  
 

addedOrRemovedSubmorph:

Report that the area occupied by this morph should be redrawn.


 

changed

Report that the area occupied by this morph should be redrawn.


 

colorChangedForSubmorph:

The color associated with aSubmorph was changed through the UI; react if needed


 

invalidRect:


 

invalidRect:from:


 

ownerChanged

The receiver's owner, some kind of a pasteup, has changed its layout.


 

userSelectedColor:

The user, via the UI, chose aColor to be the color for the receiver; set it, and tell my owner in case he wishes to react


  classification top  
 

isAlignmentMorph


 

isBalloonHelp


 

isFlapOrTab


 

isFlapTab


 

isFlashMorph


 

isFlexMorph


 

isHandMorph


 

isModalShell


 

isMorph


 

isMorphicModel


 

isPlayfieldLike


 

isRenderer

A *renderer* morph transforms the appearance of its submorph in some manner. For example, it might supply a drop shadow or scale and rotate the morph it encases. Answer true if this morph acts as a renderer. This default implementation returns false.


 

isStandardViewer


 

isSyntaxMorph


 

isWorldMorph


 

isWorldOrHandMorph


  copying top  
 

copy

Answer another instance just like the receiver. Subclasses typically
override this method; they typically do not override shallowCopy.


 

deepCopy

Answer a copy of the receiver with its own copy of each instance
variable.


 

duplicate

Make and return a duplicate of the receiver


 

fullCopy

Deprecated, but maintained for backward compatibility with existing code (no senders in the base 3.0 image). Calls are revectored to #veryDeepCopy, but note that #veryDeepCopy does not do exactly the same thing that the original #fullCopy did, so beware!


 

updateReferencesUsing:

Update intra-morph references within a composite morph that has
been copied. For example, if a button refers to morph X in the orginal
composite then the copy of that button in the new composite should refer to
the copy of X in new composite, not the original X. This default
implementation updates the contents of any morph-bearing slot. It may be
overridden to avoid this behavior if so desired.


 

usableSiblingInstance

Return another similar morph whose Player is of the same class as mine


 

veryDeepCopyWith:

Copy me and the entire tree of objects I point to. An object in the tree twice is copied once, and both references point to him. deepCopier holds a dictionary of objects we have seen. See veryDeepInner:, veryDeepFixupWith:


 

veryDeepFixupWith:

If some fields were weakly copied, fix new copy here.


 

veryDeepInner:

The inner loop, so it can be overridden when a field should not be traced.


  debug and other top  
 

addDebuggingItemsTo:hand:


 

addMouseActionIndicatorsWidth:color:


 

addMouseUpAction


 

addMouseUpActionWith:


 

addViewingItemsTo:

Add viewing-related items to the given menu. If any are added, this method is also responsible for adding a line after them


 

allStringsAfter:

return an OrderedCollection of strings of text in my submorphs. If aSubmorph is non-nil, begin with that container.


 

altSpecialCursor0

an arrow


 

altSpecialCursor1

a star and an arrow


 

altSpecialCursor2

a blue box with transparent center


 

altSpecialCursor3


 

altSpecialCursor3:

a bulls-eye pattern in this color


 

buildDebugMenu:

Answer a debugging menu for the receiver. The hand argument is seemingly historical and plays no role presently


 

defineTempCommand

To use this, comment out what's below here, and substitute your own code.
You will then be able to invoke it from the standard debugging menus. If invoked from the world menu, you'll always get it invoked on behalf of the world, but if invoked from an individual morph's meta-menu, it will be invoked on behalf of that individual morph.

Note that you can indeed reimplement tempCommand in an individual morph's class if you wish


 

deleteAnyMouseActionIndicators


 

handMeTilesToFire

Construct a phrase of tiles comprising a line of code that will 'fire' this object, and hand it to the user


 

inspectArgumentsPlayerInMorphic:


 

inspectOwnerChain


 

installModelIn:

Simple morphs have no model


 

mouseUpCodeOrNil

If the receiver has a mouseUpCodeToRun, return it, else return nil


 

ownerChain

Answer a list of objects representing the receiver and all of its owners. The first element is the receiver, and the last one is typically the world in which the receiver resides


 

programmedMouseDown:for:


 

programmedMouseEnter:for:


 

programmedMouseLeave:for:


 

programmedMouseUp:for:


 

programmedMouseUp:for:with:


 

removeMouseUpAction


 

reportableSize

Answer a size worth reporting as the receiver's size in a list view


 

resumeAfterDrawError


 

resumeAfterStepError

Resume stepping after an error has occured.


 

tempCommand

Generic backstop. If you care to, you can comment out what's below here, and substitute your own code, though the intention of design of the feature is that you leave this method as it is, and instead reimplement tempCommand in the class of whatever individual morph you care to. In any case, once you have your own #tempCommand in place, you will then be able to invoke it from the standard debugging menus.


 

viewMorphDirectly

Open a Viewer directly on the Receiver, i.e. no Player involved


  drawing top  
 

areasRemainingToFill:

May be overridden by any subclasses with opaque regions


 

boundingBoxOfSubmorphs


 

boundsWithinCorners


 

changeClipSubmorphs


 

clipLayoutCells

Drawing/layout specific. If this property is set, clip the submorphs of the receiver by its cell bounds.


 

clipLayoutCells:

Drawing/layout specific. If this property is set, clip the submorphs of the receiver by its cell bounds.


 

clipSubmorphs

Drawing specific. If this property is set, clip the receiver's submorphs to the receiver's clipping bounds.


 

clipSubmorphs:

Drawing specific. If this property is set, clip the receiver's submorphs to the receiver's clipping bounds.


 

clippingBounds

Return the bounds to which any submorphs should be clipped if the property is set


 

doesOwnRotation

Some morphs don't want to TransformMorph to rotate their images, but we do


 

drawDropHighlightOn:


 

drawDropShadowOn:


 

drawErrorOn:

The morph (or one of its submorphs) had an error in its drawing method.


 

drawMouseDownHighlightOn:


 

drawOn:


 

drawOnCanvas:


 

drawPostscriptOn:


 

drawRolloverBorderOn:


 

drawSubmorphsOn:

Display submorphs back to front


 

expandFullBoundsForDropShadow:

Return an expanded rectangle for an eventual drop shadow


 

expandFullBoundsForRolloverBorder:


 

flash

Do nothing.


 

fullDrawOn:

Draw the full Morphic structure on the given Canvas


 

fullDrawPostscriptOn:


 

hasClipSubmorphsString

Answer a string that represents the clip-submophs checkbox


 

hide


 

highlightForMouseDown


 

highlightForMouseDown:


 

highlightedForMouseDown


 

imageForm


 

imageForm:forRectangle:


 

imageFormDepth:


 

imageFormForRectangle:


 

imageFormWithout:andStopThere:

Like imageForm, except it does not display stopMorph,
and it will not display anything above it if stopThere is true.
Returns a pair of the imageForm and a boolean that is true
if it has hit stopMorph, and display should stop.


 

refreshWorld


 

shadowForm

Return a form representing the 'shadow' of the receiver - e.g., all pixels that are occupied by the receiver are one, all others are zero.


 

show

Make sure this morph is on-stage.


 

visible


 

visible:


  drop shadows top  
 

addDropShadow


 

addDropShadowMenuItems:hand:


 

changeShadowColor

Change the shadow color of the receiver -- triggered, e.g. from a menu


 

hasDropShadow


 

hasDropShadow:


 

hasDropShadowString


 

hasRolloverBorder


 

hasRolloverBorder:


 

removeDropShadow


 

setShadowOffset:


 

shadowColor


 

shadowColor:


 

shadowOffset

Return the current shadow offset


 

shadowOffset:

Set the current shadow offset


 

shadowPoint:


 

toggleDropShadow


  dropping/grabbing top  
 

aboutToBeGrabbedBy:

The receiver is being grabbed by a hand.
Perform necessary adjustments (if any) and return the actual morph
that should be added to the hand.


 

asDraggableMorph


 

disableDragNDrop


 

dragEnabled

Get this morph's ability to add and remove morphs via drag-n-drop.


 

dragEnabled:


 

dragNDropEnabled

Note: This method is only useful for dragEnabled == dropEnabled at all times


 

dragSelectionColor


 

dropEnabled

Get this morph's ability to add and remove morphs via drag-n-drop.


 

dropEnabled:


 

dropHighlightColor


 

dropSuccessColor


 

enableDrag:


 

enableDragNDrop


 

enableDragNDrop:

Set both properties at once


 

enableDrop:


 

formerOwner


 

formerOwner:


 

formerPosition


 

formerPosition:


 

grabTransform

Return the transform for the receiver which should be applied during grabbing


 

highlightForDrop


 

highlightForDrop:


 

highlightedForDrop


 

justDroppedInto:event:

This message is sent to a dropped morph after it has been dropped on -- and been accepted by -- a drop-sensitive morph


 

justGrabbedFrom:

The receiver was just grabbed from its former owner and is now attached to the hand. By default, we pass this message on if we're a renderer.


 

nameForUndoWording

Return wording appropriate to the receiver for use in an undo-related menu item (and perhaps elsewhere)


 

rejectDropMorphEvent:

The receiver has been rejected, and must be put back somewhere. There are three cases:
(1) It remembers its former owner and position, and goes right back there
(2) It remembers its former position only, in which case it was torn off from a parts bin, and the UI is that it floats back to its donor position and then vanishes.
(3) Neither former owner nor position is remembered, in which case it is whisked to the Trash


 

repelsMorph:event:


 

resetHighlightForDrop


 

separateDragAndDrop

Conversion only. Separate the old #dragNDropEnabled into #dragEnabled and #dropEnabled and remove the old property.


 

slideBackToFormerSituation:


 

slideToTrash:


 

startDrag:with:


 

toggleDragNDrop

Toggle this morph's ability to add and remove morphs via drag-n-drop.


 

transportedMorph


 

undoGrabCommand

Return an undo command for grabbing the receiver


 

vanishAfterSlidingTo:event:


 

wantsDroppedMorph:event:

Return true if the receiver wishes to accept the given morph, which is being dropped by a hand in response to the given event. Note that for a successful drop operation both parties need to agree. The symmetric check is done automatically via aMorph wantsToBeDroppedInto: self.


 

wantsToBeDroppedInto:

Return true if it's okay to drop the receiver into aMorph. This check is symmetric to #wantsDroppedMorph:event: to give both parties a chance of figuring out whether they like each other.


 

wantsToBeOpenedInWorld

Return true if the receiver wants to be put into the World directly,
rather than allowing the user to place it (e.g., prevent attaching me
to the hand after choosing 'new morph' in the world menu)


 

willingToBeDiscarded


  e-toy support top  
 

adaptToWorld:

The receiver finds itself operating in a possibly-different new world. If any of the receiver's parts are world-dependent (such as a target of a SimpleButtonMorph, etc.), then have them adapt accordingly


 

adoptVocabulary:

Make aVocabulary be the one used by me and my submorphs


 

allMorphsAndBookPagesInto:

Return a set of all submorphs. Don't forget the hidden ones like BookMorph pages that are not showing. Consider only objects that are in memory (see allNonSubmorphMorphs).


 

appearsToBeSameCostumeAs:


 

asNumber:

Support for e-toy demo.


 

asWearableCostume

Return a wearable costume for some player


 

asWearableCostumeOfExtent:

Return a wearable costume for some player


 

automaticViewing

Backstop, in case this message gets sent to an owner that is not a playfield


 

changeAllBorderColorsFrom:to:

Set any occurrence of oldColor as a border color in my entire submorph tree to be newColor


 

configureForKids


 

containingWindow

Answer a window or window-with-mvc that contains the receiver


 

copyCostumeStateFrom:

Copy all state that should be persistant for costumes from aMorph


 

creationStamp

Answer the creation stamp stored within the receiver, if any


 

currentPlayerDo:

If the receiver is a viewer/scriptor associated with a current Player object, evaluate the given block against that object


 

cursor

vacuous backstop in case it gets sent to a morph that doesn't know what to do with it


 

cursor:

vacuous backstop in case it gets sent to a morph that doesn't know what to do with it


 

defaultFloatPrecisionFor:

Answer a number indicating the default float precision to be used in a numeric readout for which the receiver provides the data. Individual morphs can override this. Showing fractional values for readouts of getCursor was in response to an explicit request from ack


 

defaultValueOrNil

If the receiver has a property named #defaultValue, return that property's value, else return nil


 

defaultVariableName

If the receiver is of the sort that wants a variable maintained on its behalf in the 'card' data, then return a variable name to be used for that datum. What is returned here is only a point of departure in the forthcoming negotiation


 

definePath


 

deletePath


 

embedInWindow


 

embeddedInMorphicWindowLabeled:


 

enclosingEditor

Return the next editor around the receiver


 

enforceTileColorPolicy


 

fenceEnabled

in case a non-pasteUp is used as a container


 

followPath


 

getNumericValue

Only certain kinds of morphs know how to deal with this frontally; here we provide support for a numeric property of any morph


 

gridFormOrigin:grid:background:line:


 

isAViewer


 

isCandidateForAutomaticViewing


 

isTileEditor

No, I'm not


 

listViewLineForFieldList:

Answer a ListLineView object which describes the receiver


 

makeGraphPaper


 

makeGraphPaperGrid:background:line:


 

mustBeBackmost

Answer whether the receiver needs to be the backmost morph in its owner's submorph list


 

noteNegotiatedName:for:

This works, kind of, for morphs that have a single variable. Still holding out for generality of morphs being able to have multiple variables, but need a driving example


 

objectViewed

Answer the morph associated with the player that the structure the receiver currently finds itself within represents.


 

referencePlayfield

Answer the PasteUpMorph to be used for cartesian-coordinate reference


 

rotationStyle

Return the 'rotation style' of the receiver


 

rotationStyle:

Set the 'rotation style' of the receiver; this is ignored for non-sketches


 

setAsActionInButtonProperties:


 

setNaturalLanguageTo:

Set the natural language of this morph to be as indicated


 

setNumericValue:

Set the receiver's contents to reflect the given numeric value. Only certain kinds of morphs know what to do with this, the rest, for now, stash the number in a property, where it may not be visible but at least it won't be lost, and can be retrieved by the companion getter. This code is never reached under normal circumstances, because the #numericValue slot is not shown in Viewers for most kinds of morphs, and those kinds of morphs that do show it also reimplement this method. However, this code *could* be reached via a user script which sends #setNumericValue: but whose receiver has been changed, via tile-scripting drag and drop for example, to one that doesn't directly handle numbers


 

setStandardTexture


 

slotSpecifications

A once and possibly future feature; retained here for backward-compatibility bulletproofing.


 

succeededInRevealing:


 

textureParameters

Answer a triplet giving the preferred grid size, background color, and line color. The choices here are as suggested by Alan, 9/13/97


 

topEditor

Return the top-most editor around the receiver


 

unlockOneSubpart


 

updateCachedThumbnail

If I have a cached thumbnail, then update it. Copied up from Dan's original version in PasteUpMorph so it can be used by all morphs.


 

wantsRecolorHandle

Answer whether the receiver would like a recoloring halo handle to be put up. Since this handle also presently affords access to the property-sheet, it is presently always allowed, even though SketchMorphs don't like regular recoloring


 

wrappedInWindow:


 

wrappedInWindowWithTitle:


  event handling top  
 

click

Pretend the user clicked on me.


 

click:

Handle a single-click event. This message is only sent to clients that request it by sending #waitForClicksOrDrag:event: to the initiating hand in their mouseDown: method. This default implementation does nothing.
LC 2/14/2000 08:32 - added: EventHandler notification


 

cursorPoint


 

doubleClick:

Handle a double-click event. This message is only sent to clients that request it by sending #waitForClicksOrDrag:event: to the initiating hand in their mouseDown: method. This default implementation does nothing.
LC 2/14/2000 08:32 - added: EventHandler notification


 

doubleClickTimeout:

Handle a double-click timeout event. This message is only sent to clients that request it by sending #waitForClicksOrDrag:event: to the initiating hand in their mouseDown: method. This default implementation does nothing.


 

dropFiles:

Handle a number of files dropped from the OS


 

firstClickTimedOut:

Useful for double-click candidates who want to know whether or not the click is a single or double. In this case, ignore the #click: and wait for either this or #doubleClick:


 

handlesKeyboard:

Return true if the receiver wishes to handle the given keyboard event


 

handlesMouseDown:

Do I want to receive mouseDown events (mouseDown:, mouseMove:, mouseUp:)?


 

handlesMouseOver:

Do I want to receive mouseEnter: and mouseLeave: when the button is up and the hand is empty? The default response is false, except if you have added sensitivity to mouseEnter: or mouseLeave:, using the on:send:to: mechanism.


 

handlesMouseOverDragging:

Return true if I want to receive mouseEnterDragging: and mouseLeaveDragging: when the hand drags something over me (button up or button down), or when the mouse button is down but there is no mouseDown recipient. The default response is false, except if you have added sensitivity to mouseEnterLaden: or mouseLeaveLaden:, using the on:send:to: mechanism.


 

handlesMouseStillDown:

Return true if the receiver wants to get repeated #mouseStillDown: messages between #mouseDown: and #mouseUp


 

hasFocus


 

keyDown:

Handle a key down event. The default response is to do nothing.


 

keyStroke:

Handle a keystroke event. The default response is to let my eventHandler, if any, handle it.


 

keyUp:

Handle a key down event. The default response is to do nothing.


 

keyboardFocusChange:

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.


 

mouseDown:

Handle a mouse down event. The default response is to let my eventHandler, if any, handle it.


 

mouseEnter:

Handle a mouseEnter event, meaning the mouse just entered my bounds with no button pressed. The default response is to let my eventHandler, if any, handle it.


 

mouseEnterDragging:

Handle a mouseEnterDragging event, meaning the mouse just entered my bounds with a button pressed or laden with submorphs. The default response is to let my eventHandler, if any, handle it, or else to do nothing.


 

mouseLeave:

Handle a mouseLeave event, meaning the mouse just left my bounds with no button pressed. The default response is to let my eventHandler, if any, handle it.


 

mouseLeaveDragging:

Handle a mouseLeaveLaden event, meaning the mouse just left my bounds with a button pressed or laden with submorphs. The default response is to let my eventHandler, if any, handle it; else to do nothing.


 

mouseMove:

Handle a mouse move event. The default response is to let my eventHandler, if any, handle it.


 

mouseStillDown:

Handle a mouse move event. The default response is to let my eventHandler, if any, handle it.


 

mouseStillDownThreshold

Return the number of milliseconds after which mouseStillDown: should be sent


 

mouseUp:

Handle a mouse up event. The default response is to let my eventHandler, if any, handle it.


 

on:send:to:


 

on:send:to:withValue:

NOTE: selector must take 3 arguments, of which value will be the *** FIRST ***


 

removeLink:


 

restoreSuspendedEventHandler


 

startDrag:

Handle a double-click event. This message is only sent to clients that request it by sending #waitForClicksOrDrag:event: to the initiating hand in their mouseDown: method. This default implementation does nothing.


 

suspendEventHandler


 

transformFrom:

Return a transform to be used to map coordinates in a morph above me into my childrens coordinates, or vice-versa. This is used to support scrolling, scaling, and/or rotation. This default implementation just returns my owner's transform or the identity transform if my owner is nil.
Note: This method cannot be used to map into the receiver's coordinate system!


 

transformFromOutermostWorld

Return a transform to map world coordinates into my local coordinates


 

transformFromWorld

Return a transform to map world coordinates into my local coordinates


 

wantsDropFiles:

Return true if the receiver wants files dropped from the OS.


 

wantsEveryMouseMove

Unless overridden, this method allows processing to skip mouse move events
when processing is lagging. No 'significant' event (down/up, etc) will be skipped.


 

wantsKeyboardFocusFor:

Answer whether a plain mouse click on aSubmorph, a text-edit-capable thing, should result in a text selection there


 

wouldAcceptKeyboardFocus

Answer whether a plain mouse click on the receiver should result in a text selection there


 

wouldAcceptKeyboardFocusUponTab

Answer whether the receiver is in the running as the new keyboard focus if the tab key were hit at a meta level. This provides the leverage for tabbing among fields of a card, for example.


  events-alarms top  
 

addAlarm:after:

Add an alarm (that is an action to be executed once) with the given set of parameters


 

addAlarm:at:

Add an alarm (that is an action to be executed once) with the given set of parameters


 

addAlarm:with:after:

Add an alarm (that is an action to be executed once) with the given set of parameters


 

addAlarm:with:at:

Add an alarm (that is an action to be executed once) with the given set of parameters


 

addAlarm:with:with:after:

Add an alarm (that is an action to be executed once) with the given set of parameters


 

addAlarm:with:with:at:

Add an alarm (that is an action to be executed once) with the given set of parameters


 

addAlarm:withArguments:after:

Add an alarm (that is an action to be executed once) with the given set of parameters


 

addAlarm:withArguments:at:

Add an alarm (that is an action to be executed once) with the given set of parameters


 

alarmScheduler

Return the scheduler being responsible for triggering alarms


 

removeAlarm:

Remove the given alarm


 

removeAlarm:at:

Remove the given alarm


  events-processing top  
 

containsPoint:event:

Return true if aPoint is considered to be inside the receiver for the given event.
The default implementation treats locked children as integral part of their owners.


 

defaultEventDispatcher

Return the default event dispatcher to use with events that are directly sent to the receiver


 

handleDropFiles:

Handle a drop from the OS.


 

handleDropMorph:

Handle a dropping morph.


 

handleEvent:

Handle the given event


 

handleFocusEvent:

Handle the given event. This message is sent if the receiver currently has the focus and is therefore receiving events directly from some hand.


 

handleKeyDown:

System level event handling.


 

handleKeyUp:

System level event handling.


 

handleKeystroke:

System level event handling.


 

handleListenEvent:

Handle the given event. This message is sent if the receiver is a registered listener for the given event.


 

handleMouseDown:

System level event handling.


 

handleMouseEnter:

System level event handling.


 

handleMouseLeave:

System level event handling.


 

handleMouseMove:

System level event handling.


 

handleMouseOver:

System level event handling.


 

handleMouseStillDown:

Called from the stepping mechanism for morphs wanting continuously repeated 'yes the mouse is still down, yes it is still down, yes it has not changed yet, no the mouse is still not up, yes the button is down' etc messages


 

handleMouseUp:

System level event handling.


 

handleUnknownEvent:

An event of an unknown type was sent to the receiver. What shall we do?!


 

handlerForMouseDown:

Return the (prospective) handler for a mouse down event. The handler is temporarily installed and can be used for morphs further down the hierarchy to negotiate whether the inner or the outer morph should finally handle the event


 

mouseDownPriority

Return the default mouse down priority for the receiver


 

processEvent:

Process the given event using the default event dispatcher.


 

processEvent:using:

This is the central entry for dispatching events in morphic. Given some event and a default dispatch strategy, find the right receiver and let him handle it.
WARNING: This is a powerful hook. If you want to use a different event dispatcher from the default, here is the place to hook it in. Depending on how the dispatcher is written (e.g., whether it calls simply #processEvent: or #processEvent:using:) you can change the dispatch strategy for entire trees of morphs. Similarly, you can disable entire trees of morphs from receiving any events whatsoever. Read the documentation in class MorphicEventDispatcher before playing with it.


 

rejectDropEvent:

This hook allows the receiver to repel a drop operation currently executed. The method is called prior to checking children so the receiver must validate that the event was really designated for it.
Note that the ordering of the tests below is designed to avoid a (possibly expensive) #fullContainsPoint: test. If the receiver doesn't want to repel the morph anyways we don't need to check after all.


 

rejectsEvent:

Return true to reject the given event. Rejecting an event means neither the receiver nor any of it's submorphs will be given any chance to handle it.


 

transformedFrom:

Return a transform to map coordinates of uberMorph, a morph above me in my owner chain, into the coordinates of MYSELF not any of my children.


  fileIn/out top  
 

attachToResource

Produce a morph from a file -- either a saved .morph file or a graphics file


 

objectForDataStream:

I am being written out on an object file


 

prepareToBeSaved

Prepare this morph to be saved to disk. Subclasses should nil out any instance variables that holds state that should not be saved, such as cached Forms. Note that this operation may take more drastic measures than releaseCachedState; for example, it might discard the transcript of an interactive chat session.


 

reserveUrl:

Write a dummy object to the server to hold a name and place for this object.


 

saveAsResource


 

saveDocPane


 

saveOnFile

Ask the user for a filename and save myself on a SmartReferenceStream file. Writes out the version and class structure. The file is fileIn-able. UniClasses will be filed out.


 

saveOnURL

Ask the user for a url and save myself on a SmartReferenceStream file. Writes out the version and class structure. The file is fileIn-able. UniClasses will be filed out.


 

saveOnURL:

Save myself on a SmartReferenceStream file. If I don't already have a url, use the suggested one. Writes out the version and class structure. The file is fileIn-able. UniClasses will be filed out.


 

saveOnURLbasic

Ask the user for a url and save myself on a SmartReferenceStream file. Writes out the version and class structure. The file is fileIn-able. UniClasses will be filed out.


 

storeDataOn:

Let all Morphs be written out. All owners are weak references. They only go out if the owner is in the tree being written.


 

updateAllFromResources


 

updateFromResource


  genie-dispatching top  
 

blueButtonClickHand:shift:

Simulate a blue button click with the given hand on this morph


 

gesture:

This method gets called from the CRGestureProcessor after a gesture is captured entirely.
If the Morph has an assigned EventHandler or a gesture handler, let them handle the gesture.
Otherwise handleGesture: gets invoked.


 

gestureCode:

If the gesture event contains code, execute it


 

gestureCommand:

If the gesture event is a command, execute the corresponding action


 

gestureKeystrokes:

If the gesture event corresponds to keystrokes, simulate them


 

gestureMouseEvent:

If the gesture corresponds to a mouse event (#redClick, ...), simulate it


 

gestureStrokes:

If he gesture event is a string, simulate the sequence of keystrokes


 

handleGesture:

This is the method that handles gestures events.


 

isGestureUndoable:

Returns wheter a gesture event is undoable in the context of this Morph.
NOTE: All the undo related methods can only undo keystrokes by simulating backspace.
Therefore, they are only useful for Morphs that accept keyboard text.


 

isSpecialCharacterUndoable:

Is the special character undoable?
NOTE: All the undo related methods can only undo keystrokes by simulating backspace.
Therefore, they are only useful for Morphs that accept keyboard text.


 

modifyGesture:by:

Modify the effect of originalCRGesture depending on modifyCRGesture.
NOTE: All the undo related methods can only undo keystrokes by simulating backspace.
Therefore, they are only useful for Morphs that accept keyboard text.


 

undoGesture:

Undo the effect of a gesture event.
NOTE: All the undo related methods can only undo keystrokes by simulating backspace.
Therefore, they are only useful for Morphs that accept keyboard text.


  genie-menu top  
 

addGenieMenuItems:hand:

If the receiver wishes the Genie menu items, add a line to the menu and then those Genie items, else do nothing


 

changeGestureDictionary

Asks the user for a new gesture dictionary name


 

hasNotExportedGestureDictionary

Is the assigned gesture dictionary exported


 

hasReferencedGestureDictionary

Is the gesture dictionary dicrectly referenced by this object or is it linked by name?


 

inspectGestureDictionary

Opens an editor for the gesture dictionary


 

makeOwnCopyOfGestureDictionary

Make a copy of the gesture dictionary and assign it to this object


 

makeOwnSubGestureDictionary

Make a sud-dictionary of the assigned gesture dictionary and assign it to this object


  genie-processing top  
 

allowsGestureEscape

Is it allowed to escape from recognizing a gesture for this morph?


 

allowsGesturePreprocessing

Is the gesture processor allowed to do some preprocessing with the gesture before sending
it to this morph?


 

allowsGestureStart:


 

defaultGestureDictionaryOrName

This method returns the default gesture dictionary name for the instances
of a Morph class. (It's also possible to directly return a dictionary but it's much
more flexible to return the name).
This generic implementation returns the class name if there is a dictionary
exported under this name. If not, it tries the name of the superclass, etc.


 

disableGestures

Disable gesture handling for this Morph by associating nil as the gesture dictionary.


 

gestureDictionary

This method is invoked to determine the gesture dictionary of the Morph.
Usually, gesture dictionaries are identified by (exported) names and so this method just
converts names to dictionaries if necessary


 

gestureDictionaryOrName

If there is an GestureHandler or an EventHandler assigned to the object,
return the gesture dictionary or name definied there.
If not, return the default dictionary or name.


 

gestureDictionaryOrName:

Assign the gesture dictionary or name to the object by using an EventHandler


 

gestureHandler

Usually a morph handles gestures itself or lets an associated EventHandler do it.
However, sometimes a morph wants to let another morph handle the gesture for it.
Example: If a TextMorph is part of a pane (like PluggableTextMorph),
the PluggableTextMorph handles also the events for the TextMorph.


 

gestureStart:

Start capturing a gesture for this morph


 

handlesGestureStart:

If true, the gesture handler is started when the morph gets a red button down
event.
If there is a gesture Handler or an EventHandler assigned to the object,
let it decide what happens.
Otherwise, return true if there is a valid default dictionary.


 

onGestureSend:to:

Tell a certain instance to use a particular gesture dictionary to lookup gestures.
Also the selector and the recipient can be specified


  geometry top  
 

align:with:

Translate by aPoint2 - aPoint1.


 

bottom


 

bottom:


 

bottomLeft


 

bottomLeft:


 

bottomRight


 

bottomRight:


 

bounds

Return the bounds of this morph.


 

bounds:


 

bounds:from:

Return the receiver's bounds as seen by aMorphs coordinate frame


 

bounds:in:

Return the receiver's bounds as seen by aMorphs coordinate frame


 

boundsIn:

Return the receiver's bounds as seen by aMorphs coordinate frame


 

boundsInWorld


 

center


 

center:


 

extent


 

extent:


 

fullBoundsInWorld


 

globalPointToLocal:


 

gridPoint:


 

griddedPoint:


 

height


 

height:


 

innerBounds

Return the inner rectangle enclosed by the bounds of this morph excluding the space taken by its borders. For an unbordered morph, this is just its bounds.


 

left


 

left:


 

localPointToGlobal:


 

minimumExtent

This returns the minimum extent that the morph may be shrunk to. Not honored in too many places yet, but respected by the resizeToFit feature, at least. copied up from SystemWindow 6/00


 

minimumExtent:

Remember a minimumExtent, for possible future use


 

nextOwnerPage

Tell my container to advance to the next page


 

outerBounds

Return the 'outer' bounds of the receiver, e.g., the bounds that need to be invalidated when the receiver changes.


 

point:from:


 

point:in:


 

pointFromWorld:


 

pointInWorld:


 

position


 

position:

Change the position of this morph and and all of its submorphs.


 

positionInWorld


 

positionSubmorphs


 

previousOwnerPage

Tell my container to advance to the previous page


 

right


 

right:


 

screenLocation

For compatibility only


 

screenRectangle

For compatibility only


 

setConstrainedPosition:hangOut:

Change the position of this morph and and all of its submorphs to aPoint, but don't let me go outside my owner's bounds. Let me go within two pixels of completely outside if partiallyOutside is true.


 

shiftSubmorphsBy:


 

shiftSubmorphsOtherThan:by:


 

top


 

top:


 

topLeft


 

topLeft:


 

topRight


 

topRight:


 

transformedBy:


 

width


 

width:


 

worldBounds


 

worldBoundsForHalo

To restore older behavior, change this to return self fullBoundsInWorld


  geometry eToy top  
 

addTransparentSpacerOfSize:


 

beTransparent


 

cartesianBoundsTopLeft

Answer the origin of this morph relative to it's container's cartesian origin.
NOTE: y DECREASES toward the bottom of the screen


 

cartesianXY

Answer the receiver's x-y cartesian coordinates


 

cartesianXY:


 

color:sees:

Return true if any of my pixels of sensitiveColor intersect with pixels of soughtColor.


 

colorUnder

Return the color of under the receiver's center.


 

degreesOfFlex

Return any rotation due to flexing


 

forwardDirection:

Set the receiver's forward direction (in eToy terms)


 

getIndexInOwner

Answer which position the receiver holds in its owner's hierarchy


 

goHome


 

heading

Return the receiver's heading (in eToy terms)


 

heading:

Set the receiver's heading (in eToy terms)


 

move:toPosition:

Support for e-toy demo. Move the given submorph to the given position. Allows the morph's owner to determine the policy for motion. For example, moving forward through a table might mean motion only in the x-axis with wrapping modulo the table size.


 

referencePosition

Return the current reference position of the receiver


 

referencePosition:

Move the receiver to match its reference position with aPosition


 

referencePositionInWorld


 

referencePositionInWorld:


 

rotationCenter

Return the rotation center of the receiver. The rotation center defines the relative offset inside the receiver's bounds for locating the reference position.


 

rotationCenter:

Set the new rotation center of the receiver. The rotation center defines the relative offset inside the receiver's bounds for locating the reference position.


 

setDirectionFrom:


 

setIndexInOwner:

Answer which position the receiver holds in its owner's hierarchy


 

touchesColor:

Return true if any of my pixels overlap pixels of soughtColor.


 

transparentSpacerOfSize:


 

wrap


 

x

Return my horizontal position relative to the cartesian origin of a relevant playfield


 

x:

Set my horizontal position relative to the cartesian origin of the playfield or the world.


 

x:y:


 

y

Return my vertical position relative to the cartesian origin of the playfield or the world. Note that larger y values are closer to the top of the screen.


 

y:

Set my vertical position relative to the cartesian origin of the playfield or the world. Note that larger y values are closer to the top of the screen.


  geometry testing top  
 

containsPoint:


 

fullContainsPoint:


 

obtrudesBeyondContainer

Answer whether the receiver obtrudes beyond the bounds of its container


  halos and balloon help top  
 

addHalo

Invoke a halo programatically (e.g., not from a meta gesture)


 

addHalo:


 

addHalo:from:

Transfer a halo from the former halo owner to the receiver


 

addHandlesTo:box:

Add halo handles to the halo. Apply the halo filter if appropriate


 

addMagicHaloFor:


 

addOptionalHandlesTo:box:


 

addSimpleHandlesTo:box:


 

addWorldHandlesTo:box:


 

balloonColor


 

balloonColor:


 

balloonHelpAligner

Answer the morph to which the receiver's balloon help should point


 

balloonHelpDelayTime

Return the number of milliseconds before a balloon help should be put up on the receiver. The balloon help will only be put up if the receiver responds to #wantsBalloon by returning true.


 

balloonHelpTextForHandle:

Answer a string providing balloon help for the given halo handle


 

boundsForBalloon

some morphs have bounds that are way too big


 

comeToFrontAndAddHalo


 

defaultBalloonColor


 

defersHaloOnClickTo:

If a cmd-click on aSubMorph would make it a preferred recipient of the halo, answer true


 

deleteBalloon

If I am showing a balloon, delete it.


 

editBalloonHelpContent:


 

editBalloonHelpText

Modify the receiver's balloon help text.


 

halo


 

haloClass

Answer the name of the desired kind of HaloMorph to launch on behalf of the receiver


 

haloDelayTime

Return the number of milliseconds before a halo should be put up on the receiver. The halo will only be put up if the receiver responds to #wantsHalo by returning true.


 

hasHalo


 

hasHalo:


 

isLikelyRecipientForMouseOverHalos


 

mightEntertainDirectionHandles

Answer whether the receiver, by its very nature, might possibly be happy to have direction handles shown for it in its halo


 

mouseDownOnHelpHandle:

The mouse went down in the show-balloon handle


 

noHelpString


 

okayToAddDismissHandle

Answer whether a halo on the receiver should offer a dismiss handle. This provides a hook for making it harder to disassemble some strucures even momentarily


 

okayToAddGrabHandle

Answer whether a halo on the receiver should offer a grab handle. This provides a hook for making it harder to deconstruct some strucures even momentarily


 

okayToBrownDragEasily

Answer whether it it okay for the receiver to be brown-dragged easily -- i.e. repositioned within its container without extracting it. At present this is just a hook -- nobody declines.


 

okayToExtractEasily

Answer whether it it okay for the receiver to be extracted easily. Not yet hooked up to the halo-permissions mechanism.


 

okayToResizeEasily

Answer whether it is appropriate to have the receiver be easily resized by the user from the halo


 

okayToRotateEasily

Answer whether it is appropriate for a rotation handle to be shown for the receiver. This is a hook -- at present nobody declines.


 

removeHalo


 

setBalloonText:

Set receiver's balloon help text. Pass nil to remove the help.


 

setBalloonText:maxLineLength:

Set receiver's balloon help text. Pass nil to remove the help.


 

setCenteredBalloonText:


 

showBalloon:

Pop up a balloon containing the given string,
first removing any existing BalloonMorphs in the world.


 

showBalloon:hand:

Pop up a balloon containing the given string,
first removing any existing BalloonMorphs in the world.


 

transferHalo:from:

Progressively transfer the halo to the next likely recipient


 

wantsBalloon

Answer true if receiver wants to show a balloon help text is a few moments.


 

wantsDirectionHandles


 

wantsDirectionHandles:


 

wantsHalo


 

wantsHaloFor:


 

wantsHaloFromClick


 

wantsHaloHandleWithSelector:inHalo:

Answer whether the receiver would like to offer the halo handle with the given selector (e.g. #addCollapseHandle:)


 

wantsScriptorHaloHandle

Answer whether the receiver would like to have a Scriptor halo handle put up on its behalf. Initially, only the ScriptableButton says yes


  initialization top  
 

basicInitialize

Do basic generic initialization of the instance variables:
Set up the receiver, created by a #basicNew and now ready to be initialized, by placing initial values in the instance variables as appropriate


 

currentVocabulary

Answer the receiver's current vocabulary


 

inATwoWayScrollPane

Answer a two-way scroll pane that allows the user to scroll the receiver in either direction. It will have permanent scroll bars unless you take some special action.


 

initialExtent

Answer the desired extent for the receiver when a view on it is first opened on the screen.
5/22/96 sw: in the absence of any override, obtain from RealEstateAgent


 

initialize


 

intoWorld:

The receiver has just appeared in a new world. Note:
* aWorld can be nil (due to optimizations in other places)
* owner is already set
* owner's submorphs may not include receiver yet.
Important: Keep this method fast - it is run whenever morphs are added.


 

openCenteredInWorld


 

openInHand

Attach the receiver to the current hand in the current morphic world


 

openInMVC


 

openInWindow


 

openInWindowLabeled:


 

openInWindowLabeled:inWorld:


 

openInWorld

Add this morph to the world. If in MVC, then provide a Morphic window for it.


 

openInWorld:

Add this morph to the requested World.


 

outOfWorld:

The receiver has just appeared in a new world. Notes:
* aWorld can be nil (due to optimizations in other places)
* owner is still valid
Important: Keep this method fast - it is run whenever morphs are removed.


 

resourceJustLoaded

In case resource relates to me


 

standardPalette

Answer a standard palette forced by some level of enclosing presenter, or nil if none


  layout top  
 

acceptDroppingMorph:event:

This message is sent when a morph is dropped onto a morph that has agreed to accept the dropped morph by responding 'true' to the wantsDroppedMorph:Event: message. This default implementation just adds the given morph to the receiver.


 

adjustLayoutBounds

Adjust the receivers bounds depending on the resizing strategy imposed


 

doLayoutIn:

Compute a new layout based on the given layout bounds.


 

fullBounds

Return the bounding box of the receiver and all its children. Recompute the layout if necessary.


 

layoutBounds

Return the bounds for laying out children of the receiver


 

layoutBounds:

Set the bounds for laying out children of the receiver.
Note: written so that #layoutBounds can be changed without touching this method


 

layoutChanged


 

layoutInBounds:

Layout specific. Apply the given bounds to the receiver after being layed out in its owner.


 

layoutProportionallyIn:

Layout specific. Apply the given bounds to the receiver.


 

minExtent

Layout specific. Return the minimum size the receiver can be represented in.
Implementation note: When this message is sent from an owner trying to lay out its children it will traverse down the morph tree and recompute the minimal arrangement of the morphs based on which the minimal extent is returned. When a morph with some layout strategy is encountered, the morph will ask its strategy to compute the new arrangement. However, since the final size given to the receiver is unknown at the point of the query, the assumption is made that the current bounds of the receiver are the base on which the layout should be computed. This scheme prevents strange layout changes when for instance, a table is contained in another table. Unless the inner table has been resized manually (which means its bounds are already enlarged) the arrangement of the inner table will not change here. Thus the entire layout computation is basically an iterative process which may have different results depending on the incremental changes applied.


 

minHeight


 

minHeight:


 

minWidth


 

minWidth:


 

privateFullBounds

Private. Compute the actual full bounds of the receiver


 

submorphBounds

Private. Compute the actual full bounds of the receiver


  layout-menu top  
 

addCellLayoutMenuItems:hand:

Cell (e.g., child) related items


 

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 top  
 

assureLayoutProperties


 

assureTableProperties


 

cellInset

Layout specific. This property specifies an extra inset for each cell in the layout.


 

cellInset:

Layout specific. This property specifies an extra inset for each cell in the layout.


 

cellPositioning

Layout specific. This property describes how the receiver should be layed out in its owner when the bounds of the cell assigned to the receiver do not exactly match its bounds. Possible values are:
#topLeft, #topRight, #bottomLeft, #bottomRight, #topCenter, #leftCenter, #rightCenter, #bottomCenter, #center
which align the receiver's bounds with the cell at the given point.


 

cellPositioning:

Layout specific. This property describes how the receiver should be layed out in its owner when the bounds of the cell assigned to the receiver do not exactly match its bounds. Possible values are:
#topLeft, #topRight, #bottomLeft, #bottomRight, #topCenter, #leftCenter, #rightCenter, #bottomCenter, #center
which align the receiver's bounds with the cell at the given point.


 

cellPositioningString:


 

cellSpacing

Layout specific. This property describes how the cell size for each element in a list should be computed.
#globalRect - globally equal rectangular cells
#globalSquare - globally equal square cells
#localRect - locally (e.g., per row/column) equal rectangular cells
#localSquare - locally (e.g., per row/column) equal square cells
#none - cells are sized based on available row/column constraints


 

cellSpacing:

Layout specific. This property describes how the cell size for each element in a list should be computed.
#globalRect - globally equal rectangular cells
#globalSquare - globally equal square cells
#localRect - locally (e.g., per row/column) equal rectangular cells
#localSquare - locally (e.g., per row/column) equal square cells
#none - cells are sized based on available row/column constraints


 

cellSpacingString:


 

disableTableLayout

Layout specific. Disable laying out the receiver in table layout


 

disableTableLayout:

Layout specific. Disable laying out the receiver in table layout


 

hResizing

Layout specific. This property describes how the receiver should be resized with respect to its owner and its children. Possible values are:
#rigid - do not resize the receiver
#spaceFill - resize to fill owner's available space
#shrinkWrap - resize to fit children


 

hResizing:

Layout specific. This property describes how the receiver should be resized with respect to its owner and its children. Possible values are:
#rigid - do not resize the receiver
#spaceFill - resize to fill owner's available space
#shrinkWrap - resize to fit children


 

hResizingString:


 

layoutFrame

Layout specific. Return the layout frame describing where the receiver should appear in a proportional layout


 

layoutFrame:

Layout specific. Return the layout frame describing where the receiver should appear in a proportional layout


 

layoutInset

Return the extra inset for layouts


 

layoutInset:

Return the extra inset for layouts


 

layoutPolicy

Layout specific. Return the layout policy describing how children of the receiver should appear.


 

layoutPolicy:

Layout specific. Return the layout policy describing how children of the receiver should appear.


 

layoutProperties

Return the current layout properties associated with the receiver


 

layoutProperties:

Return the current layout properties associated with the receiver


 

listCentering

Layout specific. This property describes how the rows/columns in a list-like layout should be centered.
#topLeft - center at start of primary direction
#bottomRight - center at end of primary direction
#center - center in the middle of primary direction
#justified - insert extra space inbetween rows/columns


 

listCentering:

Layout specific. This property describes how the rows/columns in a list-like layout should be centered.
#topLeft - center at start of primary direction
#bottomRight - center at end of primary direction
#center - center in the middle of primary direction
#justified - insert extra space inbetween rows/columns


 

listCenteringString:


 

listDirection

Layout specific. This property describes the direction in which a list-like layout should be applied. Possible values are:
#leftToRight
#rightToLeft
#topToBottom
#bottomToTop
indicating the direction in which any layout should take place


 

listDirection:

Layout specific. This property describes the direction in which a list-like layout should be applied. Possible values are:
#leftToRight
#rightToLeft
#topToBottom
#bottomToTop
indicating the direction in which any layout should take place


 

listDirectionString:


 

listSpacing

Layout specific. This property describes how the heights for different rows in a table layout should be handled.
#equal - all rows have the same height
#none - all rows may have different heights


 

listSpacing:

Layout specific. This property describes how the heights for different rows in a table layout should be handled.
#equal - all rows have the same height
#none - all rows may have different heights


 

listSpacingString:


 

maxCellSize

Layout specific. This property specifies the maximum size of a table cell.


 

maxCellSize:

Layout specific. This property specifies the maximum size of a table cell.


 

minCellSize

Layout specific. This property specifies the minimal size of a table cell.


 

minCellSize:

Layout specific. This property specifies the minimal size of a table cell.


 

reverseTableCells

Layout specific. This property describes if the cells should be treated in reverse order of submorphs.


 

reverseTableCells:

Layout specific. This property describes if the cells should be treated in reverse order of submorphs.


 

rubberBandCells

Layout specific. This property describes if a parent that is #shrinkWrapped around its children should ignore any #spaceFill children. E.g., when #rubberBandCells is true, the compound layout will always stay at the smallest available size, even though some child may be able to grow.


 

rubberBandCells:

Layout specific. This property describes if a parent that is #shrinkWrapped around its children should ignore any #spaceFill children. E.g., when #rubberBandCells is true, the compound layout will always stay at the smallest available size, even though some child may be able to grow.


 

spaceFillWeight

Layout specific. This property describes the relative weight that should be given to the receiver when extra space is distributed between different #spaceFill cells.


 

spaceFillWeight:

Layout specific. This property describes the relative weight that should be given to the receiver when extra space is distributed between different #spaceFill cells.


 

vResizeToFit:


 

vResizing

Layout specific. This property describes how the receiver should be resized with respect to its owner and its children. Possible values are:
#rigid - do not resize the receiver
#spaceFill - resize to fill owner's available space
#shrinkWrap - resize to fit children


 

vResizing:

Layout specific. This property describes how the receiver should be resized with respect to its owner and its children. Possible values are:
#rigid - do not resize the receiver
#spaceFill - resize to fill owner's available space
#shrinkWrap - resize to fit children


 

vResizingString:


 

wrapCentering

Layout specific. This property describes how the rows/columns in a list-like layout should be centered.
#topLeft - center at start of secondary direction
#bottomRight - center at end of secondary direction
#center - center in the middle of secondary direction
#justified - insert extra space inbetween rows/columns


 

wrapCentering:

Layout specific. This property describes how the rows/columns in a list-like layout should be centered.
#topLeft - center at start of secondary direction
#bottomRight - center at end of secondary direction
#center - center in the middle of secondary direction
#justified - insert extra space inbetween rows/columns


 

wrapCenteringString:


 

wrapDirection

Layout specific. This property describes the direction along which a list-like layout should be wrapped. Possible values are:
#leftToRight
#rightToLeft
#topToBottom
#bottomToTop
#none
indicating in which direction wrapping should occur. This direction must be orthogonal to the list direction, that is if listDirection is #leftToRight or #rightToLeft then wrapDirection must be #topToBottom or #bottomToTop and vice versa.


 

wrapDirection:

Layout specific. This property describes the direction along which a list-like layout should be wrapped. Possible values are:
#leftToRight
#rightToLeft
#topToBottom
#bottomToTop
#none
indicating in which direction wrapping should occur. This direction must be orthogonal to the list direction, that is if listDirection is #leftToRight or #rightToLeft then wrapDirection must be #topToBottom or #bottomToTop and vice versa.


 

wrapDirectionString:


  menu top  
 

addBorderStyleMenuItems:hand:

Probably one could offer border-style items even if it's not a borderedMorph, so this remains a loose end for the moment


  menus top  
 

absorbStateFromRenderer:

Transfer knownName, actorState, and player info over from aRenderer, which was formerly imposed above me as a transformation shell but is now going away.


 

adMiscExtrasTo:

Add a submenu of miscellaneous extra items to the menu.


 

addAddHandMenuItemsForHalo:hand:

The former charter of this method was to add halo menu items that pertained specifically to the hand. Over time this charter has withered, and most morphs reimplement this method simply to add their morph-specific menu items. So in the latest round, all other implementors in the standard image have been removed. However, this is left here as a hook for the benefit of existing code in client uses.


 

addCopyItemsTo:

Add copy-like items to the halo menu


 

addCustomHaloMenuItems:hand:

Add morph-specific items to the given menu which was invoked by the given hand from the halo. To get started, we defer to the counterpart method used with the option-menu, but in time we can have separate menu choices for halo-menus and for option-menus


 

addCustomMenuItems:hand:

Add morph-specific items to the given menu which was invoked by the given hand. This method provides is invoked both from the halo-menu and from the control-menu regimes.


 

addExportMenuItems:hand:


 

addFillStyleMenuItems:hand:

Add the items for changing the current fill style of the Morph


 

addHaloActionsTo:

Add items to aMenu representing actions requestable via halo


 

addPaintingItemsTo:hand:


 

addPlayerItemsTo:

Add player-related items to the menu if appropriate


 

addStackItemsTo:

Add stack-related items to the menu


 

addStandardHaloMenuItemsTo:hand:

Add standard halo items to the menu


 

addTitleForHaloMenu:


 

addToggleItemsToHaloMenu:

Add standard true/false-checkbox items to the memu


 

adhereToEdge


 

adhereToEdge:


 

adjustedCenter

Provides a hook for objects to provide a reference point other than the receiver's center,for the purpose of centering a submorph under special circumstances, such as BalloonMorph


 

adjustedCenter:

Set the receiver's position based on the #adjustedCenter protocol for adhereToEdge. By default this simply sets the receiver's center. Though there are (at its inception anyway) no other implementors of this method, it is required in use with the #adhereToEdge when the centering of a submorph is to be with reference to a rectangle other than the receiver's center.


 

allMenuWordings


 

changeColor

Change the color of the receiver -- triggered, e.g. from a menu


 

changeDirectionHandles


 

changeDragAndDrop


 

chooseNewGraphic

Used by any morph that can be represented by a graphic


 

chooseNewGraphicCoexisting:

Allow the user to choose a different form for her form-based morph


 

chooseNewGraphicFromHalo

Allow the user to select a changed graphic to replace the one in the receiver


 

collapse


 

dismissButton

Answer a button whose action would be to dismiss the receiver, and whose action is to send #delete to the receiver


 

doMenuItem:


 

exportAsBMP


 

exportAsGIF


 

hasDirectionHandlesString


 

hasDragAndDropEnabledString

Answer a string to characterize the drag & drop status of the receiver


 

helpButton

Answer a button whose action would be to put up help concerning the receiver


 

inspectInMorphic


 

inspectInMorphic:


 

lockUnlockMorph

If the receiver is locked, unlock it; if unlocked, lock it


 

lockedString

Answer the string to be shown in a menu to represent the 'locked' status


 

makeNascentScript


 

maybeAddCollapseItemTo:

If appropriate, add a collapse item to the given menu


 

menuItemAfter:


 

menuItemBefore:


 

presentHelp

Present a help message if there is one available


 

printPSToFile


 

printPSToFileNamed:

Ask the user for a filename and print this morph as postscript.


 

putOnBackground

Place the receiver, formerly private to its card, onto the shared background. If the receiver needs data carried on its behalf by the card, such data will be represented on every card.


 

putOnForeground

Place the receiver, formerly on the background, onto the foreground. If the receiver needs data carried on its behalf by the card, those data will be lost, so in this case get user confirmation before proceeding.


 

resetForwardDirection


 

resistsRemovalString

Answer the string to be shown in a menu to represent the 'resistsRemoval' status


 

setRotationCenter


 

setRotationCenterFrom:


 

setToAdhereToEdge:


 

snapToEdgeIfAppropriate


 

stickinessString

Answer the string to be shown in a menu to represent the stickiness status


 

transferStateToRenderer:

Transfer knownName, actorState, and player info over to aRenderer, which is being imposed above me as a transformation shell


 

uncollapseSketch


  messenger top  
 

affiliatedSelector

Answer a selector affiliated with the receiver for the purposes of launching a messenger. Reimplement this to plug into the messenger service


  meta-actions top  
 

applyStatusToAllSiblings:

Apply the statuses of all my scripts to the script status of all my siblings


 

beThisWorldsModel


 

blueButtonDown:

Special gestures (cmd-mouse on the Macintosh; Alt-mouse on Windows and Unix) allow a mouse-sensitive morph to be moved or bring up a halo for the morph.


 

blueButtonUp:

Ignored. Theoretically we should never get here since control is transferred to the halo on #blueButtonDown: but subclasses may implement this differently.


 

bringAllSiblingsToMe:

bring all siblings of the receiver's player found in the same container to the receiver's location.


 

buildHandleMenu:

Build the morph menu for the given morph's halo's menu handle. This menu has two sections. The first section contains commands that are interpreted by the hand; the second contains commands provided by the target morph. This method allows the morph to decide which items should be included in the hand's section of the menu.


 

buildMetaMenu:

Build the morph menu. This menu has two sections. The first section contains commands that are handled by the hand; the second contains commands handled by the argument morph.


 

changeColorTarget:selector:originalColor:hand:

Put up a color picker for changing some kind of color. May be modal or modeless, depending on #modalColorPickers setting


 

copyToPasteBuffer:


 

dismissMorph

Dismiss the morph


 

dismissMorph:


 

duplicateMorph:

Make and return a duplicate of the receiver's argument


 

embedInto:

Embed the receiver into some other morph


 

grabMorph:


 

handlerForBlueButtonDown:

Return the (prospective) handler for a mouse down event. The handler is temporarily installed and can be used for morphs further down the hierarchy to negotiate whether the inner or the outer morph should finally handle the event.
Note: Halos handle blue button events themselves so we will only be asked if there is currently no halo on top of us.


 

handlerForMetaMenu:

Return the prospective handler for invoking the meta menu. By default, the top-most morph in the innermost world gets this menu


 

inspectAt:event:


 

invokeMetaMenu:


 

invokeMetaMenuAt:event:


 

makeMultipleSiblings:

Make multiple siblings, first prompting the user for how many


 

makeNewPlayerInstance:

Make a duplicate of the receiver's argument. This is called only where the argument has an associated Player as its costumee, and the intent here is to make another instance of the same uniclass as the donor Player itself. Much works, but there are flaws so this shouldn't be used without recognizing the risks


 

makeSiblings:

Make multiple sibling, and return the list


 

makeSiblingsLookLikeMe:

Make all my siblings wear the same costume that I am wearing.


 

maybeDuplicateMorph

Maybe duplicate the morph


 

maybeDuplicateMorph:


 

openAButtonPropertySheet


 

openAPropertySheet


 

openATextPropertySheet

should only be sent to morphs that are actually supportive


 

potentialEmbeddingTargets

Return the potential targets for embedding the receiver


 

resizeFromMenu

Commence an interaction that will resize the receiver


 

resizeMorph:


 

saveAsPrototype


 

showActions

Put up a message list browser of all the code that this morph
would run for mouseUp, mouseDown, mouseMove, mouseEnter, mouseLeave, and
mouseLinger. tk 9/13/97


 

showHiders