Skip to content

Commit

Permalink
Merge pull request #455 from moosetechnology/development
Browse files Browse the repository at this point in the history
v2.0.1 - Merge dev into master
  • Loading branch information
ClotildeToullec authored Mar 2, 2022
2 parents 333f15b + e7a859f commit a23094e
Show file tree
Hide file tree
Showing 138 changed files with 4,347 additions and 1,945 deletions.
43 changes: 4 additions & 39 deletions roadmapMoose.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,6 @@
(updated on oct. 13, 2021)

# QueryBrowser

## Result list

bottom list is currently sorted by "kind of entities" and is "read-only"

- we want also a hierarchical tree of entities:
```
> package1
> class11
> class12
method121
method122
> package2
```
(note: with workspace browser, this part could be detached from the QueryBrowser to become a simple EntityListPresenter ...)

# Durden workspace
# Moose workspace

(Santi's stuff)
It allows to group several tools in one window.
Expand Down Expand Up @@ -51,6 +34,8 @@ This tool can ask the QueryBrowser, what are the queries available and allow to

Possibility to define tags from properties

Add "virtual tags"

# Hierarchical Map with properties

Displays incoming entities in a hierarchicalView https://github.com/ObjectProfile/HierarchicalVisualizations
Expand All @@ -63,17 +48,6 @@ If an entity match several queries, 2 options:
- give a specific color (black, gray, red)
- choose the first one

# Distribution Map

We want a distribution map browser

Probably based on the prototype in https://github.com/NicolasAnquetil/HierarchicalVisualizations, not on the telescope one

Will work somehow like the **Hierarchical Map with properties** for the properties, but the Distribution map wants exaclty 2 levels of entities: Containers and members
So we need to force this:
- entities coming from the bus should be of that form => user responsible for selectyng the right entities with the proper query
- entities coming from the bu are the containers and the tool accept one query that will produce members for each of these incoming container

# Favorites Browser

A tool to record some favorites "things" that the user like:
Expand All @@ -91,18 +65,9 @@ Possibly accept colored properties (with only 2 metrics with width and height)

Starting at a given level, containement is not shown as a tree, but as a HierarchicalVisualization

# Double Dispatch buses

When a tool wants to send an entity on a bus, it should ask this entity what bus to use.
Their will be buses specialiazed for all types of entities (including a generic bus "specialized" for MooseEntity)

And when a tool is expecting entities of a special type, it should ask the class of this entity what bus can carry it and then ask the application for available buses of this type.

We will still be able to have several buses for the same type (see issue: (https://github.com/moosetechnology/MooseIDE/issues/320)[https://github.com/moosetechnology/MooseIDE/issues/320]

# Propagation strategy buses

We could have at least 3 kind of buses:
We could have different kinds of buses:

- push bus: when data is written on the bus, it immediately transmits it to all tools attached to it
- delayed bus: when data is written on the bus, it stores it and only transmits when there is an explicit "flush" from the producer (allow to work with the "Propagate" button of the tools)
Expand Down
33 changes: 12 additions & 21 deletions src/BaselineOfMooseIDE/BaselineOfMooseIDE.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,12 @@ BaselineOfMooseIDE >> baseline: spec [

<baseline>
spec for: #common do: [ "Dependencies"

self tylerDurden: spec.
self tylerDurden: spec.
self famixQueries: spec.
self telescope: spec.
self labelContractor: spec.
self hierarchicalVisualizations: spec.

"Packages"
self definePackages: spec.

Expand All @@ -30,11 +29,10 @@ BaselineOfMooseIDE >> baseline: spec [
package: 'MooseIDE-Tagging'
with: [ spec requires: #( 'FamixTagging' ) ] ].

"Groups"
self defineGroups: spec.

"Register custom tools"
spec postLoadDoIt: #registerCustomTools ]
spec
postLoadDoIt: #registerCustomTools;
postLoadDoIt: #resetMiApplications ]
]

{ #category : #accessing }
Expand All @@ -46,20 +44,6 @@ BaselineOfMooseIDE >> customProjectAttributes [
ifNone: [ #( #NeedsMoose ) ]
]

{ #category : #baselines }
BaselineOfMooseIDE >> defineGroups: spec [

spec
group: 'default'
with: #( 'MooseIDE-Core' 'MooseIDE-Visualization'
'MooseIDE-Meta' 'MooseIDE-Tests' 'MooseIDE-Dependency'
'MooseIDE-Famix' 'MooseIDE-Tagging' 'MooseIDE-Telescope'
'MooseIDE-Export' 'MooseIDE-NewTools' 'MooseIDE-NewTools-Tests'
'MooseIDE-QueriesBrowser' 'MooseIDE-QueriesBrowser-Tests'
'MooseIDE-ColorPalette' 'MooseIDE-ColorPalette-Tests'
'MooseIDE-Durden' )
]

{ #category : #baselines }
BaselineOfMooseIDE >> definePackages: spec [

Expand Down Expand Up @@ -153,6 +137,13 @@ BaselineOfMooseIDE >> registerCustomTools [
(Smalltalk classNamed: #MiPlayground) register
]

{ #category : #actions }
BaselineOfMooseIDE >> resetMiApplications [

(Smalltalk classNamed: #MiApplication) reset.
(Smalltalk classNamed: #MiTestApplication) reset
]

{ #category : #dependencies }
BaselineOfMooseIDE >> telescope: spec [
spec
Expand Down
62 changes: 30 additions & 32 deletions src/MooseIDE-Core/MiAbstractBrowser.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -43,19 +43,6 @@ Class {
#category : #'MooseIDE-Core-Browser'
}

{ #category : #specs }
MiAbstractBrowser class >> actionsCommandGroupFor: presenter [

^ CmCommandGroup forSpec
name: 'Actions';
register:
(MiPropagateCommand forSpecContext: presenter)
beDisplayedOnRightSide;
register:
(MiInspectCommand forSpecContext: presenter)
beDisplayedOnRightSide
]

{ #category : #specs }
MiAbstractBrowser class >> defaultSpec [

Expand Down Expand Up @@ -120,11 +107,22 @@ MiAbstractBrowser class >> open [
yourself
]

{ #category : #accessing }
MiAbstractBrowser class >> taskbarIcon [
^MooseIcons mooseIcon

]

{ #category : #specs }
MiAbstractBrowser class >> windowSize [
^ 500 @ 400
]

{ #category : #'window control' }
MiAbstractBrowser >> browserClosed [
buses do: [ :bus | bus unregisterBrowser: self ]
]

{ #category : #accessing }
MiAbstractBrowser >> buses [
^ buses
Expand All @@ -142,6 +140,14 @@ MiAbstractBrowser >> canFollow [
^ true
]

{ #category : #testing }
MiAbstractBrowser >> canFollowEntity: anObject [

"whether the browser accepts to deal with anObject"

self subclassResponsibility
]

{ #category : #testing }
MiAbstractBrowser >> canHighlight [

Expand All @@ -161,22 +167,14 @@ MiAbstractBrowser >> canPropagate [
entity asMooseGroup isNotEmpty or: [ entity isMooseModel ] ]
]

{ #category : #testing }
MiAbstractBrowser >> canReceiveEntity: anObject [

"whether the browser accepts to deal with anObject"

self subclassResponsibility
]

{ #category : #buses }
MiAbstractBrowser >> followBus: aBus [

(self buses includes: aBus) ifTrue: [ ^ self ].
self buses add: aBus.
aBus registerBrowser: self.
self window ifNotNil: [ :window | window updateBusButton ].
self selectEntity: aBus logger mostRecentEntity
self receiveEntity: aBus logger mostRecentEntity
]

{ #category : #actions }
Expand Down Expand Up @@ -228,7 +226,7 @@ MiAbstractBrowser >> initializeWindow: aMiWindowPresenter [
aMiWindowPresenter buildToolbar.

aMiWindowPresenter whenClosedDo: [
self buses do: [ :bus | bus unregisterBrowser: self ] ].
self browserClosed ].

aMiWindowPresenter initialExtent: self class windowSize
]
Expand Down Expand Up @@ -260,6 +258,15 @@ MiAbstractBrowser >> needUpdate: anEntity [
^ anEntity ~= model selected
]

{ #category : #'private - accessing' }
MiAbstractBrowser >> receiveEntity: anEntity [

"I am used by the Mi Application. You should use #globallySelect: anEntity that will transmit the message to me and the other browsers"

receivingMode browser: self actOnEntity: anEntity.
self updateToolbar
]

{ #category : #accessing }
MiAbstractBrowser >> receivingMode [

Expand All @@ -272,15 +279,6 @@ MiAbstractBrowser >> receivingMode: aReceivingMode [
receivingMode := aReceivingMode
]

{ #category : #'private - accessing' }
MiAbstractBrowser >> selectEntity: anEntity [

"I am used by the Mi Application. You should use #globallySelect: anEntity that will transmit the message to me and the other browsers"

receivingMode browser: self actOnEntity: anEntity.
self updateToolbar
]

{ #category : #initialization }
MiAbstractBrowser >> setDefaultReceivingMode [

Expand Down
Loading

0 comments on commit a23094e

Please sign in to comment.