The Trunk: Morphic-kb.242.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.242.mcz

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

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

Name: Morphic-kb.242
Author: kb
Time: 20 November 2009, 2:30:38 am
UUID: 75fcbe2b-bc23-8f4c-8dcb-ba69f6848820
Ancestors: Morphic-kb.241

 - Refactored updating menus:
   - Removed subMenuUpdater from MenuItemMorph
   - Hijacked UpdatingMenuMorph
   - Added #updateMenu to MenuMorph with an empty body
   - Added updateMenu call to activation methods:
     - UpdatingMenuMorph >> activate:
     - DockingBarMorph >> activeSubmenu:
     - MenuMorph >> activeSubmenu:
   - Changed MenuItemMorph updating submenu mechanism
 - Poked with Windows menu

=============== Diff against Morphic-kb.241 ===============

Item was added:
+ ----- Method: MenuItemMorph>>addUpdatingSubMenu: (in category 'accessing') -----
+ addUpdatingSubMenu: aBlock
+
+ subMenu := UpdatingMenuMorph new.
+ subMenu updater: aBlock updateSelector: #value:.
+ self changed.
+ !

Item was changed:
  StringMorph subclass: #MenuItemMorph
+ instanceVariableNames: 'isEnabled subMenu isSelected target selector arguments icon lastMousePosition'
- instanceVariableNames: 'isEnabled subMenu isSelected target selector arguments icon lastMousePosition subMenuUpdater'
  classVariableNames: 'SubMenuMarker'
  poolDictionaries: ''
  category: 'Morphic-Menus'!
 
  !MenuItemMorph commentStamp: '<historical>' prior: 0!
  I represent an item in a menu.
 
  Instance variables:
  isEnabled <Boolean> True if the menu item can be executed.
  subMenu <MenuMorph | nil> The submenu to activate automatically when the user mouses over the item.
  isSelected <Boolean> True if the item is currently selected.
  target <Object> The target of the associated action.
  selector <Symbol> The associated action.
  arguments <Array> The arguments for the associated action.
  icon <Form | nil> An optional icon form to be displayed to my left.
 
  If I have a dynamic marker, created by strings like <yes> or <no> in my contents, it will be installed as a submorph.!

Item was changed:
  ----- Method: TheWorldMainDockingBar>>windowMenuFor:on: (in category 'submenu - windows') -----
  windowMenuFor: window on: menu
 
  menu
  addItem: [ :item |
  item
  contents: 'Close';
  action: [ window delete ] ];
  addItem: [ :item |
  item
+ contents: 'Toggle Full Screen';
+ action: [ window expandBoxHit ] ]!
- contents: 'Full Screen';
- action: [ window fullScreen ] ]!

Item was added:
+ ----- Method: UpdatingMenuMorph>>activate: (in category 'as yet unclassified') -----
+ activate: evt
+ "Receiver should be activated; e.g., so that control passes correctly."
+
+ self updateMenu.
+ evt hand newMouseFocus: self.!

Item was changed:
  ----- Method: MenuItemMorph>>select: (in category 'selecting') -----
  select: evt
  self isSelected: true.
- self updateSubMenu.
  owner activeSubmenu: subMenu.
  subMenu ifNotNil: [
  subMenu delete.
  subMenu
  popUpAdjacentTo: self adjacentTo
  forHand: evt hand
  from: self.
  subMenu selectItem: nil event: evt].!

Item was changed:
  ----- Method: TheWorldMainDockingBar>>jumpToProjectMenuItemOn: (in category 'submenu - projects') -----
  jumpToProjectMenuItemOn: menu
 
  menu addItem: [ :item |
  item
  contents: 'Jump To Project' translated;
  icon: MenuIcons smallForwardIcon;
+ addUpdatingSubMenu: [ :subMenu |
- subMenuUpdater: [ :subMenu |
  subMenu defaultTarget: Project.
  Project buildJumpToMenu: subMenu ] ]!

Item was changed:
  ----- Method: MenuMorph>>activeSubmenu: (in category 'control') -----
  activeSubmenu: aSubmenu
+ activeSubMenu ifNotNil: [
+ activeSubMenu delete ].
- activeSubMenu
- ifNotNil: [activeSubMenu delete].
  activeSubMenu := aSubmenu.
+ activeSubMenu ifNotNil: [
+ activeSubMenu updateMenu.
+ activeSubMenu activatedFromDockingBar: nil. ]!
- aSubmenu
- ifNotNil: [
- activeSubMenu activatedFromDockingBar: nil.
- ]!

Item was added:
+ ----- Method: MenuMorph>>updateMenu (in category 'update') -----
+ updateMenu
+ " Do nothing "!

Item was changed:
  ----- Method: TheWorldMainDockingBar>>windowsMenuOn: (in category 'construction') -----
  windowsMenuOn: aDockingBar
 
  aDockingBar addItem: [ :item |
  item
  contents: 'Windows' translated;
+ addUpdatingSubMenu: [ :menu |
- subMenuUpdater: [ :menu |
  self listWindowsOn: menu ] ]
  !

Item was changed:
  ----- Method: DockingBarMorph>>activeSubmenu: (in category 'control') -----
  activeSubmenu: aSubmenu
  activeSubMenu isNil
  ifFalse: [activeSubMenu delete].
  activeSubMenu := aSubmenu.
  aSubmenu isNil
  ifTrue: [^ self].
+ activeSubMenu updateMenu.
- ""
  activeSubMenu selectItem: nil event: nil.
  MenuIcons decorateMenu: activeSubMenu.
  activeSubMenu activatedFromDockingBar: self.
  activeSubMenu borderColor: self borderColor.
  activeSubMenu beSticky.
  activeSubMenu resistsRemoval: true.
  activeSubMenu removeMatchString.!

Item was changed:
  ----- Method: TheWorldMainDockingBar>>listWindowsOn: (in category 'submenu - windows') -----
  listWindowsOn: menu
 
  | expanded |
  expanded := SystemWindow windowsIn: World satisfying: [ :w | w isCollapsed not ].
  expanded ifEmpty: [
  menu addItem: [ :item |
  item
  contents: 'No open Windows' translated;
  isEnabled: false;
  action: [ ] ] ].
  expanded do: [ :each |
  menu addItem: [ :item |
  item
  contents: each label;
  icon: (self colorIcon: each paneColor);
+ addUpdatingSubMenu: [ :subMenu | self windowMenuFor: each on: subMenu ];
- subMenuUpdater: [ :subMenu | self windowMenuFor: each on: subMenu ];
  action: [ each activateAndForceLabelToShow ] ] ].!

Item was removed:
- ----- Method: MenuItemMorph>>subMenuUpdater: (in category 'accessing') -----
- subMenuUpdater: aBlock
-
- subMenuUpdater := aBlock.
- self updateSubMenu.
- self changed.
- !

Item was removed:
- ----- Method: MenuItemMorph>>updateSubMenu (in category 'selecting') -----
- updateSubMenu
-
- | menu |
- subMenuUpdater ifNil: [^self ].
- menu := MenuMorph new.
- subMenuUpdater value: menu.
- self subMenu: menu!