-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathHRelayoutMenuItem.class.st
More file actions
71 lines (59 loc) · 1.43 KB
/
HRelayoutMenuItem.class.st
File metadata and controls
71 lines (59 loc) · 1.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
"
This menu item uses the layout of an HNode to place roassal shapes in their positions.
"
Class {
#name : 'HRelayoutMenuItem',
#superclass : 'HNodeMenuItem',
#category : 'Hierarchical-Roassal-Menu',
#package : 'Hierarchical-Roassal-Menu'
}
{ #category : 'accessing' }
HRelayoutMenuItem class >> definedLayouts [
^ { RSGridLayout . RSFlowLayout . RSCircleLayout }.
]
{ #category : 'execution' }
HRelayoutMenuItem >> applyLayout: node [
node children do: [ :child | child position: nil ].
visualization rebuildShape: shape.
]
{ #category : 'building - menus' }
HRelayoutMenuItem >> buildOn: aMenuMorph [
| submenu |
self canBeExecuted ifFalse: [ ^ self ].
submenu := MenuMorph new.
self class definedLayouts do: [ :layoutClass |
submenu
add: layoutClass name
target: self
selector: #execute:
argument: layoutClass.
].
aMenuMorph add: self label subMenu: submenu.
]
{ #category : #execution }
HRelayoutMenuItem >> canBeExecuted [
^ shape model isExpanded
]
{ #category : #execution }
HRelayoutMenuItem >> execute [
self applyLayout: shape model.
]
{ #category : 'execution' }
HRelayoutMenuItem >> execute: layoutClass [
|node|
node := shape model.
node layout: layoutClass new.
self applyLayout: node.
]
{ #category : 'accessing' }
HRelayoutMenuItem >> group [
^ 1
]
{ #category : 'accessing' }
HRelayoutMenuItem >> label [
^ 'Relayout'
]
{ #category : 'accessing' }
HRelayoutMenuItem >> order [
^ 70
]