The Trunk: Morphic-kb.238.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Morphic-kb.238.mcz

commits-2
Andreas Raab uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-kb.238.mcz

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

Name: Morphic-kb.238
Author: kb
Time: 19 November 2009, 9:39:29 am
UUID: 43f62344-83a5-a641-9dfd-1dcda9f19c83
Ancestors: Morphic-kb.237

 - first stab at creating a simple docking bar.
 - moved the old docking bar class to TheWorldMainDockingBarOld
 - created a subclass of MenuItemMorph: DockingBarItemMorph,
 - and cleaned MenuItemMorph from isInDockingBar sends.
 - added to the postcript to enable the docking bar.

=============== Diff against Morphic-kb.237 ===============

Item was added:
+ ----- Method: DockingBarMorph>>add:icon:selectedIcon:help:subMenu: (in category 'construction') -----
+ add: wordingString icon: aForm selectedIcon: anotherForm help: helpString subMenu: aMenuMorph
+ "Append the given submenu with the given label."
+ | item |
+ item := DockingBarItemMorph new
+ contents: wordingString;
+ subMenu: aMenuMorph;
+ icon: aForm;
+ selectedIcon: anotherForm.
+ helpString isNil ifFalse: [
+ item setBalloonText: helpString ].
+ self addMorphBack: item!

Item was changed:
  ----- Method: MenuItemMorph>>subMenuMarker (in category 'private') -----
  subMenuMarker
  "private - answer the form to be used as submenu marker"
+
+ ^self rightArrow!
- self isInDockingBar
- ifFalse: [^ self rightArrow].
- ""
- owner isFloating
- ifTrue: [^ self bottomArrow].
- owner isAdheringToTop
- ifTrue: [^ self bottomArrow].
- owner isAdheringToBottom
- ifTrue: [^ self upArrow].
- owner isAdheringToLeft ifTrue:[^ self rightArrow].
- owner isAdheringToRight ifTrue:[^ self leftArrow].
- ""
- ^ self rightArrow!

Item was changed:
  ----- Method: MenuItemMorph>>mouseUp: (in category 'events') -----
  mouseUp: evt
  "Handle a mouse up event. Menu items get activated when the mouse is over them. Do nothing if we're not in a 'valid menu transition', meaning that the current hand focus must be aimed at the owning menu."
+
+ evt hand mouseFocus == owner ifFalse: [ ^self ].
+ self contentString ifNotNil: [
- evt hand mouseFocus == owner ifFalse:[^self].
- self contentString ifNotNil:[
  self contents: self contentString withMarkers: true inverse: true.
  self refreshWorld.
+ (Delay forMilliseconds: 200) wait ].
+ self deselect: evt.
- (Delay forMilliseconds: 200) wait].
-
- self isInDockingBar
- ifTrue:[ owner rootMenu selectItem: nil event: evt ]
- ifFalse:[ self deselect: evt ].
-
  self invokeWithEvent: evt.
  !

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>createButtonIcon:help:selector: (in category 'private - buttons') -----
+ createButtonIcon: aFormOrMorph help: helpStringOrNil selector: selector
+ "Private - Creates a button to fire an action from a docking bar"
+ | button icon |
+ button := RectangleMorph new.
+ button extent: aFormOrMorph extent + 2.
+ button borderWidth: 0.
+ button color: self offColor.
+ helpStringOrNil isNil
+
+ ifFalse: [button setBalloonText: helpStringOrNil translated].
+ ""
+ icon := aFormOrMorph isMorph
+ ifTrue: [aFormOrMorph]
+ ifFalse: [SketchMorph withForm: aFormOrMorph].
+ button addMorphCentered: icon.
+ ""
+ button
+ on: #mouseDown
+ send: #perform:event:for:
+ to: self
+ withValue: selector.
+ button
+ on: #mouseEnter
+ send: #colorOnEvent:for:
+ to: self.
+ button
+ on: #mouseLeave
+ send: #colorOffEvent:for:
+ to: self.
+ ""
+ ^ button!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>offColor (in category 'private - buttons') -----
+ offColor
+ "Private - answer the off color"
+ ^ Color black alpha: 0.01!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>hideAllViewersIn: (in category 'menu actions') -----
+ hideAllViewersIn: aMorph
+ aMorph isFlapTab
+ ifTrue: [self hideAllViewersIn: aMorph referent].
+ aMorph
+ submorphsDo: [:each | ""
+ ({ScriptEditorMorph. StandardViewer} includes: each class)
+ ifTrue: [each dismiss]
+ ifFalse: [self hideAllViewersIn: each]]!

Item was changed:
  ----- Method: MenuItemMorph>>drawOn: (in category 'drawing') -----
  drawOn: aCanvas
  | stringColor stringBounds |
  isSelected & isEnabled
+ ifTrue: [
+ aCanvas fillRectangle: self bounds fillStyle: self selectionFillStyle.
+ stringColor := color negated ]
+ ifFalse: [ stringColor := color ].
- ifTrue: [aCanvas fillRectangle: self bounds fillStyle: self selectionFillStyle.
- stringColor := color negated]
- ifFalse: [stringColor := color].
  stringBounds := bounds.
+ self hasIcon ifTrue: [
+ | iconForm |
+ iconForm := self iconForm.
+ aCanvas
+ translucentImage: iconForm
+ at: stringBounds left @ (self top + (self height - iconForm height // 2)).
+ stringBounds := stringBounds left: stringBounds left + iconForm width + 2 ].
+ self hasMarker ifTrue: [
+ stringBounds := stringBounds left: stringBounds left + self submorphBounds width + 8 ].
- self isInDockingBar
- ifTrue: [stringBounds := stringBounds left: stringBounds left
- + (Preferences tinyDisplay
- ifTrue: [1]
- ifFalse: [4])].
- self hasIcon
- ifTrue: [| iconForm |
- iconForm := self iconForm.
- aCanvas translucentImage: iconForm at: stringBounds left @ (self top + (self height - iconForm height // 2)).
- stringBounds := stringBounds left: stringBounds left + iconForm width + 2].
- self hasMarker
- ifTrue: [stringBounds := stringBounds left: stringBounds left + self submorphBounds width + 8].
  stringBounds := stringBounds top: stringBounds top + stringBounds bottom - self fontToUse height // 2.
  aCanvas
  drawString: contents
  in: stringBounds
  font: self fontToUse
  color: stringColor.
  self hasSubMenu
  ifTrue: [| subMenuMarker subMenuMarkerPosition |
  subMenuMarker := self subMenuMarker.
  subMenuMarkerPosition := self right - subMenuMarker width @ (self top + self bottom - subMenuMarker height // 2).
+ aCanvas paintImage: subMenuMarker at: subMenuMarkerPosition ]!
- self isInDockingBar
- ifTrue: [subMenuMarkerPosition := subMenuMarkerPosition - (4 @ -1)].
- aCanvas paintImage: subMenuMarker at: subMenuMarkerPosition]!

Item was changed:
  ----- Method: TheWorldMainDockingBar class>>showWorldMainDockingBar: (in category 'preferences') -----
  showWorldMainDockingBar: aBoolean
 
  Project current showWorldMainDockingBar: aBoolean!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>changeSoundVolume (in category 'menu actions') -----
+ changeSoundVolume
+ self notYetImplemented!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>volumeIcon (in category 'private - icons') -----
+ volumeIcon
+ ^ Preferences tinyDisplay
+ ifTrue: [MenuIcons smallVolumeIcon]
+ ifFalse: [MenuIcons volumeIcon]!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>publishProject (in category 'menu actions') -----
+ publishProject
+ self
+ publishStyle: #limitedSuperSwikiPublishDirectoryList
+ forgetURL: false
+ withRename: false!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>nextProject (in category 'menu actions') -----
+ nextProject
+ Project advanceToNextProject.
+ Beeper beep!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>updateMenuItem (in category 'submenu - squeak') -----
+ updateMenuItem
+
+ ^{ 'Update Squeak'.
+ 'Load latest code updates via the internet'.
+ nil.
+ [ Utilities updateFromServer ] }!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>appearance (in category 'menu actions') -----
+ appearance
+ self worldMenu appearanceMenu popUpInWorld !

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>windows (in category 'menu actions') -----
+ windows
+ self worldMenu windowsMenu popUpInWorld!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>switchToExpertMode (in category 'menu actions') -----
+ switchToExpertMode
+ | ok |
+ ok := self confirm: 'CAUTION!!
+ The expert mode is powerful as well as dangerous and you can break your Squeak in several ways.
+ Are you sure to switch to expert mode?' translated.
+ ok
+ ifFalse: [^ self].
+ ""
+ Preferences enable: #cmdGesturesEnabled.
+ Preferences enable: #debugHaloHandle.
+ Preferences disable: #noviceMode.
+ !

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>createButtonIcon:selector: (in category 'private - buttons') -----
+ createButtonIcon: aFormOrMorph selector: selector
+ "Private - Creates a button to fire an action from a docking bar"
+ ^ self
+ createButtonIcon: aFormOrMorph
+ help: nil
+ selector: selector!

Item was added:
+ ----- Method: MenuIcons class>>squeakLogoIcon (in category 'accessing - icons') -----
+ squeakLogoIcon
+ ^ Icons
+ at: #squeakLogoIcon ifAbsentPut: [(Form
+ extent: 24@16
+ depth: 32
+ fromArray: #( 16777215 16777215 67108864 2063597568 1778384896 889192448 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 1610612736 1811939328 1610612736 16777215 16777215 16777215 16777215 16777215 905969664 889192448 16777215 1442840576 788529152 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 1711276032 469762048 16777215 1728053248 16777215 16777215 16777215 16777215 16777215 1006632960 704643072 16777215 16777215 1895825408 234881024 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 1207959552 838860800 16777215 16777215 1728053248 16777215 16777215 16777215 16777215 16777215 738197504 989855744 16777215 16777215 167772160 1862270976 16777215 16777215 16777215 16777215 16777215 16777215 16777215 83886080 1879048192 16777215 16777215 16777215 1744830464 16777215 16777215 16777215 16777215 16777215 469762048 1258291200 16777215 16777215 16777215 1543503872 520093696 16777215 16777215 16777215 16777215 16777215 16777215 1543503872 335544320 16777215 16777215 16777215 1761607680 16777215 16777215 16777215 16777215 16777215 16777216 1644167168 16777215 16777215 16777215 33554432 67108864 16777215 16777215 16777215 16777215 16777215 16777215 33554432 16777215 16777215 16777215 16777215 1795162112 16777215 16777215 16777215 16777215 16777215 16777215 1711276032 16777215 16777215 16777215 16777215 16777215 117440512 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 100663296 1677721600 16777215 16777215 16777215 16777215 16777215 16777215 1744830464 16777215 16777215 16777215 16777215 3019898880 4009754624 1056964608 16777215 16777215 1090519040 3204448256 1325400064 16777215 16777215 16777215 889192448 889192448 16777215 16777215 16777215 16777215 16777215 16777215 1392508928 352321536 16777215 16777215 637534208 4278190080 4278190080 2650800128 16777215 16777215 3372220416 4278190080 3758096384 16777215 16777215 16777215 1560281088 117440512 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 134217728 4060086272 4278190080 1929379840 16777215 16777215 3187671040 4278190080 3590324224 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 704643072 1577058304 83886080 16777215 16777215 771751936 2667577344 956301312 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 369098752 973078528 1577058304 1728053248 1711276032 1325400064 805306368 218103808 16777215 858262026 925501705 16777216 16777215 268435456 788529152 1308622848 1593835520 1056964608 436207616 16777216 16777215 16777215 1442840576 1761607680 1409286144 788529152 301989888 872415232 1124073472 1627389952 1929379840 973078528 2032667403 4280814347 4280814347 2166885388 1040187392 1946157056 1577058304 939524096 452984832 687865856 1325400064 1778384896 1795162112 1392508928 16777215 16777215 855638016 1795162112 1677721600 855638016 620756992 436207616 486539264 285212672 2032667403 4280814347 4280814347 2166885388 486539264 1023410176 922746880 1157627904 1392508928 1845493760 1744830464 486539264 16777215 16777215 201326592 2013265920 1006632960 16777215 553648128 1694498816 1778384896 1694498816 1728053248 738197504 16777215 858262026 925501705 16777216 738197504 1728053248 1744830464 1778384896 1476395008 251658240 117440512 1476395008 1879048192 150994944 16777215 16777216 16777215 486539264 1426063360 16777216 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 234881024 1728053248 486539264 16777215 167772160 50331648)
+ offset: 0@0)]!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>setColorTheme (in category 'menu actions') -----
+ setColorTheme
+ SmallLandColorTheme chooseTheme.  !

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>showAllViewers (in category 'menu actions') -----
+ showAllViewers
+ self world showAllPlayers!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>fillMenuItemsBar: (in category 'construction') -----
+ fillMenuItemsBar: aDockingBar
+ "Private - fill the given docking bar"
+ | squeakIcon homeIcon configurationIcon helpIcon squeakLabel projectLabel configurationLabel helpLabel |
+ (aDockingBar isDockingBar not
+ or: [Preferences tinyDisplay])
+ ifTrue: [""
+ squeakIcon := MenuIcons smallSqueakIcon.
+ homeIcon := MenuIcons smallHomeIcon.
+ configurationIcon := MenuIcons smallConfigurationIcon.
+ helpIcon := MenuIcons smallHelpIcon]
+ ifFalse: [""
+ squeakIcon := MenuIcons squeakIcon.
+ homeIcon := MenuIcons homeIcon.
+ configurationIcon := MenuIcons configurationIcon.
+ helpIcon := MenuIcons helpIcon].
+ ""
+ Preferences tinyDisplay
+ ifTrue: [""
+ squeakLabel := '' .
+ projectLabel := '' .
+ configurationLabel := '' .
+ helpLabel := '' ]
+ ifFalse: [""
+ squeakLabel := 'Squeak' translated.
+ projectLabel := 'Project' translated.
+ configurationLabel := 'Configuration' translated.
+ helpLabel := 'Help' translated].
+ ""
+ aDockingBar
+ add: squeakLabel
+ icon: squeakIcon
+ help: 'Options related to Squeak as a whole' translated
+ subMenu: self squeakMenu.
+ aDockingBar
+ add: projectLabel
+ icon: homeIcon
+ help: 'Options to open things in the current project or to navigate between projects' translated
+ subMenu: self projectMenu.
+ aDockingBar
+ add: configurationLabel
+ icon: configurationIcon
+ help: 'Options to configure Squeak' translated
+ subMenu: self configurationMenu.
+ aDockingBar
+ add: helpLabel
+ icon: helpIcon
+ help: 'Helpful options or options to get help' translated
+ subMenu: self helpMenu!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>newProjectMenuItem (in category 'submenu - projects') -----
+ newProjectMenuItem
+
+ ^{ 'New Project'.
+ 'Start a new project'.
+ MenuIcons smallProjectIcon.
+ [ MorphicProject openViewOn: nil ] }!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>forwardIcon (in category 'private - icons') -----
+ forwardIcon
+ ^ Preferences tinyDisplay
+ ifTrue: [MenuIcons smallForwardIcon]
+ ifFalse: [MenuIcons forwardIcon]!

Item was changed:
  ----- Method: TheWorldMainDockingBar>>createDockingBar (in category 'construction') -----
  createDockingBar
  "Create a docking bar from the receiver's representation"
+
  | dockingBar |
+ dockingBar := DockingBarMorph new
+ adhereToTop;
+ color: Preferences menuColor;
+ gradientRamp: self gradientRamp;
+ autoGradient: ColorTheme current dockingBarAutoGradient.
- dockingBar := DockingBarMorph new.
- dockingBar adhereToTop.
- dockingBar color: ColorTheme current dockingBarColor.
- dockingBar gradientRamp: ColorTheme current  dockingBarGradientRamp.
- dockingBar autoGradient: ColorTheme current dockingBarAutoGradient.
- ""
  self fillDockingBar: dockingBar.
- ""
  ^ dockingBar!

Item was added:
+ ----- Method: DockingBarItemMorph>>wantsRoundedCorners (in category 'rounding') -----
+ wantsRoundedCorners
+
+ ^false!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>objectsIcon (in category 'private - icons') -----
+ objectsIcon
+ ^ Preferences tinyDisplay
+ ifTrue: [MenuIcons smallObjectsIcon]
+ ifFalse: [MenuIcons objectsIcon]!

Item was added:
+ MenuItemMorph subclass: #DockingBarItemMorph
+ instanceVariableNames: 'selectedIcon'
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Morphic-Menus'!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>clearTurtleTrails (in category 'menu actions') -----
+ clearTurtleTrails
+ self world clearTurtleTrails!

Item was added:
+ ----- Method: DockingBarItemMorph>>mouseEnter: (in category 'events') -----
+ mouseEnter: evt
+ "The mouse entered the receiver"
+
+ super mouseEnter: evt.
+ (owner selectedItem notNil and: [ owner selectedItem ~~ self ]) ifTrue: [
+ owner selectItem: self event: evt. ]!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>paintIcon (in category 'private - icons') -----
+ paintIcon
+ ^ Preferences tinyDisplay
+ ifTrue: [MenuIcons smallPaintIcon]
+ ifFalse: [MenuIcons paintIcon]!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>about (in category 'menu actions') -----
+ about
+
+ !

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>createDockingBar (in category 'construction') -----
+ createDockingBar
+ "Create a docking bar from the receiver's representation"
+ | dockingBar |
+ dockingBar := DockingBarMorph new.
+ dockingBar adhereToTop.
+ dockingBar color: ColorTheme current dockingBarColor.
+ dockingBar gradientRamp: ColorTheme current  dockingBarGradientRamp.
+ dockingBar autoGradient: ColorTheme current dockingBarAutoGradient.
+ ""
+ self fillDockingBar: dockingBar.
+ ""
+ ^ dockingBar!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>hideAllViewers (in category 'menu actions') -----
+ hideAllViewers
+ self hideAllViewersIn: self world!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>findAnyFile (in category 'menu actions') -----
+ findAnyFile
+ FileList2 morphicViewGeneralLoaderInWorld: self world!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>saveAsNewVersionMenuItem (in category 'submenu - squeak') -----
+ saveAsNewVersionMenuItem
+
+ ^{ 'Save As New Version'.
+ 'Save the current state of Squeak on disk under a version-stamped name'.
+ MenuIcons smallSaveAsIcon.
+ [ SmalltalkImage current saveAsNewVersion ] }!

Item was changed:
  ----- Method: TheWorldMainDockingBar class>>initialize (in category 'class initialization') -----
  initialize
+ " self initialize "
 
  SystemChangeNotifier uniqueInstance noMoreNotificationsFor: self.
  SystemChangeNotifier uniqueInstance
  notify: self
  ofSystemChangesOfItem: #method
  using: #updateInstances:.
 
  Locale addLocalChangedListener: self.
  self setTimeStamp!

Item was added:
+ ----- Method: DockingBarItemMorph>>minWidth (in category 'layout') -----
+ minWidth
+
+ | iconWidth |
+ iconWidth := self hasIcon
+ ifTrue: [ self icon width + 2 ]
+ ifFalse: [ 0 ].
+ ^ (self fontToUse widthOfString: contents) + iconWidth + (2 * self stringMargin)!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>exitFromFullScreen (in category 'menu actions') -----
+ exitFromFullScreen
+ self toggleFullScreen!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>saveAsNewVersionMenuItem (in category 'construction - submenus') -----
+ saveAsNewVersionMenuItem
+
+ ^{ 'Save As New Version'.
+ 'Save the current state of Squeak on disk under a version-stamped name'.
+ MenuIcons smallSaveAsIcon.
+ #saveAsNewVersion }!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>viewObjectsHierarchy (in category 'menu actions') -----
+ viewObjectsHierarchy
+ "self world findWindow: nil"
+ MorphHierarchy openOrDelete!

Item was added:
+ ----- Method: DockingBarItemMorph>>stringMargin (in category 'layout') -----
+ stringMargin
+
+ ^Preferences tinyDisplay
+ ifTrue: [ 1 ]
+ ifFalse: [ 6 ]!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>squeakLogoIcon (in category 'private - icons') -----
+ squeakLogoIcon
+
+ ^MenuIcons squeakLogoIcon!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>openIcon (in category 'private - icons') -----
+ openIcon
+ ^ Preferences tinyDisplay
+ ifTrue: [MenuIcons smallOpenIcon]
+ ifFalse: [MenuIcons openIcon]!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>workspaceMenuItem (in category 'submenu - tools') -----
+ workspaceMenuItem
+
+ ^{ 'Workspace'.
+ 'Open a workspace'.
+ self colorIcon: Preferences workspaceWindowColor.
+ [ StandardToolSet openWorkspace ] }!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>jumpIcon (in category 'private - icons') -----
+ jumpIcon
+ ^ Preferences tinyDisplay
+ ifTrue: [MenuIcons smallJumpIcon]
+ ifFalse: [MenuIcons jumpIcon]!

Item was added:
+ ----- Method: DockingBarItemMorph>>mouseDown: (in category 'events') -----
+ mouseDown: evt
+ "Handle a mouse down event. Menu items get activated when the mouse is over them."
+
+ evt shiftPressed ifTrue: [ ^super mouseDown: evt ].  "enable label editing"
+ isSelected
+ ifTrue: [
+ evt hand newMouseFocus: nil.
+ owner selectItem: nil event: evt. ]
+ ifFalse: [
+ evt hand newMouseFocus: owner. "Redirect to menu for valid transitions"
+ owner selectItem: self event: evt. ]
+ !

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>projectMenu (in category 'construction - submenus') -----
+ projectMenu
+ | menu |
+ menu := MenuMorph new defaultTarget: self.
+ ""
+ Preferences noviceMode
+ ifFalse: [""
+ self createMenuItem: {'open...'. nil. MenuIcons smallOpenIcon} on: menu.
+ self createMenuItem: {'windows...'. nil. MenuIcons smallWindowIcon} on: menu.
+ menu addLine].
+ ""
+ self createMenuItem: {'previous project'. 'Return to the most recently visited project'. MenuIcons smallBackIcon} on: menu.
+ self createMenuItem: {'jump to project...'. 'Put up a list of all projects, letting me choose one to go to'. MenuIcons smallJumpIcon} on: menu.
+ self createMenuItem: {'next project'. 'Go to next project'. MenuIcons smallForwardIcon} on: menu.
+ menu addLine.
+ self createMenuItem: {'find any file'. 'Import a file into Squeak'. MenuIcons smallOpenIcon} on: menu.
+ self createMenuItem: {'find a project'. 'Open a project into Squeak'. MenuIcons smallLoadProjectIcon} on: menu.
+ menu addLine.
+ self createMenuItem: {'new project'. 'Start a new project'. MenuIcons smallProjectIcon} on: menu.
+ self createMenuItem: {'make new drawing'. 'Make a painting'. MenuIcons smallPaintIcon} on: menu.
+ self createMenuItem: {'object catalog (o)'. 'A tool for finding and obtaining many kinds of objects'. MenuIcons smallObjectCatalogIcon} on: menu.
+ menu addLine.
+ self createMenuItem: {'object from paste buffer'. 'Create a new object from paste buffer'. MenuIcons smallPasteIcon} on: menu.
+ Preferences useUndo
+ ifTrue: [""
+ Preferences infiniteUndo
+ ifTrue: [""
+ menu
+ addUpdating: #undoMenuWording
+ target: self commandHistory
+ action: #undoLastCommand.
+ menu
+ addUpdating: #redoMenuWording
+ target: self commandHistory
+ action: #redoNextCommand]
+ ifFalse: [""
+ menu
+ addUpdating: #undoOrRedoMenuWording
+ target: self commandHistory
+ action: #undoOrRedoCommand]].
+ menu addLine.
+ self createMenuItem: {'view objects hierarchy'. 'A tool for discovering the objects and the relations between them'. MenuIcons smallObjectsIcon} on: menu.
+ menu addLine.
+ self createMenuItem: {'publish project'. 'Publish the current project'. MenuIcons smallPublishIcon} on: menu.
+ ""
+ ^ menu!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>jumpToProject (in category 'menu actions') -----
+ jumpToProject
+ Project jumpToProject!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>saveAndQuit (in category 'menu actions') -----
+ saveAndQuit
+ SmalltalkImage current snapshot: true andQuit: true!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>projectIcon (in category 'private - icons') -----
+ projectIcon
+ ^ Preferences tinyDisplay
+ ifTrue: [MenuIcons smallProjectIcon]
+ ifFalse: [MenuIcons projectIcon]!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>viewSelectedObject (in category 'menu actions') -----
+ viewSelectedObject
+ | selected menu |
+ selected := self world selectedObject.
+ selected isNil
+ ifTrue: [^ self viewObjectsHierarchy].
+ ""
+ menu := selected buildYellowButtonMenu: ActiveHand.
+ menu
+ addTitle: selected externalName
+ icon: (selected iconOrThumbnailOfSize: (Preferences tinyDisplay ifTrue: [16] ifFalse: [28])).
+ menu popUpInWorld: selected currentWorld!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>setWorldColor (in category 'menu actions') -----
+ setWorldColor
+ | world |
+ world := self world.
+ world
+ changeColorTarget: world
+ selector: #color:
+ originalColor: world color
+ hand: world activeHand!

Item was added:
+ ----- Method: DockingBarItemMorph>>selectedIcon: (in category 'as yet unclassified') -----
+ selectedIcon: aForm
+
+ selectedIcon := aForm!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>findAProject (in category 'menu actions') -----
+ findAProject
+ FileList2
+ morphicViewProjectLoader2InWorld: self world
+ reallyLoad: true
+ dirFilterType: #limitedSuperSwikiDirectoryList!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>saveMenuItem (in category 'submenu - squeak') -----
+ saveMenuItem
+
+ ^{ 'Save Image'.
+ 'Save the current state of Squeak on disk'.
+ MenuIcons smallSaveIcon.
+ [ SmalltalkImage current snapshot: true andQuit: false ] }!

Item was changed:
  ----- Method: TheWorldMainDockingBar class>>localeChanged (in category 'as yet unclassified') -----
  localeChanged
  self updateInstances!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld class>>showWorldMainDockingBar: (in category 'preferences') -----
+ showWorldMainDockingBar: aBoolean
+
+ Project current showWorldMainDockingBar: aBoolean!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>purgeUndoRecords (in category 'menu actions') -----
+ purgeUndoRecords
+ CommandHistory resetAllHistory!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>previousProject (in category 'menu actions') -----
+ previousProject
+
+ Project returnToPreviousProject.
+ CurrentProjectRefactoring exitCurrentProject. "go to parent if no previous"
+ Beeper beep.!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld class>>localeChanged (in category 'as yet unclassified') -----
+ localeChanged
+ self updateInstances!

Item was added:
+ ----- Method: DockingBarItemMorph>>updateLayoutInDockingBar (in category 'private') -----
+ updateLayoutInDockingBar
+
+ owner isVertical
+ ifTrue: [
+ self hResizing: #spaceFill.
+ self vResizing: #shrinkWrap ]
+ ifFalse: [
+ self hResizing: #shrinkWrap.
+ self vResizing: #spaceFill ].
+ self extent: self minWidth @ self minHeight!

Item was changed:
  ----- Method: TheWorldMainDockingBar>>createMenuItem:on: (in category 'private') -----
+ createMenuItem: selector on: menu
+
+ | item wording help icon action |
+ selector first = $=
+ ifTrue: [ ^menu addLine ]
+ ifFalse: [ item := self perform: (selector, 'MenuItem') asSymbol ].
+ wording := item first.
+ help := item second.
+ icon := item third.
+ action := item fourth.
+ action isSymbol
+ ifTrue: [
- createMenuItem: triplet on: menu
- | wording help selectorOrMenu |
- wording := triplet first.
- help := triplet second.
- selectorOrMenu := triplet size > 3
- ifTrue: [triplet fourth]
- ifFalse: [self selectorForWording: wording].
- ""
- selectorOrMenu isSymbol
- ifTrue: [""
  menu
  add: wording translated
  target: self
+ selector: action ]
+ ifFalse: [
+ action isBlock
+ ifTrue: [
+ menu
+ add: wording translated
+ target: action
+ selector: #value ]
+ ifFalse: [
+ menu
+ add: wording translated
+ subMenu: action ] ].
+ help ifNotNil: [
+ menu lastItem setBalloonText: help translated ].
+ icon ifNotNil: [
+ Preferences tinyDisplay ifFalse: [
+ menu lastItem icon: icon ] ]!
- selector: selectorOrMenu]
- ifFalse: [menu add: wording translated subMenu: selectorOrMenu].
- ""
- help isNil
- ifFalse: [menu lastItem setBalloonText: help translated].""
- Preferences tinyDisplay
- ifFalse: [triplet size > 2
- ifTrue: [menu lastItem icon: triplet third]]!

Item was added:
+ ----- Method: MenuIcons class>>squeakLogoInvertedIcon (in category 'accessing - icons') -----
+ squeakLogoInvertedIcon
+ ^ Icons
+ at: #squeakLogoInvertedIcon ifAbsentPut: [(Form
+ extent: 24@16
+ depth: 32
+ fromArray: #( 16777215 16777215 83886079 2080374783 1795162111 905969663 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 1627389951 1828716543 1627389951 16777215 16777215 16777215 16777215 16777215 922746879 905969663 16777215 1459617791 805306367 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 1728053247 486539263 16777215 1744830463 16777215 16777215 16777215 16777215 16777215 1023410175 721420287 16777215 16777215 1912602623 251658239 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 1224736767 855638015 16777215 16777215 1744830463 16777215 16777215 16777215 16777215 16777215 754974719 1006632959 16777215 16777215 184549375 1879048191 16777215 16777215 16777215 16777215 16777215 16777215 16777215 100663295 1895825407 16777215 16777215 16777215 1761607679 16777215 16777215 16777215 16777215 16777215 486539263 1275068415 16777215 16777215 16777215 1560281087 536870911 16777215 16777215 16777215 16777215 16777215 16777215 1560281087 352321535 16777215 16777215 16777215 1778384895 16777215 16777215 16777215 16777215 16777215 33554431 1660944383 16777215 16777215 16777215 50331647 83886079 16777215 16777215 16777215 16777215 16777215 16777215 50331647 16777215 16777215 16777215 16777215 1811939327 16777215 16777215 16777215 16777215 16777215 16777215 1728053247 16777215 16777215 16777215 16777215 16777215 134217727 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 117440511 1694498815 16777215 16777215 16777215 16777215 16777215 16777215 1761607679 16777215 16777215 16777215 16777215 3036676095 4026531839 1073741823 16777215 16777215 1107296255 3221225471 1342177279 16777215 16777215 16777215 905969663 905969663 16777215 16777215 16777215 16777215 16777215 16777215 1409286143 369098751 16777215 16777215 654311423 4294967295 4294967295 2667577343 16777215 16777215 3388997631 4294967295 3774873599 16777215 16777215 16777215 1577058303 134217727 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 150994943 4076863487 4294967295 1946157055 16777215 16777215 3204448255 4294967295 3607101439 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 721420287 1593835519 100663295 16777215 16777215 788529151 2684354559 973078527 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 385875967 989855743 1593835519 1744830463 1728053247 1342177279 822083583 234881023 16777215 869791221 936769270 33554431 16777215 285212671 805306367 1325400063 1610612735 1073741823 452984831 33554431 16777215 16777215 1459617791 1778384895 1426063359 805306367 318767103 889192447 1140850687 1644167167 1946157055 989855743 2044196084 4292343028 4292343028 2178413555 1056964607 1962934271 1593835519 956301311 469762047 704643071 1342177279 1795162111 1811939327 1409286143 16777215 16777215 872415231 1811939327 1694498815 872415231 637534207 452984831 503316479 301989887 2044196084 4292343028 4292343028 2178413555 503316479 1040187391 939524095 1174405119 1409286143 1862270975 1761607679 503316479 16777215 16777215 218103807 2030043135 1023410175 16777215 570425343 1711276031 1795162111 1711276031 1744830463 754974719 16777215 869791221 936769270 33554431 754974719 1744830463 1761607679 1795162111 1493172223 268435455 134217727 1493172223 1895825407 167772159 16777215 33554431 16777215 503316479 1442840575 33554431 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 251658239 1744830463 503316479 16777215 184549375 67108863)
+ offset: 0@0)]!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>importFile (in category 'menu actions') -----
+ importFile
+ self findAnyFile!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>saveAndQuitMenuItem (in category 'submenu - squeak') -----
+ saveAndQuitMenuItem
+
+ ^{ 'Save And Quit'.
+ 'Save the current state of Squeak on disk, and quit out of Squeak'.
+ MenuIcons smallQuitIcon.
+ [ SmalltalkImage current snapshot: true andQuit: true ] }!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>fileListMenuItem (in category 'submenu - tools') -----
+ fileListMenuItem
+
+ ^{ 'File List'.
+ 'Open a file list'.
+ self colorIcon: Preferences fileListWindowColor.
+ [ StandardToolSet openFileList ] }!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>gradientRamp (in category 'private') -----
+ gradientRamp
+
+ ^{
+ 0.0 -> Color white.
+ 1.0 -> Preferences menuColor darker }!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>publishIcon (in category 'private - icons') -----
+ publishIcon
+ ^ Preferences tinyDisplay
+ ifTrue: [MenuIcons smallPublishIcon]
+ ifFalse: [MenuIcons publishIcon]!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>monticelloBrowserMenuItem (in category 'submenu - tools') -----
+ monticelloBrowserMenuItem
+
+ ^{ 'Monticello Browser'.
+ 'Open a Monticello Browser'.
+ self colorIcon: MCTool basicNew defaultBackgroundColor.
+ [ MCWorkingCopyBrowser open ] }!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>quitMenuItem (in category 'submenu - squeak') -----
+ quitMenuItem
+
+ ^{ 'Quit'.
+ 'Quit out of Squeak'.
+ MenuIcons smallQuitIcon.
+ [ SmalltalkImage current
+ snapshot: (
+ self
+ confirm: 'Save changes before quitting?' translated
+ orCancel: [ ^self ])
+ andQuit: true ] }!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>openDockingBar (in category 'construction') -----
+ openDockingBar
+ ^ self createDockingBar openInWorld !

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>objectFromPasteBuffer (in category 'menu actions') -----
+ objectFromPasteBuffer
+ ActiveHand pasteMorph!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>createMenuItem:on: (in category 'private') -----
+ createMenuItem: triplet on: menu
+ | wording help selectorOrMenu |
+ wording := triplet first.
+ help := triplet second.
+ selectorOrMenu := triplet size > 3
+ ifTrue: [triplet fourth]
+ ifFalse: [self selectorForWording: wording].
+ ""
+ selectorOrMenu isSymbol
+ ifTrue: [""
+ menu
+ add: wording translated
+ target: self
+ selector: selectorOrMenu]
+ ifFalse: [menu add: wording translated subMenu: selectorOrMenu].
+ ""
+ help isNil
+ ifFalse: [menu lastItem setBalloonText: help translated].""
+ Preferences tinyDisplay
+ ifFalse: [triplet size > 2
+ ifTrue: [menu lastItem icon: triplet third]]!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>saveAndQuitMenuItem (in category 'construction - submenus') -----
+ saveAndQuitMenuItem
+
+ ^{ 'Save And Quit'.
+ 'Save the current state of Squeak on disk, and quit out of Squeak'.
+ MenuIcons smallQuitIcon.
+ #saveAndQuit }!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>objectCatalog (in category 'menu actions') -----
+ objectCatalog
+ self activateObjectsTool!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>setLanguage (in category 'menu actions') -----
+ setLanguage
+ Project current chooseNaturalLanguage !

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>gradientRamp (in category 'construction') -----
+ gradientRamp
+
+ ^{
+ 0.0 -> Color white.
+ 1.0 -> Preferences menuColor }!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>publishStyle:forgetURL:withRename: (in category 'menu actions') -----
+ publishStyle: aSymbol forgetURL: aBoolean withRename: renameBoolean
+
+ | w primaryServer rename |
+
+ w := self world ifNil: [^Beeper beep].
+ w setProperty: #SuperSwikiPublishOptions toValue: aSymbol.
+
+ primaryServer := w project primaryServerIfNil: [nil].
+ rename := ((primaryServer notNil
+ and: [primaryServer acceptsUploads]) not)
+ or: [renameBoolean].
+ w setProperty: #SuperSwikiRename toValue: rename.
+
+ w project
+ storeOnServerShowProgressOn: self
+ forgetURL: aBoolean | rename.
+ !

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>quitMenuItem (in category 'construction - submenus') -----
+ quitMenuItem
+
+ ^{ 'Quit'.
+ 'Quit out of Squeak'.
+ MenuIcons smallQuitIcon.
+ #quit }!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>switchToNoviceMode (in category 'menu actions') -----
+ switchToNoviceMode
+ Preferences disable: #cmdGesturesEnabled.
+ Preferences disable: #debugHaloHandle.
+ Preferences enable: #noviceMode.
+ !

Item was changed:
  ----- Method: MenuItemMorph>>minWidth (in category 'layout') -----
  minWidth
+
+ | subMenuWidth iconWidth markerWidth |
- | subMenuWidth iconWidth markerWidth margin |
  subMenuWidth := self hasSubMenu
+ ifTrue: [ 10 ]
+ ifFalse: [ 0 ].
- ifTrue: [10]
- ifFalse: [0].
  iconWidth := self hasIcon
+ ifTrue: [ self icon width + 2 ]
+ ifFalse: [ 0 ].
- ifTrue: [self icon width + 2]
- ifFalse: [0].
  markerWidth := self hasMarker
+ ifTrue: [ self submorphBounds width + 8 ]
+ ifFalse: [ 0 ].
+ ^(self fontToUse widthOfString: contents)
+ + subMenuWidth + iconWidth + markerWidth!
- ifTrue: [self submorphBounds width + 8]
- ifFalse: [0].
- margin := (self isInDockingBar)
- ifTrue: [Preferences tinyDisplay ifFalse:[10] ifTrue:[4]]
- ifFalse: [0].
- ^ (self fontToUse widthOfString: contents)
- + subMenuWidth + iconWidth + markerWidth + margin!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>aboutMenuItem (in category 'submenu - squeak') -----
+ aboutMenuItem
+
+ ^{ 'About Squeak...'.
+ nil.
+ nil.
+ [ ] }!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>preferences (in category 'menu actions') -----
+ preferences
+ PreferenceBrowser open!

Item was changed:
+ ----- Method: TheWorldMainDockingBar>>squeakMenu (in category 'construction') -----
- ----- Method: TheWorldMainDockingBar>>squeakMenu (in category 'construction - submenus') -----
  squeakMenu
+
+ ^#(
+ 'about'
+ 'update'
+ '==='
+ 'save'
+ 'saveAs'
+ 'saveAsNewVersion'
+ '==='
+ 'saveAndQuit'
+ 'quit')!
- | menu |
- menu := MenuMorph new defaultTarget: self.
- ""
- "
- menu add: 'configuration...' translated subMenu: self  
- configurationMenu. menu lastItem icon: MenuIcons  
- smallConfigurationIcon. menu addLine.  
- "
- Preferences readOnlyMode ifFalse:[""
- self createMenuItem: {'save'. 'Save the current state of Squeak on disk'. MenuIcons smallSaveIcon} on: menu.
- self createMenuItem: {'save as...'. 'Save the current state of Squeak on disk under a new name'. MenuIcons smallSaveAsIcon} on: menu.
- Preferences noviceMode
- ifFalse: [""
- self createMenuItem: {'save as new version'. 'Save the current state of Squeak on disk under a version-stamped name'. MenuIcons smallSaveAsIcon} on: menu].
- menu addLine.
- self createMenuItem: {'save and quit'. 'Save the current state of Squeak on disk, and quit out of Squeak'. MenuIcons smallQuitIcon} on: menu].
- self createMenuItem: {'quit'. 'Quit out of Squeak'. MenuIcons smallQuitIcon} on: menu.
- ""
- ^ menu!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>selectorForWording: (in category 'private') -----
+ selectorForWording: aString
+ "Private - Create a valid smalltalk selector from an english  
+ wording.  
+ 'foo' -> #foo  
+ 'foo....' -> #foo  
+ 'foo bar' -> #fooBar  
+ 'foo bar (f)' - #fooBar  
+ "
+ | words selector temp |
+ temp := aString.
+ ('*(*)*' match: temp)
+ ifTrue: [| pre post |
+ pre := temp copyUpTo: $(.
+ post := temp copyAfterLast: $).
+ temp := pre , post].
+ ""
+ temp := temp
+ collect: [:each | ""
+ each isLetter
+ ifTrue: [each]
+ ifFalse: [Character space]].
+ words := temp subStrings: Character separators.
+ selector := String
+ streamContents: [:stream | ""
+ words
+ do: [:word | stream nextPutAll: word capitalized]].
+ selector at: 1 put: selector first asLowercase.
+ ""
+ ^ selector asSymbol!

Item was changed:
  ----- Method: TheWorldMainDockingBar>>updateIfNeeded: (in category 'private') -----
  updateIfNeeded: aDockingBar
  "Update the given docking bar if needed"
  | timeStamp |
  timeStamp := aDockingBar
  valueOfProperty: #mainDockingBarTimeStamp
  ifAbsent: [^ self].
  timeStamp = self class timeStamp
  ifTrue: [^ self].
  ""
  aDockingBar removeAllMorphs.
  self fillDockingBar: aDockingBar!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>switchToFullScreen (in category 'menu actions') -----
+ switchToFullScreen
+ self toggleFullScreen!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>aboutMenuItem (in category 'construction - submenus') -----
+ aboutMenuItem
+
+ ^{ 'About Squeak...'.
+ nil.
+ nil.
+ #about }!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>quit (in category 'menu actions') -----
+ quit
+ Preferences readOnlyMode
+ ifTrue: [""(self confirm: 'REALLY quit Squeak?' translated)
+ ifTrue: [SmalltalkImage current snapshot: false andQuit: true]]
+ ifFalse: [| saveBeforeQuitting |
+ saveBeforeQuitting := self
+ confirm: 'Save changes before quitting?' translated
+ orCancel: [^ self].
+ SmalltalkImage current snapshot: saveBeforeQuitting andQuit: true]!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>squeakMenu (in category 'construction - submenus') -----
+ squeakMenu
+ | menu |
+ menu := MenuMorph new defaultTarget: self.
+ ""
+ "
+ menu add: 'configuration...' translated subMenu: self  
+ configurationMenu. menu lastItem icon: MenuIcons  
+ smallConfigurationIcon. menu addLine.  
+ "
+ Preferences readOnlyMode ifFalse:[""
+ self createMenuItem: {'save'. 'Save the current state of Squeak on disk'. MenuIcons smallSaveIcon} on: menu.
+ self createMenuItem: {'save as...'. 'Save the current state of Squeak on disk under a new name'. MenuIcons smallSaveAsIcon} on: menu.
+ Preferences noviceMode
+ ifFalse: [""
+ self createMenuItem: {'save as new version'. 'Save the current state of Squeak on disk under a version-stamped name'. MenuIcons smallSaveAsIcon} on: menu].
+ menu addLine.
+ self createMenuItem: {'save and quit'. 'Save the current state of Squeak on disk, and quit out of Squeak'. MenuIcons smallQuitIcon} on: menu].
+ self createMenuItem: {'quit'. 'Quit out of Squeak'. MenuIcons smallQuitIcon} on: menu.
+ ""
+ ^ menu!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>squeakLogoInvertedIcon (in category 'private - icons') -----
+ squeakLogoInvertedIcon
+
+ ^MenuIcons squeakLogoInvertedIcon!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>updateIfNeeded: (in category 'private') -----
+ updateIfNeeded: aDockingBar
+ "Update the given docking bar if needed"
+ | timeStamp |
+ timeStamp := aDockingBar
+ valueOfProperty: #mainDockingBarTimeStamp
+ ifAbsent: [^ self].
+ timeStamp = self class timeStamp
+ ifTrue: [^ self].
+ ""
+ aDockingBar removeAllMorphs.
+ self fillDockingBar: aDockingBar!

Item was changed:
  ----- Method: TheWorldMainDockingBar class>>showWorldMainDockingBar (in category 'preferences') -----
  showWorldMainDockingBar
 
  <preference: 'Show world main docking bar'
  category: 'docking bars'
  description: 'Whether world''s main docking bar should be shown or not.'
  type: #Boolean>
  ^Project current showWorldMainDockingBar!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>worldMenu (in category 'private') -----
+ worldMenu
+ ^ TheWorldMenu new
+ world: self world
+ project: Project current
+ hand: self world activeHand; yourself!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>colorOffEvent:for: (in category 'private - buttons') -----
+ colorOffEvent: anEvent for: aMorph
+ "Private - gives an off-color to the given morph"
+ aMorph color: self offColor!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld class>>initialize (in category 'class initialization') -----
+ initialize
+ "Initialize the receiver"
+ Preferences
+ addPreference: #showWorldMainDockingBar
+ categories: #(#'docking bars' )
+ default: true
+ balloonHelp: 'Whether world''s main docking bar should be shown or not.'
+ projectLocal: true
+ changeInformee: TheWorldMainDockingBar
+ changeSelector: #showWorldMainDockingBarPreferenceChanged.
+ ""
+ SystemChangeNotifier uniqueInstance noMoreNotificationsFor: self.
+ SystemChangeNotifier uniqueInstance
+ notify: self
+ ofSystemChangesOfItem: #method
+ using: #updateInstances:.
+ ""
+ Locale addLocalChangedListener: self.
+ self setTimeStamp!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>browserMenuItem (in category 'submenu - tools') -----
+ browserMenuItem
+
+ ^{ 'Browser'.
+ 'Open a browser'.
+ self colorIcon: Preferences browserWindowColor.
+ [ StandardToolSet openClassBrowser ] }!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>fullScreenIcon (in category 'private - icons') -----
+ fullScreenIcon
+ ^ Preferences tinyDisplay
+ ifTrue: [MenuIcons smallFullScreenIcon]
+ ifFalse: [MenuIcons fullScreenIcon]!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>save (in category 'menu actions') -----
+ save
+ SmalltalkImage current snapshot: true andQuit: false!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>saveProjectMenuItem (in category 'submenu - projects') -----
+ saveProjectMenuItem
+
+ ^{ 'Save Project'.
+ 'Save this project on a file'.
+ MenuIcons smallPublishIcon.
+ [ World saveOnFile ] }!

Item was changed:
  ----- Method: MenuItemMorph>>mouseDown: (in category 'events') -----
  mouseDown: evt
  "Handle a mouse down event. Menu items get activated when the mouse is over them."
 
+ evt shiftPressed ifTrue: [ ^super mouseDown: evt ].  "enable label editing"
+ evt hand newMouseFocus: owner. "Redirect to menu for valid transitions"
+ owner selectItem: self event: evt!
- evt shiftPressed ifTrue: [^ super mouseDown: evt].  "enable label editing"
-
- (self isInDockingBar
- and:[isSelected]
- "and:[owner selectedItem == self]")
- ifTrue:[
- evt hand newMouseFocus: nil.
- owner selectItem: nil event: evt. ]
- ifFalse:[
- evt hand newMouseFocus: owner. "Redirect to menu for valid transitions"
- owner selectItem: self event: evt. ]
- !

Item was added:
+ ----- Method: TheWorldMainDockingBarOld class>>showWorldMainDockingBar (in category 'preferences') -----
+ showWorldMainDockingBar
+
+ <preference: 'Show world main docking bar'
+ category: 'docking bars'
+ description: 'Whether world''s main docking bar should be shown or not.'
+ type: #Boolean>
+ ^Project current showWorldMainDockingBar!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>showWorldMainDockingBarString (in category 'menu actions') -----
+ showWorldMainDockingBarString
+ ^ self world showWorldMainDockingBarString!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>helpMenu (in category 'construction - submenus') -----
+ helpMenu
+ | menu |
+ menu := MenuMorph new defaultTarget: self.
+ ""
+ self createMenuItem: {'move objects onscreen'. 'Bring back all objects whose current coordinates keep them from being visible, so that at least a portion of each of my interior objects can be seen'} on: menu.
+ self createMenuItem: {'unhide hidden objects'. 'If any items on the world are currently hidden, make them visible'} on: menu.
+ menu addLine.
+ self createMenuItem: {'show all viewers'. 'Make visible the viewers for all objects which have user-written scripts in this playfield'} on: menu.
+ self createMenuItem: {'hide all viewers'. 'Make invisible the viewers for all objects in the world'} on: menu.
+ menu addLine.
+ self createMenuItem: {'clear turtle trails'. 'Remove any pigment laid down on the desktop by objects moving with their pens down'} on: menu.
+ "
+ menu addLine.
+ self createMenuItem: {'eToy vocabulary summary'. 'Displays a summary of all the pre-defined commands and properties in the pre-defined eToy vocabulary'} on: menu.
+ "
+ ""
+ ^ menu!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>backIcon (in category 'private - icons') -----
+ backIcon
+ ^ Preferences tinyDisplay
+ ifTrue: [MenuIcons smallBackIcon]
+ ifFalse: [MenuIcons backIcon]!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>perform:event:for: (in category 'private - buttons') -----
+ perform: selectorSymbol event: anEvent for: aMorph
+ "Private - perform the given selector"
+ aMorph color: self offColor.
+ self perform: selectorSymbol!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>projectsMenu (in category 'construction') -----
+ projectsMenu
+
+ ^#( 'newProject'
+ 'saveProject'
+ 'loadProject'
+ 'jumpToProject')!

Item was added:
+ ----- Method: DockingBarItemMorph>>selectionFillStyle (in category 'private') -----
+ selectionFillStyle
+
+ | fill |
+ fill := super selectionFillStyle.
+ fill isColor ifTrue: [ ^fill ].
+ self owner isVertical
+ ifFalse: [ fill direction: 0 @ self height ]
+ ifTrue: [ fill direction: self width @ 0 ].
+ ^fill!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>objectCatalogIcon (in category 'private - icons') -----
+ objectCatalogIcon
+ ^ Preferences tinyDisplay
+ ifTrue: [MenuIcons smallObjectCatalogIcon]
+ ifFalse: [MenuIcons objectCatalogIcon]!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>newProject (in category 'menu actions') -----
+ newProject
+ MorphicProject openViewOn: nil!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>saveAs (in category 'menu actions') -----
+ saveAs
+ SmalltalkImage current saveAs!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>activateObjectsTool (in category 'menu actions') -----
+ activateObjectsTool
+ self world activateObjectsTool!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>toggleFullScreen (in category 'menu actions') -----
+ toggleFullScreen
+ ScreenController lastScreenModeSelected
+ ifTrue: [ScreenController new fullScreenOff]
+ ifFalse: [ScreenController new fullScreenOn].
+ self world positionSubmorphs.
+ self class updateInstances!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>toolsMenu (in category 'construction') -----
+ toolsMenu
+
+ ^#(
+ 'browser'
+ 'workspace'
+ 'transcript'
+ 'testRunner'
+ '==='
+ 'monticelloBrowser'
+ 'fileList')!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>eToyVocabularySummary (in category 'menu actions') -----
+ eToyVocabularySummary
+ Cursor wait
+ showWhile: [self world printVocabularySummary]!

Item was added:
+ ----- Method: DockingBarItemMorph>>adjacentTo (in category 'selecting') -----
+ adjacentTo
+
+ owner isFloating
+ ifTrue: [^ {self bounds bottomLeft + (5 @ 5)}].
+ owner isAdheringToTop
+ ifTrue: [^ {self bounds bottomLeft + (5 @ 5)}].
+ owner isAdheringToLeft
+ ifTrue: [^ {self bounds topRight + (5 @ 5)}].
+ owner isAdheringToBottom
+ ifTrue: [^ {self bounds topLeft + (5 @ 5)}].
+ owner isAdheringToRight
+ ifTrue: [^ {self bounds topLeft + (5 @ -5)}].
+ ^ {self bounds bottomLeft + (3 @ 5)}!

Item was changed:
  ----- Method: TheWorldMainDockingBar class>>setTimeStamp (in category 'timestamping') -----
  setTimeStamp
  "Change the receiver's timeStamp"
  TS := UUID new!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>colorIcon: (in category 'private') -----
+ colorIcon: aColor
+
+ Preferences tinyDisplay ifTrue: [ ^nil ].
+ ^(aColor iconOrThumbnailOfSize: 14)
+ borderWidth: 3 color: Preferences menuColor muchDarker;
+ borderWidth: 2 color: Color transparent!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>onColor (in category 'private - buttons') -----
+ onColor
+ "Private - answer the on color"
+ ^ (Preferences menuSelectionColor
+ ifNil: [Color blue])
+ alpha: 0.4!

Item was added:
+ Object subclass: #TheWorldMainDockingBarOld
+ instanceVariableNames: 'icons'
+ classVariableNames: 'Instance TS'
+ poolDictionaries: ''
+ category: 'Morphic-Kernel'!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>loadProjectIcon (in category 'private - icons') -----
+ loadProjectIcon
+ ^ Preferences tinyDisplay
+ ifTrue: [MenuIcons smallLoadProjectIcon]
+ ifFalse: [MenuIcons loadProjectIcon]!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>createSubmenuFrom: (in category 'private') -----
+ createSubmenuFrom: description
+
+ | menu |
+ menu := MenuMorph new defaultTarget: self.
+ description do: [ :each |
+ self createMenuItem: each on: menu ].
+ ^menu!

Item was changed:
  ----- Method: MenuItemMorph>>updateLayoutInDockingBar (in category 'private') -----
+ updateLayoutInDockingBar!
- updateLayoutInDockingBar
- self isInDockingBar
- ifFalse: [^ self].
- ""
- owner isVertical
- ifTrue: [""
- self hResizing: #spaceFill.
- self vResizing: #shrinkWrap]
- ifFalse: [""
- self hResizing: #shrinkWrap.
- self vResizing: #spaceFill].
- self extent: self minWidth @ self minHeight!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld class>>setTimeStamp (in category 'timestamping') -----
+ setTimeStamp
+ "Change the receiver's timeStamp"
+ TS := UUID new!

Item was added:
+ ----- Method: DockingBarItemMorph>>subMenuMarker (in category 'private') -----
+ subMenuMarker
+
+ self shouldNotImplement!

Item was added:
+ ----- Method: DockingBarItemMorph>>mouseUp: (in category 'events') -----
+ mouseUp: evt
+ "Handle a mouse up event. Menu items get activated when the mouse is over them. Do nothing if we're not in a 'valid menu transition', meaning that the current hand focus must be aimed at the owning menu."
+
+ evt hand mouseFocus == owner ifFalse: [ ^self ].
+ self contentString ifNotNil: [
+ self contents: self contentString withMarkers: true inverse: true.
+ self refreshWorld.
+ (Delay forMilliseconds: 200) wait ].
+ owner rootMenu selectItem: nil event: evt.
+ self invokeWithEvent: evt!

Item was added:
+ ----- Method: DockingBarItemMorph>>drawOn: (in category 'drawing') -----
+ drawOn: aCanvas
+ | stringColor stringBounds |
+ (isSelected and: [ isEnabled ])
+ ifTrue: [
+ aCanvas fillRectangle: self bounds fillStyle: self selectionFillStyle.
+ stringColor := color negated ]
+ ifFalse: [ stringColor := color ].
+ stringBounds := bounds.
+ stringBounds := stringBounds left: stringBounds left + self stringMargin.
+ self hasIcon ifTrue: [
+ | iconForm |
+ iconForm := self iconForm.
+ aCanvas
+ translucentImage: iconForm
+ at: stringBounds left @ (self top + (self height - iconForm height // 2)).
+ stringBounds := stringBounds left: stringBounds left + iconForm width + 2 ].
+ stringBounds := stringBounds top: stringBounds top + stringBounds bottom - self fontToUse height // 2.
+ aCanvas
+ drawString: contents
+ in: stringBounds
+ font: self fontToUse
+ color: stringColor!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>saveMenuItem (in category 'construction - submenus') -----
+ saveMenuItem
+
+ ^{ 'Save Image'.
+ 'Save the current state of Squeak on disk'.
+ MenuIcons smallSaveIcon.
+ #save }!

Item was changed:
  ----- Method: TheWorldMainDockingBar class>>new (in category 'instance creation') -----
  new
  "Singleton, use #instance"
  ^ self error: 'Use #instance'!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>loadProjectMenuItem (in category 'submenu - projects') -----
+ loadProjectMenuItem
+
+ ^{ 'Previous Project'.
+ 'Return to the most-recently-visited project'.
+ MenuIcons smallBackIcon.
+ [ World goBack ] }!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld class>>showWorldMainDockingBarPreferenceChanged (in category 'preferences') -----
+ showWorldMainDockingBarPreferenceChanged
+ "The preference #showWorldMainDockingBar has just  
+ changed"
+ Project current showWorldMainDockingBar:  Preferences showWorldMainDockingBar!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>toggleShowWorldMainDockingBar (in category 'menu actions') -----
+ toggleShowWorldMainDockingBar
+ self world toggleShowWorldMainDockingBar!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>saveAsMenuItem (in category 'submenu - squeak') -----
+ saveAsMenuItem
+
+ ^{ 'Save Image As...'.
+ 'Save the current state of Squeak on disk under a new name'.
+ MenuIcons smallSaveAsIcon.
+ [ SmalltalkImage current saveAs ] }!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld class>>new (in category 'instance creation') -----
+ new
+ "Singleton, use #instance"
+ ^ self error: 'Use #instance'!

Item was changed:
  ----- Method: TheWorldMainDockingBar class>>timeStamp (in category 'timestamping') -----
  timeStamp
  "Answer the receiver's timeStamp"
  ^ TS!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>makeNewDrawing (in category 'menu actions') -----
+ makeNewDrawing
+ self doNewPainting!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>updateFromServer (in category 'menu actions') -----
+ updateFromServer
+ Smalltalk
+ at: #SmallLandTools
+ ifPresent: [:smallLandTools | smallLandTools instance updateFromSmallLandSwikiPage: #quick]!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>unhideHiddenObjects (in category 'menu actions') -----
+ unhideHiddenObjects
+ self world showHiders!

Item was changed:
  ----- Method: TheWorldMainDockingBar class>>updateInstances (in category 'events') -----
  updateInstances
  "The class has changed, time to update the instances"
 
  self setTimeStamp.
  Project current assureMainDockingBarPresenceMatchesPreference!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>suppressFlapsString (in category 'menu actions') -----
+ suppressFlapsString
+ "Answer the wording of the suppress-flaps item"
+ ^ CurrentProjectRefactoring suppressFlapsString!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>doNewPainting (in category 'menu actions') -----
+ doNewPainting
+ | w |
+ w := self world.
+ w
+ assureNotPaintingElse: [^ self].
+ w
+ makeNewDrawing: (World primaryHand lastEvent copy setPosition: w center)!

Item was changed:
  ----- Method: MenuItemMorph>>mouseEnter: (in category 'events') -----
  mouseEnter: evt
  "The mouse entered the receiver"
 
+ owner ifNotNil: [ owner stayUp ifFalse: [ self mouseEnterDragging: evt ] ]!
- owner ifNotNil: [owner stayUp ifFalse: [self mouseEnterDragging: evt]].
-
- self isInDockingBar ifTrue:[
- (owner selectedItem notNil
- and:[owner selectedItem ~~ self])
- ifTrue:[owner selectItem: self event: evt.].
- ].
- !

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>saveAsMenuItem (in category 'construction - submenus') -----
+ saveAsMenuItem
+
+ ^{ 'Save Image As...'.
+ 'Save the current state of Squeak on disk under a new name'.
+ MenuIcons smallSaveAsIcon.
+ #saveAs }!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>configurationMenu (in category 'construction - submenus') -----
+ configurationMenu
+ | menu |
+ menu := MenuMorph new defaultTarget: self.
+ ""
+ self createMenuItem: {'set language...'. 'Choose the language in which Squeak should be displayed'. MenuIcons smallLanguageIcon} on: menu.
+ menu addLine.
+ self createMenuItem: {'update from server'. 'Update from server (Internet access is required)'. MenuIcons smallUpdateIcon} on: menu.
+ ""
+ menu addLine.
+ menu addUpdating: #showWorldMainDockingBarString action: #toggleShowWorldMainDockingBar.
+ Flaps sharedFlapsAllowed
+ ifTrue: [menu
+ addUpdating: #suppressFlapsString
+ target: CurrentProjectRefactoring
+ action: #currentToggleFlapsSuppressed].
+ menu addLine.
+ self createMenuItem: {'set world color...'. 'Choose a color to use as world background.'} on: menu.
+ ScreenController lastScreenModeSelected
+ ifTrue: [self createMenuItem: {'exit from full screen'. 'Exit from full screen and enclose Squeak in a window'. MenuIcons smallFullScreenIcon} on: menu]
+ ifFalse: [self createMenuItem: {'switch to full screen'. 'Switch to full screen giving the maximun display space to Squeak'. MenuIcons smallFullScreenIcon} on: menu].
+ ""
+ self createMenuItem: {'change sound volume'. 'Change sound volume'. MenuIcons smallVolumeIcon} on: menu.
+ menu addLine.
+ Preferences noviceMode
+ ifFalse: [""
+ Preferences useUndo
+ ifTrue: [""
+ self createMenuItem: {'purge undo records'. 'Save space by removing all the undo information.'} on: menu.
+ menu addLine].
+ self createMenuItem: {'preferences..'. 'Opens a "Preferences Panel" which allows you to alter many settings'. MenuIcons smallConfigurationIcon} on: menu.
+ self createMenuItem: {'appearance...'. nil. MenuIcons smallConfigurationIcon} on: menu].
+ self createMenuItem: {'set color theme...'. 'Choose the color theme in which Squeak should be displayed'} on: menu.
+ menu addLine.
+ Preferences noviceMode
+ ifTrue: [self createMenuItem: {'switch to expert mode'. 'Switch to expert mode. CAUTION: The expert mode is powerful as well as dangerous'. MenuIcons smallExpertIcon} on: menu]
+ ifFalse: [self createMenuItem: {'switch to novice mode'. 'Come back to novice mode'. MenuIcons smallExpertIcon} on: menu].
+ ""
+ ^ menu!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>jumpToProjectMenuItem (in category 'submenu - projects') -----
+ jumpToProjectMenuItem
+
+ ^{ 'Jump To Project'.
+ 'Start a new project'.
+ MenuIcons smallForwardIcon.
+ [ Project jumpToProject ] }!

Item was changed:
  ----- Method: TheWorldMainDockingBar class>>instance (in category 'instance creation') -----
  instance
  "Answer the receiver's instance"
  ^ Instance
  ifNil: [Instance := super new]!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld class>>timeStamp (in category 'timestamping') -----
+ timeStamp
+ "Answer the receiver's timeStamp"
+ ^ TS!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld class>>updateInstances (in category 'events') -----
+ updateInstances
+ "The class has changed, time to update the instances"
+
+ self setTimeStamp.
+ Project current assureMainDockingBarPresenceMatchesPreference!

Item was changed:
  ----- Method: TheWorldMainDockingBar>>fillDockingBar: (in category 'construction') -----
  fillDockingBar: aDockingBar
  "Private - fill the given docking bar"
+
+ aDockingBar addSpace: 6.
- self fillMenuItemsBar: aDockingBar.
- ""
- aDockingBar addSpacer.
- self fillNavigatorOn: aDockingBar.
- ""
- aDockingBar addSpacer.
- Preferences tinyDisplay
- ifFalse: [| clock |
- clock := ClockMorph new.
- clock show24hr: true.
- clock showSeconds: false.
- clock font: Preferences standardMenuFont emphasis: 0.
- aDockingBar addMorphBack: clock.
- aDockingBar addSpace: 5.
- ""
  aDockingBar
+ add: ''
+ icon: MenuIcons squeakLogoIcon
+ selectedIcon: MenuIcons squeakLogoInvertedIcon
+ help: nil
+ subMenu: (self createSubmenuFrom: self squeakMenu).
- addMorphBack: (self
- createButtonIcon: self volumeIcon
- help: 'Change sound volume' translated
- selector: #changeSoundVolume)].
  aDockingBar
+ add: 'Tools' translated
+ icon: nil
+ help: nil
+ subMenu: (self createSubmenuFrom: self toolsMenu).
- addMorphBack: (self
- createButtonIcon: self fullScreenIcon
- help: (ScreenController lastScreenModeSelected
- ifTrue: ['Exit from full screen']
- ifFalse: ['Switch to full screen'])
- selector: #toggleFullScreen).
  aDockingBar
+ add: 'Projects' translated
+ icon: nil
+ help: nil
+ subMenu: (self createSubmenuFrom: self projectsMenu).
+ aDockingBar
+ setProperty: #mainDockingBarTimeStamp
+ toValue: self class timeStamp!
- addMorphBack: (self
- createButtonIcon: (SelectedObjectThumbnail
- extent: 37 @ 28
- - (Preferences tinyDisplay
- ifTrue: [12]
- ifFalse: [0])
- noSelectedThumbnail: self objectsIcon
- noSelectedBalloonText: 'View objects hierarchy' translated)
- selector: #viewSelectedObject).
- ""
- aDockingBar setProperty: #mainDockingBarTimeStamp toValue: self class timeStamp!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>moveObjectsOnscreen (in category 'menu actions') -----
+ moveObjectsOnscreen
+ self world roundUpStrays!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld class>>instance (in category 'instance creation') -----
+ instance
+ "Answer the receiver's instance"
+ ^ Instance
+ ifNil: [Instance := super new]!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>testRunnerMenuItem (in category 'submenu - tools') -----
+ testRunnerMenuItem
+
+ ^{ 'Test Runner'.
+ 'Open the Test Runner'.
+ self colorIcon: Preferences testRunnerWindowColor.
+ [ TestRunner open ] }!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>fillDockingBar: (in category 'construction') -----
+ fillDockingBar: aDockingBar
+ "Private - fill the given docking bar"
+ self fillMenuItemsBar: aDockingBar.
+ ""
+ aDockingBar addSpacer.
+ self fillNavigatorOn: aDockingBar.
+ ""
+ aDockingBar addSpacer.
+ Preferences tinyDisplay
+ ifFalse: [| clock |
+ clock := ClockMorph new.
+ clock show24hr: true.
+ clock showSeconds: false.
+ clock font: Preferences standardMenuFont emphasis: 0.
+ aDockingBar addMorphBack: clock.
+ aDockingBar addSpace: 5.
+ ""
+ aDockingBar
+ addMorphBack: (self
+ createButtonIcon: self volumeIcon
+ help: 'Change sound volume' translated
+ selector: #changeSoundVolume)].
+ aDockingBar
+ addMorphBack: (self
+ createButtonIcon: self fullScreenIcon
+ help: (ScreenController lastScreenModeSelected
+ ifTrue: ['Exit from full screen']
+ ifFalse: ['Switch to full screen'])
+ selector: #toggleFullScreen).
+ aDockingBar
+ addMorphBack: (self
+ createButtonIcon: (SelectedObjectThumbnail
+ extent: 37 @ 28
+ - (Preferences tinyDisplay
+ ifTrue: [12]
+ ifFalse: [0])
+ noSelectedThumbnail: self objectsIcon
+ noSelectedBalloonText: 'View objects hierarchy' translated)
+ selector: #viewSelectedObject).
+ ""
+ aDockingBar setProperty: #mainDockingBarTimeStamp toValue: self class timeStamp!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>saveAsNewVersion (in category 'menu actions') -----
+ saveAsNewVersion
+ SmalltalkImage current saveAsNewVersion!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>fillNavigatorOn: (in category 'construction') -----
+ fillNavigatorOn: main
+ "main addLine."
+ main addDefaultSpace.
+ ""
+ main
+ addMorphBack: (self
+ createButtonIcon: self backIcon
+ help: 'Previous project'
+ selector: #previousProject).
+ main
+ addMorphBack: (self
+ createButtonIcon: self jumpIcon
+ help: 'Put up a list of all projects, letting me choose one to go to'
+ selector: #jumpToProject).
+ main
+ addMorphBack: (self
+ createButtonIcon: self forwardIcon
+ help: 'Next project'
+ selector: #nextProject).
+ main
+ addMorphBack: (self
+ createButtonIcon: self openIcon
+ help: 'Find any file'
+ selector: #findAnyFile).
+ Preferences tinyDisplay ifFalse:[""
+ main
+ addMorphBack: (self
+ createButtonIcon: self loadProjectIcon
+ help: 'Find a project'
+ selector: #findAProject)].
+ main addDefaultSpace.
+ main addSpacer.
+ main
+ addMorphBack: (self
+ createButtonIcon: self projectIcon
+ help: 'Start a new project'
+ selector: #newProject).
+ main
+ addMorphBack: (self
+ createButtonIcon: self paintIcon
+ help: 'Make a painting'
+ selector: #doNewPainting).
+ main
+ addMorphBack: (self
+ createButtonIcon: self objectCatalogIcon
+ help: 'Open the objects catalog'
+ selector: #activateObjectsTool).
+ Preferences tinyDisplay ifFalse:[""
+ main
+ addMorphBack: (self
+ createButtonIcon: self publishIcon
+ help: 'Publish the current project'
+ selector: #publishProject)].
+ ""
+ main addDefaultSpace!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>colorOnEvent:for: (in category 'private - buttons') -----
+ colorOnEvent: anEvent for: aMorph
+ "Private - gives an on-color to the given morph"
+ aMorph color: self onColor!

Item was changed:
  ----- Method: MenuItemMorph>>selectionFillStyle (in category 'private') -----
  selectionFillStyle
+ " Answer the fill style to use with the receiver is the selected  
+ element "
- "answer the fill style to use with the receiver is the selected  
- element"
- | fill baseColor preferenced |
- Display depth <= 2
- ifTrue: [^ Color gray].
 
+ | fill baseColor preferenced |
+ Display depth <= 2 ifTrue: [
+ ^Color gray ].
  preferenced := Preferences menuSelectionColor.
+ preferenced notNil ifTrue: [ ^preferenced ].
- preferenced notNil ifTrue:[^ preferenced].
-
  baseColor := owner color negated.
+ Preferences gradientMenu ifFalse: [ ^baseColor ].
+ fill := GradientFillStyle ramp: {
+ 0.0 -> baseColor twiceLighter.
+ 1 -> baseColor twiceDarker }.
- Preferences gradientMenu
- ifFalse: [^ baseColor].
- fill := GradientFillStyle ramp: {0.0 -> baseColor twiceLighter . 1 -> baseColor twiceDarker}.
  fill origin: self topLeft.
- (self isInDockingBar
- and: [self owner isVertical not])
- ifTrue: [fill direction: 0 @ self height]
- ifFalse: [fill direction: self width @ 0].
  ^ fill!

Item was changed:
  ----- Method: TheWorldMainDockingBar class>>updateInstances: (in category 'events') -----
  updateInstances: anEvent
  "The class has changed, time to update the instances"
  (anEvent itemClass == self
  or: [anEvent itemClass == self class])
  ifFalse: [^ self].
  ""
  self updateInstances!

Item was changed:
  ----- Method: DockingBarMorph>>add:icon:help:subMenu: (in category 'construction') -----
  add: wordingString icon: aForm help: helpString subMenu: aMenuMorph
  "Append the given submenu with the given label."
  | item |
+ item := DockingBarItemMorph new.
- item := MenuItemMorph new.
  item contents: wordingString.
  item subMenu: aMenuMorph.
  item icon: aForm.
  helpString isNil
  ifFalse: [item setBalloonText: helpString].
  self addMorphBack: item!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>open (in category 'menu actions') -----
+ open
+ self worldMenu openMenu popUpInWorld!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld class>>updateInstances: (in category 'events') -----
+ updateInstances: anEvent
+ "The class has changed, time to update the instances"
+ (anEvent itemClass == self
+ or: [anEvent itemClass == self class])
+ ifFalse: [^ self].
+ ""
+ self updateInstances!

Item was changed:

Item was changed:
  ----- Method: MenuMorph>>releasesSelection: (in category 'events') -----
  releasesSelection: evt
  " The MenuMorph releases its selection if the selected item releases it.
  Used in #selectItem:event: "
 
  self selectedItem ifNil: [ ^true ].
+ evt ifNil: [ ^false ].
  (self selectedItem containsPoint: evt position) ifTrue: [ ^true ].
  ^self selectedItem releasesSelection: evt!

Item was changed:
  ----- Method: MenuItemMorph>>adjacentTo (in category 'selecting') -----
  adjacentTo
+
+ ^{ self bounds topRight + (10 @ 0). self bounds topLeft }!
- self isInDockingBar
- ifFalse: [^ {self bounds topRight + (10 @ 0). self bounds topLeft}].
- ""
- owner isFloating
- ifTrue: [^ {self bounds bottomLeft + (5 @ 5)}].
- owner isAdheringToTop
- ifTrue: [^ {self bounds bottomLeft + (5 @ 5)}].
- owner isAdheringToLeft
- ifTrue: [^ {self bounds topRight + (5 @ 5)}].
- ""
- owner isAdheringToBottom
- ifTrue: [^ {self bounds topLeft + (5 @ 5)}].
- owner isAdheringToRight
- ifTrue: [^ {self bounds topLeft + (5 @ -5)}].
- ""
- ^ {self bounds bottomLeft + (3 @ 5)}!

Item was added:
+ ----- Method: TheWorldMainDockingBarOld>>world (in category 'private') -----
+ world
+ ^ World!

Item was added:
+ ----- Method: TheWorldMainDockingBar>>transcriptMenuItem (in category 'submenu - tools') -----
+ transcriptMenuItem
+
+ ^{ 'Transcript'.
+ 'Open the Transcript'.
+ self colorIcon: Preferences transcriptWindowColor.
+ [ Transcript open ] }!

Item was added:
+ ----- Method: DockingBarItemMorph>>iconForm (in category 'as yet unclassified') -----
+ iconForm
+ "private - answer the form to be used as the icon"
+ ^isEnabled
+ ifTrue: [
+ (isSelected and: [ selectedIcon notNil ])
+ ifTrue: [ selectedIcon ]
+ ifFalse: [ icon ] ]
+ ifFalse: [
+ icon asGrayScale ]!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>changeSoundVolume (in category 'menu actions') -----
- changeSoundVolume
- self notYetImplemented!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>volumeIcon (in category 'private - icons') -----
- volumeIcon
- ^ Preferences tinyDisplay
- ifTrue: [MenuIcons smallVolumeIcon]
- ifFalse: [MenuIcons volumeIcon]!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>publishProject (in category 'menu actions') -----
- publishProject
- self
- publishStyle: #limitedSuperSwikiPublishDirectoryList
- forgetURL: false
- withRename: false!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>nextProject (in category 'menu actions') -----
- nextProject
- Project advanceToNextProject.
- Beeper beep!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>appearance (in category 'menu actions') -----
- appearance
- self worldMenu appearanceMenu popUpInWorld !

Item was removed:
- ----- Method: TheWorldMainDockingBar>>windows (in category 'menu actions') -----
- windows
- self worldMenu windowsMenu popUpInWorld!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>switchToExpertMode (in category 'menu actions') -----
- switchToExpertMode
- | ok |
- ok := self confirm: 'CAUTION!!
- The expert mode is powerful as well as dangerous and you can break your Squeak in several ways.
- Are you sure to switch to expert mode?' translated.
- ok
- ifFalse: [^ self].
- ""
- Preferences enable: #cmdGesturesEnabled.
- Preferences enable: #debugHaloHandle.
- Preferences disable: #noviceMode.
- !

Item was removed:
- ----- Method: TheWorldMainDockingBar>>createButtonIcon:selector: (in category 'private - buttons') -----
- createButtonIcon: aFormOrMorph selector: selector
- "Private - Creates a button to fire an action from a docking bar"
- ^ self
- createButtonIcon: aFormOrMorph
- help: nil
- selector: selector!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>setColorTheme (in category 'menu actions') -----
- setColorTheme
- SmallLandColorTheme chooseTheme.  !

Item was removed:
- ----- Method: TheWorldMainDockingBar>>showAllViewers (in category 'menu actions') -----
- showAllViewers
- self world showAllPlayers!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>objectCatalog (in category 'menu actions') -----
- objectCatalog
- self activateObjectsTool!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>fillMenuItemsBar: (in category 'construction') -----
- fillMenuItemsBar: aDockingBar
- "Private - fill the given docking bar"
- | squeakIcon homeIcon configurationIcon helpIcon squeakLabel projectLabel configurationLabel helpLabel |
- (aDockingBar isDockingBar not
- or: [Preferences tinyDisplay])
- ifTrue: [""
- squeakIcon := MenuIcons smallSqueakIcon.
- homeIcon := MenuIcons smallHomeIcon.
- configurationIcon := MenuIcons smallConfigurationIcon.
- helpIcon := MenuIcons smallHelpIcon]
- ifFalse: [""
- squeakIcon := MenuIcons squeakIcon.
- homeIcon := MenuIcons homeIcon.
- configurationIcon := MenuIcons configurationIcon.
- helpIcon := MenuIcons helpIcon].
- ""
- Preferences tinyDisplay
- ifTrue: [""
- squeakLabel := '' .
- projectLabel := '' .
- configurationLabel := '' .
- helpLabel := '' ]
- ifFalse: [""
- squeakLabel := 'Squeak' translated.
- projectLabel := 'Project' translated.
- configurationLabel := 'Configuration' translated.
- helpLabel := 'Help' translated].
- ""
- aDockingBar
- add: squeakLabel
- icon: squeakIcon
- help: 'Options related to Squeak as a whole' translated
- subMenu: self squeakMenu.
- aDockingBar
- add: projectLabel
- icon: homeIcon
- help: 'Options to open things in the current project or to navigate between projects' translated
- subMenu: self projectMenu.
- aDockingBar
- add: configurationLabel
- icon: configurationIcon
- help: 'Options to configure Squeak' translated
- subMenu: self configurationMenu.
- aDockingBar
- add: helpLabel
- icon: helpIcon
- help: 'Helpful options or options to get help' translated
- subMenu: self helpMenu!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>forwardIcon (in category 'private - icons') -----
- forwardIcon
- ^ Preferences tinyDisplay
- ifTrue: [MenuIcons smallForwardIcon]
- ifFalse: [MenuIcons forwardIcon]!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>objectsIcon (in category 'private - icons') -----
- objectsIcon
- ^ Preferences tinyDisplay
- ifTrue: [MenuIcons smallObjectsIcon]
- ifFalse: [MenuIcons objectsIcon]!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>clearTurtleTrails (in category 'menu actions') -----
- clearTurtleTrails
- self world clearTurtleTrails!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>paintIcon (in category 'private - icons') -----
- paintIcon
- ^ Preferences tinyDisplay
- ifTrue: [MenuIcons smallPaintIcon]
- ifFalse: [MenuIcons paintIcon]!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>hideAllViewers (in category 'menu actions') -----
- hideAllViewers
- self hideAllViewersIn: self world!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>findAnyFile (in category 'menu actions') -----
- findAnyFile
- FileList2 morphicViewGeneralLoaderInWorld: self world!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>exitFromFullScreen (in category 'menu actions') -----
- exitFromFullScreen
- self toggleFullScreen!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>viewObjectsHierarchy (in category 'menu actions') -----
- viewObjectsHierarchy
- "self world findWindow: nil"
- MorphHierarchy openOrDelete!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>save (in category 'menu actions') -----
- save
- SmalltalkImage current snapshot: true andQuit: false!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>openIcon (in category 'private - icons') -----
- openIcon
- ^ Preferences tinyDisplay
- ifTrue: [MenuIcons smallOpenIcon]
- ifFalse: [MenuIcons openIcon]!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>jumpIcon (in category 'private - icons') -----
- jumpIcon
- ^ Preferences tinyDisplay
- ifTrue: [MenuIcons smallJumpIcon]
- ifFalse: [MenuIcons jumpIcon]!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>projectMenu (in category 'construction - submenus') -----
- projectMenu
- | menu |
- menu := MenuMorph new defaultTarget: self.
- ""
- Preferences noviceMode
- ifFalse: [""
- self createMenuItem: {'open...'. nil. MenuIcons smallOpenIcon} on: menu.
- self createMenuItem: {'windows...'. nil. MenuIcons smallWindowIcon} on: menu.
- menu addLine].
- ""
- self createMenuItem: {'previous project'. 'Return to the most recently visited project'. MenuIcons smallBackIcon} on: menu.
- self createMenuItem: {'jump to project...'. 'Put up a list of all projects, letting me choose one to go to'. MenuIcons smallJumpIcon} on: menu.
- self createMenuItem: {'next project'. 'Go to next project'. MenuIcons smallForwardIcon} on: menu.
- menu addLine.
- self createMenuItem: {'find any file'. 'Import a file into Squeak'. MenuIcons smallOpenIcon} on: menu.
- self createMenuItem: {'find a project'. 'Open a project into Squeak'. MenuIcons smallLoadProjectIcon} on: menu.
- menu addLine.
- self createMenuItem: {'new project'. 'Start a new project'. MenuIcons smallProjectIcon} on: menu.
- self createMenuItem: {'make new drawing'. 'Make a painting'. MenuIcons smallPaintIcon} on: menu.
- self createMenuItem: {'object catalog (o)'. 'A tool for finding and obtaining many kinds of objects'. MenuIcons smallObjectCatalogIcon} on: menu.
- menu addLine.
- self createMenuItem: {'object from paste buffer'. 'Create a new object from paste buffer'. MenuIcons smallPasteIcon} on: menu.
- Preferences useUndo
- ifTrue: [""
- Preferences infiniteUndo
- ifTrue: [""
- menu
- addUpdating: #undoMenuWording
- target: self commandHistory
- action: #undoLastCommand.
- menu
- addUpdating: #redoMenuWording
- target: self commandHistory
- action: #redoNextCommand]
- ifFalse: [""
- menu
- addUpdating: #undoOrRedoMenuWording
- target: self commandHistory
- action: #undoOrRedoCommand]].
- menu addLine.
- self createMenuItem: {'view objects hierarchy'. 'A tool for discovering the objects and the relations between them'. MenuIcons smallObjectsIcon} on: menu.
- menu addLine.
- self createMenuItem: {'publish project'. 'Publish the current project'. MenuIcons smallPublishIcon} on: menu.
- ""
- ^ menu!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>jumpToProject (in category 'menu actions') -----
- jumpToProject
- Project jumpToProject!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>saveAs (in category 'menu actions') -----
- saveAs
- SmalltalkImage current saveAs!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>saveAndQuit (in category 'menu actions') -----
- saveAndQuit
- SmalltalkImage current snapshot: true andQuit: true!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>projectIcon (in category 'private - icons') -----
- projectIcon
- ^ Preferences tinyDisplay
- ifTrue: [MenuIcons smallProjectIcon]
- ifFalse: [MenuIcons projectIcon]!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>viewSelectedObject (in category 'menu actions') -----
- viewSelectedObject
- | selected menu |
- selected := self world selectedObject.
- selected isNil
- ifTrue: [^ self viewObjectsHierarchy].
- ""
- menu := selected buildYellowButtonMenu: ActiveHand.
- menu
- addTitle: selected externalName
- icon: (selected iconOrThumbnailOfSize: (Preferences tinyDisplay ifTrue: [16] ifFalse: [28])).
- menu popUpInWorld: selected currentWorld!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>setWorldColor (in category 'menu actions') -----
- setWorldColor
- | world |
- world := self world.
- world
- changeColorTarget: world
- selector: #color:
- originalColor: world color
- hand: world activeHand!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>findAProject (in category 'menu actions') -----
- findAProject
- FileList2
- morphicViewProjectLoader2InWorld: self world
- reallyLoad: true
- dirFilterType: #limitedSuperSwikiDirectoryList!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>purgeUndoRecords (in category 'menu actions') -----
- purgeUndoRecords
- CommandHistory resetAllHistory!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>previousProject (in category 'menu actions') -----
- previousProject
-
- Project returnToPreviousProject.
- CurrentProjectRefactoring exitCurrentProject. "go to parent if no previous"
- Beeper beep.!

Item was removed:
- ----- Method: MenuItemMorph>>roundedCorners (in category 'rounding') -----
- roundedCorners
- "Return a list of those corners to round"
- self isInDockingBar
- ifFalse: [^ super roundedCorners].
- ""
- owner isFloating
- ifTrue: [^ #(1 4 )].
- owner isAdheringToTop
- ifTrue: [^ #(1 4 )].
- owner isAdheringToBottom
- ifTrue: [^ #(2 3 )].
- owner isAdheringToLeft
- ifTrue: [^ #(1 2 )].
- owner isAdheringToRight
- ifTrue: [^ #(3 4 )].
- ""
- ^ #(1 2 3 4 )!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>importFile (in category 'menu actions') -----
- importFile
- self findAnyFile!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>toggleShowWorldMainDockingBar (in category 'menu actions') -----
- toggleShowWorldMainDockingBar
- self world toggleShowWorldMainDockingBar!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>publishIcon (in category 'private - icons') -----
- publishIcon
- ^ Preferences tinyDisplay
- ifTrue: [MenuIcons smallPublishIcon]
- ifFalse: [MenuIcons publishIcon]!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>openDockingBar (in category 'construction') -----
- openDockingBar
- ^ self createDockingBar openInWorld !

Item was removed:
- ----- Method: TheWorldMainDockingBar>>objectFromPasteBuffer (in category 'menu actions') -----
- objectFromPasteBuffer
- ActiveHand pasteMorph!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>setLanguage (in category 'menu actions') -----
- setLanguage
- Project current chooseNaturalLanguage !

Item was removed:
- ----- Method: TheWorldMainDockingBar>>publishStyle:forgetURL:withRename: (in category 'menu actions') -----
- publishStyle: aSymbol forgetURL: aBoolean withRename: renameBoolean
-
- | w primaryServer rename |
-
- w := self world ifNil: [^Beeper beep].
- w setProperty: #SuperSwikiPublishOptions toValue: aSymbol.
-
- primaryServer := w project primaryServerIfNil: [nil].
- rename := ((primaryServer notNil
- and: [primaryServer acceptsUploads]) not)
- or: [renameBoolean].
- w setProperty: #SuperSwikiRename toValue: rename.
-
- w project
- storeOnServerShowProgressOn: self
- forgetURL: aBoolean | rename.
- !

Item was removed:
- ----- Method: TheWorldMainDockingBar>>switchToNoviceMode (in category 'menu actions') -----
- switchToNoviceMode
- Preferences disable: #cmdGesturesEnabled.
- Preferences disable: #debugHaloHandle.
- Preferences enable: #noviceMode.
- !

Item was removed:
- ----- Method: TheWorldMainDockingBar>>preferences (in category 'menu actions') -----
- preferences
- PreferenceBrowser open!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>selectorForWording: (in category 'private') -----
- selectorForWording: aString
- "Private - Create a valid smalltalk selector from an english  
- wording.  
- 'foo' -> #foo  
- 'foo....' -> #foo  
- 'foo bar' -> #fooBar  
- 'foo bar (f)' - #fooBar  
- "
- | words selector temp |
- temp := aString.
- ('*(*)*' match: temp)
- ifTrue: [| pre post |
- pre := temp copyUpTo: $(.
- post := temp copyAfterLast: $).
- temp := pre , post].
- ""
- temp := temp
- collect: [:each | ""
- each isLetter
- ifTrue: [each]
- ifFalse: [Character space]].
- words := temp subStrings: Character separators.
- selector := String
- streamContents: [:stream | ""
- words
- do: [:word | stream nextPutAll: word capitalized]].
- selector at: 1 put: selector first asLowercase.
- ""
- ^ selector asSymbol!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>switchToFullScreen (in category 'menu actions') -----
- switchToFullScreen
- self toggleFullScreen!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>quit (in category 'menu actions') -----
- quit
- Preferences readOnlyMode
- ifTrue: [""(self confirm: 'REALLY quit Squeak?' translated)
- ifTrue: [SmalltalkImage current snapshot: false andQuit: true]]
- ifFalse: [| saveBeforeQuitting |
- saveBeforeQuitting := self
- confirm: 'Save changes before quitting?' translated
- orCancel: [^ self].
- SmalltalkImage current snapshot: saveBeforeQuitting andQuit: true]!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>worldMenu (in category 'private') -----
- worldMenu
- ^ TheWorldMenu new
- world: self world
- project: Project current
- hand: self world activeHand; yourself!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>colorOffEvent:for: (in category 'private - buttons') -----
- colorOffEvent: anEvent for: aMorph
- "Private - gives an off-color to the given morph"
- aMorph color: self offColor!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>fullScreenIcon (in category 'private - icons') -----
- fullScreenIcon
- ^ Preferences tinyDisplay
- ifTrue: [MenuIcons smallFullScreenIcon]
- ifFalse: [MenuIcons fullScreenIcon]!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>showWorldMainDockingBarString (in category 'menu actions') -----
- showWorldMainDockingBarString
- ^ self world showWorldMainDockingBarString!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>helpMenu (in category 'construction - submenus') -----
- helpMenu
- | menu |
- menu := MenuMorph new defaultTarget: self.
- ""
- self createMenuItem: {'move objects onscreen'. 'Bring back all objects whose current coordinates keep them from being visible, so that at least a portion of each of my interior objects can be seen'} on: menu.
- self createMenuItem: {'unhide hidden objects'. 'If any items on the world are currently hidden, make them visible'} on: menu.
- menu addLine.
- self createMenuItem: {'show all viewers'. 'Make visible the viewers for all objects which have user-written scripts in this playfield'} on: menu.
- self createMenuItem: {'hide all viewers'. 'Make invisible the viewers for all objects in the world'} on: menu.
- menu addLine.
- self createMenuItem: {'clear turtle trails'. 'Remove any pigment laid down on the desktop by objects moving with their pens down'} on: menu.
- "
- menu addLine.
- self createMenuItem: {'eToy vocabulary summary'. 'Displays a summary of all the pre-defined commands and properties in the pre-defined eToy vocabulary'} on: menu.
- "
- ""
- ^ menu!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>backIcon (in category 'private - icons') -----
- backIcon
- ^ Preferences tinyDisplay
- ifTrue: [MenuIcons smallBackIcon]
- ifFalse: [MenuIcons backIcon]!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>perform:event:for: (in category 'private - buttons') -----
- perform: selectorSymbol event: anEvent for: aMorph
- "Private - perform the given selector"
- aMorph color: self offColor.
- self perform: selectorSymbol!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>objectCatalogIcon (in category 'private - icons') -----
- objectCatalogIcon
- ^ Preferences tinyDisplay
- ifTrue: [MenuIcons smallObjectCatalogIcon]
- ifFalse: [MenuIcons objectCatalogIcon]!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>newProject (in category 'menu actions') -----
- newProject
- MorphicProject openViewOn: nil!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>activateObjectsTool (in category 'menu actions') -----
- activateObjectsTool
- self world activateObjectsTool!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>toggleFullScreen (in category 'menu actions') -----
- toggleFullScreen
- ScreenController lastScreenModeSelected
- ifTrue: [ScreenController new fullScreenOff]
- ifFalse: [ScreenController new fullScreenOn].
- self world positionSubmorphs.
- self class updateInstances!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>eToyVocabularySummary (in category 'menu actions') -----
- eToyVocabularySummary
- Cursor wait
- showWhile: [self world printVocabularySummary]!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>onColor (in category 'private - buttons') -----
- onColor
- "Private - answer the on color"
- ^ (Preferences menuSelectionColor
- ifNil: [Color blue])
- alpha: 0.4!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>loadProjectIcon (in category 'private - icons') -----
- loadProjectIcon
- ^ Preferences tinyDisplay
- ifTrue: [MenuIcons smallLoadProjectIcon]
- ifFalse: [MenuIcons loadProjectIcon]!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>makeNewDrawing (in category 'menu actions') -----
- makeNewDrawing
- self doNewPainting!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>updateFromServer (in category 'menu actions') -----
- updateFromServer
- Smalltalk
- at: #SmallLandTools
- ifPresent: [:smallLandTools | smallLandTools instance updateFromSmallLandSwikiPage: #quick]!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>unhideHiddenObjects (in category 'menu actions') -----
- unhideHiddenObjects
- self world showHiders!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>suppressFlapsString (in category 'menu actions') -----
- suppressFlapsString
- "Answer the wording of the suppress-flaps item"
- ^ CurrentProjectRefactoring suppressFlapsString!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>doNewPainting (in category 'menu actions') -----
- doNewPainting
- | w |
- w := self world.
- w
- assureNotPaintingElse: [^ self].
- w
- makeNewDrawing: (World primaryHand lastEvent copy setPosition: w center)!

Item was removed:
- ----- Method: MenuItemMorph>>wantsRoundedCorners (in category 'rounding') -----
- wantsRoundedCorners
- ^ self isInDockingBar
- ifTrue: [true]
- ifFalse: [super wantsRoundedCorners]!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>configurationMenu (in category 'construction - submenus') -----
- configurationMenu
- | menu |
- menu := MenuMorph new defaultTarget: self.
- ""
- self createMenuItem: {'set language...'. 'Choose the language in which Squeak should be displayed'. MenuIcons smallLanguageIcon} on: menu.
- menu addLine.
- self createMenuItem: {'update from server'. 'Update from server (Internet access is required)'. MenuIcons smallUpdateIcon} on: menu.
- ""
- menu addLine.
- menu addUpdating: #showWorldMainDockingBarString action: #toggleShowWorldMainDockingBar.
- Flaps sharedFlapsAllowed
- ifTrue: [menu
- addUpdating: #suppressFlapsString
- target: CurrentProjectRefactoring
- action: #currentToggleFlapsSuppressed].
- menu addLine.
- self createMenuItem: {'set world color...'. 'Choose a color to use as world background.'} on: menu.
- ScreenController lastScreenModeSelected
- ifTrue: [self createMenuItem: {'exit from full screen'. 'Exit from full screen and enclose Squeak in a window'. MenuIcons smallFullScreenIcon} on: menu]
- ifFalse: [self createMenuItem: {'switch to full screen'. 'Switch to full screen giving the maximun display space to Squeak'. MenuIcons smallFullScreenIcon} on: menu].
- ""
- self createMenuItem: {'change sound volume'. 'Change sound volume'. MenuIcons smallVolumeIcon} on: menu.
- menu addLine.
- Preferences noviceMode
- ifFalse: [""
- Preferences useUndo
- ifTrue: [""
- self createMenuItem: {'purge undo records'. 'Save space by removing all the undo information.'} on: menu.
- menu addLine].
- self createMenuItem: {'preferences..'. 'Opens a "Preferences Panel" which allows you to alter many settings'. MenuIcons smallConfigurationIcon} on: menu.
- self createMenuItem: {'appearance...'. nil. MenuIcons smallConfigurationIcon} on: menu].
- self createMenuItem: {'set color theme...'. 'Choose the color theme in which Squeak should be displayed'} on: menu.
- menu addLine.
- Preferences noviceMode
- ifTrue: [self createMenuItem: {'switch to expert mode'. 'Switch to expert mode. CAUTION: The expert mode is powerful as well as dangerous'. MenuIcons smallExpertIcon} on: menu]
- ifFalse: [self createMenuItem: {'switch to novice mode'. 'Come back to novice mode'. MenuIcons smallExpertIcon} on: menu].
- ""
- ^ menu!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>moveObjectsOnscreen (in category 'menu actions') -----
- moveObjectsOnscreen
- self world roundUpStrays!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>saveAsNewVersion (in category 'menu actions') -----
- saveAsNewVersion
- SmalltalkImage current saveAsNewVersion!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>fillNavigatorOn: (in category 'construction') -----
- fillNavigatorOn: main
- "main addLine."
- main addDefaultSpace.
- ""
- main
- addMorphBack: (self
- createButtonIcon: self backIcon
- help: 'Previous project'
- selector: #previousProject).
- main
- addMorphBack: (self
- createButtonIcon: self jumpIcon
- help: 'Put up a list of all projects, letting me choose one to go to'
- selector: #jumpToProject).
- main
- addMorphBack: (self
- createButtonIcon: self forwardIcon
- help: 'Next project'
- selector: #nextProject).
- main
- addMorphBack: (self
- createButtonIcon: self openIcon
- help: 'Find any file'
- selector: #findAnyFile).
- Preferences tinyDisplay ifFalse:[""
- main
- addMorphBack: (self
- createButtonIcon: self loadProjectIcon
- help: 'Find a project'
- selector: #findAProject)].
- main addDefaultSpace.
- main addSpacer.
- main
- addMorphBack: (self
- createButtonIcon: self projectIcon
- help: 'Start a new project'
- selector: #newProject).
- main
- addMorphBack: (self
- createButtonIcon: self paintIcon
- help: 'Make a painting'
- selector: #doNewPainting).
- main
- addMorphBack: (self
- createButtonIcon: self objectCatalogIcon
- help: 'Open the objects catalog'
- selector: #activateObjectsTool).
- Preferences tinyDisplay ifFalse:[""
- main
- addMorphBack: (self
- createButtonIcon: self publishIcon
- help: 'Publish the current project'
- selector: #publishProject)].
- ""
- main addDefaultSpace!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>colorOnEvent:for: (in category 'private - buttons') -----
- colorOnEvent: anEvent for: aMorph
- "Private - gives an on-color to the given morph"
- aMorph color: self onColor!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>open (in category 'menu actions') -----
- open
- self worldMenu openMenu popUpInWorld!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>world (in category 'private') -----
- world
- ^ World!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>createButtonIcon:help:selector: (in category 'private - buttons') -----
- createButtonIcon: aFormOrMorph help: helpStringOrNil selector: selector
- "Private - Creates a button to fire an action from a docking bar"
- | button icon |
- button := RectangleMorph new.
- button extent: aFormOrMorph extent + 2.
- button borderWidth: 0.
- button color: self offColor.
- helpStringOrNil isNil
-
- ifFalse: [button setBalloonText: helpStringOrNil translated].
- ""
- icon := aFormOrMorph isMorph
- ifTrue: [aFormOrMorph]
- ifFalse: [SketchMorph withForm: aFormOrMorph].
- button addMorphCentered: icon.
- ""
- button
- on: #mouseDown
- send: #perform:event:for:
- to: self
- withValue: selector.
- button
- on: #mouseEnter
- send: #colorOnEvent:for:
- to: self.
- button
- on: #mouseLeave
- send: #colorOffEvent:for:
- to: self.
- ""
- ^ button!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>offColor (in category 'private - buttons') -----
- offColor
- "Private - answer the off color"
- ^ Color black alpha: 0.01!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>hideAllViewersIn: (in category 'menu actions') -----
- hideAllViewersIn: aMorph
- aMorph isFlapTab
- ifTrue: [self hideAllViewersIn: aMorph referent].
- aMorph
- submorphsDo: [:each | ""
- ({ScriptEditorMorph. StandardViewer} includes: each class)
- ifTrue: [each dismiss]
- ifFalse: [self hideAllViewersIn: each]]!