Skip to content

Commit

Permalink
Merge pull request #16 from moosetechnology/selection
Browse files Browse the repository at this point in the history
Add a selection menu in canvas.
  • Loading branch information
LABSARI authored Jul 19, 2024
2 parents 0b9db9a + 74d11b8 commit ffefff4
Show file tree
Hide file tree
Showing 37 changed files with 340 additions and 241 deletions.
33 changes: 17 additions & 16 deletions src/Hierarchical-Roassal-Menu/HAbstractMenuItem.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,22 @@
base class for menu items
"
Class {
#name : #HAbstractMenuItem,
#superclass : #Object,
#name : 'HAbstractMenuItem',
#superclass : 'Object',
#instVars : [
'shape',
'visualization'
],
#category : #'Hierarchical-Roassal-Menu'
#category : 'Hierarchical-Roassal-Menu',
#package : 'Hierarchical-Roassal-Menu'
}

{ #category : #accessing }
{ #category : 'accessing' }
HAbstractMenuItem >> argument [
^ nil
]

{ #category : #'building - menus' }
{ #category : 'building - menus' }
HAbstractMenuItem >> buildOn: aMenuMorph [
| item |
self canBeExecuted ifFalse: [ ^ self ].
Expand All @@ -29,58 +30,58 @@ HAbstractMenuItem >> buildOn: aMenuMorph [
item icon: (self iconNamed: self iconName).
]

{ #category : #testing }
{ #category : 'testing' }
HAbstractMenuItem >> canBeExecuted [
^ true
]

{ #category : #execution }
{ #category : 'execution' }
HAbstractMenuItem >> execute [
]

{ #category : #accessing }
{ #category : 'accessing' }
HAbstractMenuItem >> group [
^ 0
]

{ #category : #accessing }
{ #category : 'accessing' }
HAbstractMenuItem >> iconName [
^ nil
]

{ #category : #accessing }
{ #category : 'accessing' }
HAbstractMenuItem >> label [
^ ''
]

{ #category : #accessing }
{ #category : 'accessing' }
HAbstractMenuItem >> order [
^ 0
]

{ #category : #accessing }
{ #category : 'accessing' }
HAbstractMenuItem >> selector [
^ #execute
]

{ #category : #accessing }
{ #category : 'accessing' }
HAbstractMenuItem >> shape: anObject [

shape := anObject
]

{ #category : #accessing }
{ #category : 'accessing' }
HAbstractMenuItem >> target [
^ self
]

{ #category : #accessing }
{ #category : 'accessing' }
HAbstractMenuItem >> visualization [

^ visualization
]

{ #category : #accessing }
{ #category : 'accessing' }
HAbstractMenuItem >> visualization: anObject [

visualization := anObject
Expand Down
17 changes: 9 additions & 8 deletions src/Hierarchical-Roassal-Menu/HAddLinkMenuItem.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@
This menu item adds a new draggable interaction to the canvas and then creates a new line between the selected nodes
"
Class {
#name : #HAddLinkMenuItem,
#superclass : #HNodeMenuItem,
#category : #'Hierarchical-Roassal-Menu'
#name : 'HAddLinkMenuItem',
#superclass : 'HNodeMenuItem',
#category : 'Hierarchical-Roassal-Menu',
#package : 'Hierarchical-Roassal-Menu'
}

{ #category : #execution }
{ #category : 'execution' }
HAddLinkMenuItem >> execute [
| canvas line pointer |
canvas := visualization canvas.
Expand Down Expand Up @@ -38,24 +39,24 @@ HAddLinkMenuItem >> execute [
evt signalUpdate ].
]

{ #category : #accessing }
{ #category : 'accessing' }
HAddLinkMenuItem >> group [
^ 2
]

{ #category : #accessing }
{ #category : 'accessing' }
HAddLinkMenuItem >> label [
^ 'Add dependency to'
]

{ #category : #hooks }
{ #category : 'hooks' }
HAddLinkMenuItem >> modelFor: aShape [
^ aShape model
ifNil: [ self modelFor: aShape parent ]
ifNotNil: [ aShape model ]
]

{ #category : #accessing }
{ #category : 'accessing' }
HAddLinkMenuItem >> order [
^ 40
]
7 changes: 4 additions & 3 deletions src/Hierarchical-Roassal-Menu/HCanvasMenuItem.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
Menu for canvas
"
Class {
#name : #HCanvasMenuItem,
#superclass : #HAbstractMenuItem,
#category : #'Hierarchical-Roassal-Menu'
#name : 'HCanvasMenuItem',
#superclass : 'HAbstractMenuItem',
#category : 'Hierarchical-Roassal-Menu',
#package : 'Hierarchical-Roassal-Menu'
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,24 @@
this menu item, collapses direct children of the canvas
"
Class {
#name : #HCollapseCanvasChildrenMenuItem,
#superclass : #HCanvasMenuItem,
#category : #'Hierarchical-Roassal-Menu'
#name : 'HCollapseCanvasChildrenMenuItem',
#superclass : 'HCanvasMenuItem',
#category : 'Hierarchical-Roassal-Menu',
#package : 'Hierarchical-Roassal-Menu'
}

{ #category : #execution }
{ #category : 'execution' }
HCollapseCanvasChildrenMenuItem >> execute [
visualization rootNode collapseChildren

]

{ #category : #accessing }
{ #category : 'accessing' }
HCollapseCanvasChildrenMenuItem >> label [
^ 'Collapse children'
]

{ #category : #accessing }
{ #category : 'accessing' }
HCollapseCanvasChildrenMenuItem >> order [
^ 0
]
15 changes: 8 additions & 7 deletions src/Hierarchical-Roassal-Menu/HCollapseChildrenMenuItem.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,30 @@
this menu item, collapses the children of a node
"
Class {
#name : #HCollapseChildrenMenuItem,
#superclass : #HNodeMenuItem,
#category : #'Hierarchical-Roassal-Menu'
#name : 'HCollapseChildrenMenuItem',
#superclass : 'HNodeMenuItem',
#category : 'Hierarchical-Roassal-Menu',
#package : 'Hierarchical-Roassal-Menu'
}

{ #category : #testing }
{ #category : 'testing' }
HCollapseChildrenMenuItem >> canBeExecuted [
^ shape model children isNotEmpty
]

{ #category : #execution }
{ #category : 'execution' }
HCollapseChildrenMenuItem >> execute [
shape schildren do: [ :child | child model removeInteractionIfPresent: visualization class ].
shape model collapseChildren.
visualization rebuildShape: shape.
]

{ #category : #accessing }
{ #category : 'accessing' }
HCollapseChildrenMenuItem >> label [
^ 'Collapse children'
]

{ #category : #accessing }
{ #category : 'accessing' }
HCollapseChildrenMenuItem >> order [
^ 15
]
13 changes: 7 additions & 6 deletions src/Hierarchical-Roassal-Menu/HCollapseGroupMenuItem.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,24 @@
This class allows to the nodes of one group to collapse
"
Class {
#name : #HCollapseGroupMenuItem,
#superclass : #HGroupMenuItem,
#category : #'Hierarchical-Roassal-Menu'
#name : 'HCollapseGroupMenuItem',
#superclass : 'HGroupMenuItem',
#category : 'Hierarchical-Roassal-Menu',
#package : 'Hierarchical-Roassal-Menu'
}

{ #category : #accessing }
{ #category : 'accessing' }
HCollapseGroupMenuItem >> execute [
visualization canvas selectedShapes do: [ :aShape | aShape model collapse ].

]

{ #category : #accessing }
{ #category : 'accessing' }
HCollapseGroupMenuItem >> label [
^ 'Collapse group'
]

{ #category : #accessing }
{ #category : 'accessing' }
HCollapseGroupMenuItem >> order [
^ 0
]
11 changes: 6 additions & 5 deletions src/Hierarchical-Roassal-Menu/HDefaultMenuItemStrategy.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@ I am a strategy for HMenuBuilder.
I define menu items that can be executed (or needed) for a given object.
"
Class {
#name : #HDefaultMenuItemStrategy,
#superclass : #Object,
#category : #'Hierarchical-Roassal-Menu'
#name : 'HDefaultMenuItemStrategy',
#superclass : 'Object',
#category : 'Hierarchical-Roassal-Menu',
#package : 'Hierarchical-Roassal-Menu'
}

{ #category : #public }
{ #category : 'public' }
HDefaultMenuItemStrategy >> classFor: aRoassalShape [
aRoassalShape isShape
ifFalse: [ ^ HCanvasMenuItem ].
Expand All @@ -22,7 +23,7 @@ HDefaultMenuItemStrategy >> classFor: aRoassalShape [

]

{ #category : #public }
{ #category : 'public' }
HDefaultMenuItemStrategy >> menuItemClassesFor: aShape [

^ (self classFor: aShape) subclasses , { HInspectorMenuItem }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,23 @@
This menu item expands the direct children of the root node
"
Class {
#name : #HExpandCanvasChildrenMenuItem,
#superclass : #HCanvasMenuItem,
#category : #'Hierarchical-Roassal-Menu'
#name : 'HExpandCanvasChildrenMenuItem',
#superclass : 'HCanvasMenuItem',
#category : 'Hierarchical-Roassal-Menu',
#package : 'Hierarchical-Roassal-Menu'
}

{ #category : #execution }
{ #category : 'execution' }
HExpandCanvasChildrenMenuItem >> execute [
[visualization rootNode expandChildren] timeProfile
]

{ #category : #accessing }
{ #category : 'accessing' }
HExpandCanvasChildrenMenuItem >> label [
^ 'Expand children'
]

{ #category : #accessing }
{ #category : 'accessing' }
HExpandCanvasChildrenMenuItem >> order [
^ 5
]
15 changes: 8 additions & 7 deletions src/Hierarchical-Roassal-Menu/HExpandChildrenMenuItem.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,18 @@
expand the node and its children
"
Class {
#name : #HExpandChildrenMenuItem,
#superclass : #HNodeMenuItem,
#category : #'Hierarchical-Roassal-Menu'
#name : 'HExpandChildrenMenuItem',
#superclass : 'HNodeMenuItem',
#category : 'Hierarchical-Roassal-Menu',
#package : 'Hierarchical-Roassal-Menu'
}

{ #category : #testing }
{ #category : 'testing' }
HExpandChildrenMenuItem >> canBeExecuted [
^ shape model children isNotEmpty
]

{ #category : #execution }
{ #category : 'execution' }
HExpandChildrenMenuItem >> execute [
shape schildren do: [ :child | child model removeInteractionIfPresent: visualization class ].
shape model
Expand All @@ -21,12 +22,12 @@ HExpandChildrenMenuItem >> execute [
visualization rebuildShape: shape.
]

{ #category : #accessing }
{ #category : 'accessing' }
HExpandChildrenMenuItem >> label [
^ 'Expand children'
]

{ #category : #accessing }
{ #category : 'accessing' }
HExpandChildrenMenuItem >> order [
^ 10
]
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,18 @@
this menu allow to the user collase only link but not nodes
"
Class {
#name : #HExpandCollapseLinksMenuItem,
#superclass : #HNodeMenuItem,
#category : #'Hierarchical-Roassal-Menu'
#name : 'HExpandCollapseLinksMenuItem',
#superclass : 'HNodeMenuItem',
#category : 'Hierarchical-Roassal-Menu',
#package : 'Hierarchical-Roassal-Menu'
}

{ #category : #testing }
{ #category : 'testing' }
HExpandCollapseLinksMenuItem >> canBeExecuted [
^ shape model children isNotEmpty
]

{ #category : #accessing }
{ #category : 'accessing' }
HExpandCollapseLinksMenuItem >> execute [
| node |
node := shape model.
Expand All @@ -22,19 +23,19 @@ HExpandCollapseLinksMenuItem >> execute [
visualization rebuildLines: shape.
]

{ #category : #accessing }
{ #category : 'accessing' }
HExpandCollapseLinksMenuItem >> group [
^ 3
]

{ #category : #accessing }
{ #category : 'accessing' }
HExpandCollapseLinksMenuItem >> label [
^ shape model isLinksExpanded
ifTrue: [ 'Collapse external links' ]
ifFalse: [ 'Expand external links' ]
]

{ #category : #accessing }
{ #category : 'accessing' }
HExpandCollapseLinksMenuItem >> order [
^ 80
]
Loading

0 comments on commit ffefff4

Please sign in to comment.