Bug 53369 - composite (nested) states in state diagrams
Summary: composite (nested) states in state diagrams
Status: ASSIGNED
Alias: None
Product: umbrello
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: unspecified Linux
: NOR wishlist
Target Milestone: 2.33 (KDE releases 20.12)
Assignee: Umbrello Development Group
URL:
Keywords:
Depends on: 337227 415885
Blocks:
  Show dependency treegraph
 
Reported: 2003-01-24 18:57 UTC by Jonathan Riddell
Modified: 2020-08-27 11:28 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
Example for nested Statemachine (498.73 KB, image/png)
2019-10-29 20:44 UTC, Carsten Behling
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jonathan Riddell 2003-01-24 18:57:09 UTC
Version:            (using KDE Devel)
Compiler:          gcc 2.95 
OS:          Linux

There does
not seem to be a way to create nested substates in state
diagrams. This significantly reduces the expressive
power of statecharts.

In his book "Constructing the User Interface with
Statecharts", Ian Horrocks provides a very good
explanation of why simple state transition diagrams are
inferior to David Harel's statecharts, which is what the
UML state diagrams are based upon. Horrock's book:
http://www.amazon.com/exec/obidos/tg/detail/-/0201342782

Some example diagrams with nested substates:
http://www.informatik.fh-luebeck.de/~st/UML/UML1.1/notation9.html

Thanks for the otherwise wonderful tool.

Vadim
Comment 1 Stevan White 2003-04-30 10:46:24 UTC
See also 

UML Modelling Language Specification 03-03-01

Section 3.76 Composite States
Comment 2 Heiko Nardmann 2004-08-10 22:58:58 UTC
The second link does not seem to be reachable anymore (Aug 10th, 2004).
Comment 3 Oliver Kellogg 2004-08-11 07:03:01 UTC
Google found this for me:

http://etna.int-evry.fr/COURS/UML/notation/notation9b.html
Comment 4 Carsten Behling 2019-10-28 20:03:06 UTC
Is this issue solved?

Current Umbrello allows history elements. This doesn't make sense without using substates.

I tried to add substates to a state. There seems to be some problems:

1. Dragging the superstate does not move the substates.
2. Display z order changes that the superstate is put above the substate e.g. when editing the superstate.
Comment 5 Ralf Habacker 2019-10-29 08:44:22 UTC
(In reply to Carsten Behling from comment #4)
> Is this issue solved?
no, because so far no one has taken the time to design/implement this.

> > 1. Dragging the superstate does not move the substates.
This is because adding states visual inside another state currently does not create a parent/child relation.

> 2. Display z order changes that the superstate is put above the substate
> e.g. when editing the superstate.
This has been already recorded with bug 337227.
Comment 6 Ralf Habacker 2019-10-29 19:34:18 UTC
Git commit 51451829ce121f1196f609c0c9cbf502a13b25a8 by Ralf Habacker.
Committed on 29/10/2019 at 19:37.
Pushed by habacker into branch 'master'.

Add initial support for composite (nested) states in state diagrams

A combined state can be added by the context menu of a state widget.

It is implemented as separate state diagram, which is painted inside
the combined state.

M  +1    -0    doc/xml/umbrello-diagrams.dtd
M  +1    -0    umbrello/cmds/cmdcreatediagram.h
M  +1    -0    umbrello/menus/listpopupmenu.cpp
M  +1    -0    umbrello/menus/listpopupmenu.h
M  +1    -0    umbrello/menus/widgetbasepopupmenu.cpp
M  +43   -0    umbrello/umlwidgets/statewidget.cpp
M  +6    -2    umbrello/umlwidgets/statewidget.h

https://commits.kde.org/umbrello/51451829ce121f1196f609c0c9cbf502a13b25a8
Comment 7 Ralf Habacker 2019-10-29 19:57:37 UTC
Git commit 284dfe691f66697b569d2098873bc51910574f3b by Ralf Habacker.
Committed on 29/10/2019 at 19:57.
Pushed by habacker into branch 'master'.

Update xmi file version because state widgets now save/read the attribute 'diagramlinkid'

M  +2    -2    umbrello/version.h

https://commits.kde.org/umbrello/284dfe691f66697b569d2098873bc51910574f3b
Comment 8 Ralf Habacker 2019-10-29 20:26:09 UTC
Git commit 01c47c21a5aca2cc87baa132ae009e49e4ab802e by Ralf Habacker.
Committed on 29/10/2019 at 20:25.
Pushed by habacker into branch 'master'.

Add creating combined state widget from diagram context menu

M  +1    -0    umbrello/menus/umlscenepopupmenu.cpp
M  +1    -1    umbrello/menus/widgetbasepopupmenu.cpp
M  +16   -0    umbrello/umlscene.cpp
M  +2    -0    umbrello/umlwidgets/statewidget.cpp

https://commits.kde.org/umbrello/01c47c21a5aca2cc87baa132ae009e49e4ab802e
Comment 9 Ralf Habacker 2019-10-29 20:34:33 UTC
Git commit a20a29122e83244ac005decce5393ce3919073b6 by Ralf Habacker.
Committed on 29/10/2019 at 20:34.
Pushed by habacker into branch 'master'.

Fix minimum width and height calculations of combined state widgets

M  +26   -17   umbrello/umlwidgets/statewidget.cpp

https://commits.kde.org/umbrello/a20a29122e83244ac005decce5393ce3919073b6
Comment 10 Carsten Behling 2019-10-29 20:44:29 UTC
Created attachment 123574 [details]
Example for nested Statemachine

Needed for discussion
Comment 11 Carsten Behling 2019-10-29 20:52:18 UTC
(In reply to Ralf Habacker from comment #6)
> Git commit 51451829ce121f1196f609c0c9cbf502a13b25a8 by Ralf Habacker.
> Committed on 29/10/2019 at 19:37.
> Pushed by habacker into branch 'master'.
> 
> Add initial support for composite (nested) states in state diagrams
> 
> A combined state can be added by the context menu of a state widget.
> 
> It is implemented as separate state diagram, which is painted inside
> the combined state.
> 
> M  +1    -0    doc/xml/umbrello-diagrams.dtd
> M  +1    -0    umbrello/cmds/cmdcreatediagram.h
> M  +1    -0    umbrello/menus/listpopupmenu.cpp
> M  +1    -0    umbrello/menus/listpopupmenu.h
> M  +1    -0    umbrello/menus/widgetbasepopupmenu.cpp
> M  +43   -0    umbrello/umlwidgets/statewidget.cpp
> M  +6    -2    umbrello/umlwidgets/statewidget.h
> 
> https://commits.kde.org/umbrello/51451829ce121f1196f609c0c9cbf502a13b25a8

Hi Ralf, nice idea to basically add a statechart to a state. Does your solution consider that a Transition from outside a state may lead to an inner state or history? Further, basically modelling concurrency with dashed lines should be possible (see attached image). 
Are we still open for adding this feature with your solution for nested states?
Comment 12 Ralf Habacker 2019-10-30 10:44:01 UTC
(In reply to Carsten Behling from comment #11)
> Hi Ralf, nice idea to basically add a statechart to a state. Does your
> solution consider that a Transition from outside a state may lead to an
> inner state or history? Further, basically modelling concurrency with dashed
> lines should be possible (see attached image). 
> Are we still open for adding this feature with your solution for nested
> states?
What alternatives do you think are possible?
Comment 13 Carsten Behling 2019-10-30 13:16:02 UTC
(In reply to Ralf Habacker from comment #12)
> (In reply to Carsten Behling from comment #11)
> > Hi Ralf, nice idea to basically add a statechart to a state. Does your
> > solution consider that a Transition from outside a state may lead to an
> > inner state or history? Further, basically modelling concurrency with dashed
> > lines should be possible (see attached image). 
> > Are we still open for adding this feature with your solution for nested
> > states?
> What alternatives do you think are possible?

For concurrency/orthogonal states we could allow to assign multiple statecharts adding a new 'partial area' with dashed lines to the state and render very new statechart into the new area.

For transitions crossing state borders it may be  inevitable introduce parent/child relations. Since I don't know the Umbrello Code very well yet, I can't judge if that would be a painful task.
Comment 14 Ralf Habacker 2019-10-30 16:32:22 UTC
Git commit 46d66d14d980bcfaf20b3603e107e798a5581890 by Ralf Habacker.
Committed on 30/10/2019 at 10:27.
Pushed by habacker into branch 'master'.

Resize diagram after applying layout to avoid small display in combined widget

M  +1    -0    umbrello/umlscene.cpp

https://commits.kde.org/umbrello/46d66d14d980bcfaf20b3603e107e798a5581890
Comment 15 Ralf Habacker 2019-10-30 16:32:22 UTC
Git commit 080cb9fbf2a13d41c4c6129c8da957d97041a9ed by Ralf Habacker.
Committed on 30/10/2019 at 16:21.
Pushed by habacker into branch 'master'.

Add context menu entry to return from editing state diagram in combined state widget

M  +1    -0    umbrello/menus/listpopupmenu.cpp
M  +1    -0    umbrello/menus/listpopupmenu.h
M  +2    -0    umbrello/menus/umlscenepopupmenu.cpp
M  +17   -0    umbrello/umlscene.cpp
M  +5    -0    umbrello/umlscene.h
M  +10   -4    umbrello/umlwidgets/statewidget.cpp

https://commits.kde.org/umbrello/080cb9fbf2a13d41c4c6129c8da957d97041a9ed
Comment 16 Ralf Habacker 2019-10-30 16:32:22 UTC
Git commit b5be2a5722431f66cf98a30dffb7013052eac8c1 by Ralf Habacker.
Committed on 30/10/2019 at 10:26.
Pushed by habacker into branch 'master'.

Add entry 'edit combined state' to state widget context menu for combined states

M  +1    -0    umbrello/menus/listpopupmenu.cpp
M  +1    -0    umbrello/menus/listpopupmenu.h
M  +8    -0    umbrello/menus/widgetbasepopupmenu.cpp
M  +17   -7    umbrello/umlwidgets/statewidget.cpp

https://commits.kde.org/umbrello/b5be2a5722431f66cf98a30dffb7013052eac8c1
Comment 17 Ralf Habacker 2019-10-30 16:32:22 UTC
Git commit 9997043a075947f76d70253483d13c6bdb562a5a by Ralf Habacker.
Committed on 30/10/2019 at 16:23.
Pushed by habacker into branch 'master'.

Add editing of included state diagram through combined widget

M  +89   -0    umbrello/umlwidgets/statewidget.cpp
M  +4    -0    umbrello/umlwidgets/statewidget.h

https://commits.kde.org/umbrello/9997043a075947f76d70253483d13c6bdb562a5a
Comment 18 Ralf Habacker 2019-10-30 17:00:09 UTC
Git commit 6e507f54b6f34a788a4296f0e37fa4b595032325 by Ralf Habacker.
Committed on 30/10/2019 at 16:25.
Pushed by habacker into branch 'master'.

Update current diagram size after releasing mouse

This avoids too small scales in state diagram include in combined state

M  +2    -0    umbrello/umlwidgets/umlwidget.cpp

https://commits.kde.org/umbrello/6e507f54b6f34a788a4296f0e37fa4b595032325
Comment 19 Carsten Behling 2019-10-30 19:42:50 UTC
(In reply to Ralf Habacker from comment #18)
> Git commit 6e507f54b6f34a788a4296f0e37fa4b595032325 by Ralf Habacker.
> Committed on 30/10/2019 at 16:25.
> Pushed by habacker into branch 'master'.
> 
> Update current diagram size after releasing mouse
> 
> This avoids too small scales in state diagram include in combined state
> 
> M  +2    -0    umbrello/umlwidgets/umlwidget.cpp
> 
> https://commits.kde.org/umbrello/6e507f54b6f34a788a4296f0e37fa4b595032325

Hi Ralf, I checked the current version.

The Edit feature is an d 'Return to combined state' feature is great.

However, it's possible to do 'New->Combined state...' two or more times and the last combined state is the assigned one.

Not sure if you keep this open for the orthogonal state feature that we discussed. If not, adding a combined state more than once is a bug.

If yes, … cool we will get orthogonal states :-)
Comment 20 Ralf Habacker 2019-10-30 21:30:59 UTC
Git commit ad773972cf37a50696690e3fbc7e43aa27b3138d by Ralf Habacker.
Committed on 30/10/2019 at 21:34.
Pushed by habacker into branch 'master'.

Fix mouse selection and widget moving inside combined widget

M  +4    -3    umbrello/umlwidgets/statewidget.cpp

https://commits.kde.org/umbrello/ad773972cf37a50696690e3fbc7e43aa27b3138d
Comment 21 Ralf Habacker 2019-10-31 19:33:12 UTC
Git commit 45c0b11f9f9ca52b01d664563614f9abc94e4a74 by Ralf Habacker.
Committed on 31/10/2019 at 13:47.
Pushed by habacker into branch 'master'.

Add support for editing widgets directly inside combined state

M  +85   -95   umbrello/umlwidgets/statewidget.cpp
M  +8    -3    umbrello/umlwidgets/statewidget.h

https://commits.kde.org/umbrello/45c0b11f9f9ca52b01d664563614f9abc94e4a74
Comment 22 Ralf Habacker 2019-10-31 19:33:12 UTC
Git commit 7d221b703b7d09e66bcdb267c88591224cc03730 by Ralf Habacker.
Committed on 31/10/2019 at 13:47.
Pushed by habacker into branch 'master'.

Fixed missing resizing of the graphic scene after moving widgets

M  +1    -1    umbrello/umlscene.cpp
M  +1    -1    umbrello/umlwidgets/umlwidget.cpp

https://commits.kde.org/umbrello/7d221b703b7d09e66bcdb267c88591224cc03730
Comment 23 Ralf Habacker 2019-10-31 19:33:12 UTC
Git commit 72a110a4906ec0a39e0eaf849bd5fcdf1bbb829b by Ralf Habacker.
Committed on 31/10/2019 at 19:25.
Pushed by habacker into branch 'master'.

Add support to change linked diagram in property dialog of combined state widget

M  +51   -8    umbrello/dialogs/statedialog.cpp
M  +3    -1    umbrello/dialogs/statedialog.h
M  +4    -0    umbrello/menus/widgetbasepopupmenu.cpp

https://commits.kde.org/umbrello/72a110a4906ec0a39e0eaf849bd5fcdf1bbb829b
Comment 24 Ralf Habacker 2019-10-31 19:33:12 UTC
Git commit 70a02c2d6ee2da7e618dbdb3049aef3ea098cb7b by Ralf Habacker.
Committed on 31/10/2019 at 19:32.
Pushed by habacker into branch 'master'.

UMLScene: Clear linked widget after returning to related widget to remove mt_ReturnToCombinedState from context menu

M  +1    -0    umbrello/umlscene.cpp

https://commits.kde.org/umbrello/70a02c2d6ee2da7e618dbdb3049aef3ea098cb7b
Comment 25 Ralf Habacker 2019-10-31 19:33:12 UTC
Git commit c58a3116a069d57cd9dbd2f0894343df4a70cd2c by Ralf Habacker.
Committed on 31/10/2019 at 13:47.
Pushed by habacker into branch 'master'.

Add visual debug info to UMLScene, disabled by default

Visual debug info are:
1. scene rect (green rectangle)
2. items bounding rect (blue rectangle)
3. cursor position (gray crossed lines)

M  +14   -1    umbrello/umlscene.cpp

https://commits.kde.org/umbrello/c58a3116a069d57cd9dbd2f0894343df4a70cd2c
Comment 26 Ralf Habacker 2019-10-31 19:41:39 UTC
(In reply to Carsten Behling from comment #19)
> The Edit feature is an d 'Return to combined state' feature is great.
thanks
 
> However, it's possible to do 'New->Combined state...' two or more times and
> the last combined state is the assigned one.
This is an issue on widget creating, I will take a look. 
 
> Not sure if you keep this open for the orthogonal state feature that we
> discussed. 

> If yes, … cool we will get orthogonal states :-)
As we now have one diagram linked adding more diagrams to a combined widget looks not too complicate. I'm thinking to add an attribute to the state widget to specify a layout e.g. two columns, two rows, each holding a different diagram.
Comment 27 Ralf Habacker 2019-10-31 19:47:06 UTC
Git commit 48af01041eb73c534fbc6c1da0b6a941f11d63ee by Ralf Habacker.
Committed on 31/10/2019 at 19:46.
Pushed by habacker into branch 'master'.

Always show name attribute of state widget instead of linked state diagram

M  +3    -8    umbrello/umlwidgets/statewidget.cpp

https://commits.kde.org/umbrello/48af01041eb73c534fbc6c1da0b6a941f11d63ee
Comment 28 Ralf Habacker 2019-11-01 08:56:54 UTC
Git commit 2148d2c766430714b3701247133a2166f75049b6 by Ralf Habacker.
Committed on 01/11/2019 at 08:56.
Pushed by habacker into branch 'master'.

Add support for non resizable widgets and apply to combined state widgets

M  +6    -3    umbrello/umlwidgets/statewidget.cpp
M  +8    -0    umbrello/umlwidgets/umlwidget.h

https://commits.kde.org/umbrello/2148d2c766430714b3701247133a2166f75049b6
Comment 29 Carsten Behling 2019-11-01 12:45:54 UTC
(In reply to Ralf Habacker from comment #28)
> Git commit 2148d2c766430714b3701247133a2166f75049b6 by Ralf Habacker.
> Committed on 01/11/2019 at 08:56.
> Pushed by habacker into branch 'master'.
> 
> Add support for non resizable widgets and apply to combined state widgets
> 
> M  +6    -3    umbrello/umlwidgets/statewidget.cpp
> M  +8    -0    umbrello/umlwidgets/umlwidget.h
> 
> https://commits.kde.org/umbrello/2148d2c766430714b3701247133a2166f75049b6

Hi Ralf, thanks for the outstanding work!!!

I tested the current version and found two issues:

1. When I remove a combined state the state diagram related diagram remains.That may be desired behaviour since a class also remains in the Tree View if deleted from diagram. However I can't treat a combined state diagram in the same way as a class since it can't be dragged and dropped into an another state diagram resulting in a combined state element.

So there are basically two solutions:

- to allow a drag and drop of a state diagram  into another one appearing as a combined state (I think this would be the preferred method)
- remove the related state diagram with the related combined state

2. when I
a. add a combined state
b. adding elements e.g. states in the related state Diagramm
c. keep the element e.g. state selected in the toolbox instead of selecting the cursor
d. switching back to the state diagram with the related combined state
e. selecting the cursor in the toolbox

=> every time I click into the combined state a new element of the last toolbox selection of the sub state chart is added (e.g. a state in this case)

Im not shure if you are planning to edit directly the combined state. In this case the toolbox selection of the parent diagram should be used instead of the toolbox from the state diagram of the combined state (that is not open/active tab).
Comment 30 Carsten Behling 2019-11-01 12:56:29 UTC
(In reply to Carsten Behling from comment #29)
> (In reply to Ralf Habacker from comment #28)
> > Git commit 2148d2c766430714b3701247133a2166f75049b6 by Ralf Habacker.
> > Committed on 01/11/2019 at 08:56.
> > Pushed by habacker into branch 'master'.
> > 
> > Add support for non resizable widgets and apply to combined state widgets
> > 
> > M  +6    -3    umbrello/umlwidgets/statewidget.cpp
> > M  +8    -0    umbrello/umlwidgets/umlwidget.h
> > 
> > https://commits.kde.org/umbrello/2148d2c766430714b3701247133a2166f75049b6
> 
> Hi Ralf, thanks for the outstanding work!!!
> 
> I tested the current version and found two issues:
> 
> 1. When I remove a combined state the state diagram related diagram
> remains.That may be desired behaviour since a class also remains in the Tree
> View if deleted from diagram. However I can't treat a combined state diagram
> in the same way as a class since it can't be dragged and dropped into an
> another state diagram resulting in a combined state element.
> 
> So there are basically two solutions:
> 
> - to allow a drag and drop of a state diagram  into another one appearing as
> a combined state (I think this would be the preferred method)
> - remove the related state diagram with the related combined state
> 
> 2. when I
> a. add a combined state
> b. adding elements e.g. states in the related state Diagramm
> c. keep the element e.g. state selected in the toolbox instead of selecting
> the cursor
> d. switching back to the state diagram with the related combined state
> e. selecting the cursor in the toolbox
> 
> => every time I click into the combined state a new element of the last
> toolbox selection of the sub state chart is added (e.g. a state in this case)
> 
> Im not shure if you are planning to edit directly the combined state. In
> this case the toolbox selection of the parent diagram should be used instead
> of the toolbox from the state diagram of the combined state (that is not
> open/active tab).

Regarding issue 1. in combination with issue 2. the following solution comes additionally to my mind:

- yes, we keep editing combined states directly and fix the toolbox usage
- State diagrams of substates are always 'hidden' diagrams to distinguish having only 'Root State Diagrams' visible as diagrams
- states and combined stats will appear instead with the there widgets in the tree view beyond the top level diagram / beyond there top level combined states

With this solution we won't break the user operating scheme. 
- Combined
Comment 31 Carsten Behling 2019-11-01 13:21:26 UTC
(In reply to Ralf Habacker from comment #12)
> (In reply to Carsten Behling from comment #11)
> > Hi Ralf, nice idea to basically add a statechart to a state. Does your
> > solution consider that a Transition from outside a state may lead to an
> > inner state or history? Further, basically modelling concurrency with dashed
> > lines should be possible (see attached image). 
> > Are we still open for adding this feature with your solution for nested
> > states?
> What alternatives do you think are possible?

1. For the association widget it shouldn't break anything if the 'assocwidget' uses 'widgetaid' and 'widgetbid' of different 'diagram''s.
2. If the 'paint' method of the associationwidget has a pointer to the sub state chart it should be able to find the position to connect to the substate and vice versa.
Comment 32 Ralf Habacker 2019-11-02 11:03:04 UTC
Git commit 537616915defe4c6d44f5ce442e4cea91d1cca0e by Ralf Habacker.
Committed on 02/11/2019 at 11:01.
Pushed by habacker into branch 'master'.

Prevent using the name of a present diagram on creating new combined states

M  +21   -0    umbrello/diagram_utils.cpp
M  +3    -0    umbrello/diagram_utils.h
M  +6    -1    umbrello/umlscene.cpp

https://commits.kde.org/umbrello/537616915defe4c6d44f5ce442e4cea91d1cca0e
Comment 33 Ralf Habacker 2019-11-02 11:03:04 UTC
Git commit 9f760ea292288ba71435ca60a0705ea040ea0aaa by Ralf Habacker.
Committed on 02/11/2019 at 11:02.
Pushed by habacker into branch 'master'.

Enable "return to combined state" context menu entry on creating new combined states

M  +1    -0    umbrello/umlscene.cpp

https://commits.kde.org/umbrello/9f760ea292288ba71435ca60a0705ea040ea0aaa
Comment 34 Ralf Habacker 2019-11-02 11:31:05 UTC
Git commit 66f6ce77c559ff22cecf82f2e89f0a18fef64cb7 by Ralf Habacker.
Committed on 02/11/2019 at 11:30.
Pushed by habacker into branch 'master'.

Force visual widget update on returning to combined state

M  +2    -0    umbrello/umlscene.cpp

https://commits.kde.org/umbrello/66f6ce77c559ff22cecf82f2e89f0a18fef64cb7
Comment 35 Ralf Habacker 2019-11-02 15:14:16 UTC
Git commit 7dc0a909729b17e9e4ad1f90b04a51ea426a6e8d by Ralf Habacker.
Committed on 02/11/2019 at 15:05.
Pushed by habacker into branch 'master'.

Add support for forwarding context menus and double-click events from combined state widget to client

M  +63   -10   umbrello/umlwidgets/statewidget.cpp
M  +4    -0    umbrello/umlwidgets/statewidget.h

https://commits.kde.org/umbrello/7dc0a909729b17e9e4ad1f90b04a51ea426a6e8d
Comment 36 Ralf Habacker 2019-11-02 15:14:17 UTC
Git commit 37ad4131fe1da85735646c252d5492ea7a9e5c7c by Ralf Habacker.
Committed on 02/11/2019 at 15:14.
Pushed by habacker into branch 'master'.

Fix clipped border on paintin client diagram

M  +2    -2    umbrello/umlwidgets/statewidget.cpp

https://commits.kde.org/umbrello/37ad4131fe1da85735646c252d5492ea7a9e5c7c
Comment 37 Ralf Habacker 2019-11-07 23:19:05 UTC
Git commit 93c1632960f0546bb2d2f38a9b35c945fd2eca86 by Ralf Habacker.
Committed on 07/11/2019 at 23:22.
Pushed by habacker into branch 'master'.

Add support for background filling and color of combined state widgets

M  +6    -1    umbrello/umlwidgets/statewidget.cpp

https://commits.kde.org/umbrello/93c1632960f0546bb2d2f38a9b35c945fd2eca86
Comment 38 Ralf Habacker 2019-11-08 00:42:12 UTC
Git commit e3815728c373f151abc75225a93aa3d93ce15e46 by Ralf Habacker.
Committed on 08/11/2019 at 00:44.
Pushed by habacker into branch 'master'.

Move diagram proxy widget support into class DiagramProxyWidget

UMLWidget is now derived from this class to let AssociationWidget
be able to access the new methods too.

M  +1    -0    umbrello/CMakeLists.txt
M  +1    -1    umbrello/umlscene.h
A  +214  -0    umbrello/umlwidgets/diagramproxywidget.cpp     [License: UNKNOWN]  *
A  +52   -0    umbrello/umlwidgets/diagramproxywidget.h     [License: UNKNOWN]  *
M  +16   -120  umbrello/umlwidgets/statewidget.cpp
M  +0    -11   umbrello/umlwidgets/statewidget.h
M  +7    -1    umbrello/umlwidgets/umlwidget.cpp
M  +3    -2    umbrello/umlwidgets/umlwidget.h

The files marked with a * at the end have a non valid license. Please read: https://community.kde.org/Policies/Licensing_Policy and use the headers which are listed at that page.


https://commits.kde.org/umbrello/e3815728c373f151abc75225a93aa3d93ce15e46
Comment 39 Ralf Habacker 2019-11-08 00:42:12 UTC
Git commit d256103ac28dfa2d0fbc850d9cacd0362f8514ca by Ralf Habacker.
Committed on 08/11/2019 at 00:44.
Pushed by habacker into branch 'master'.

Tag direct editing combined states as experimental feature

M  +1    -0    CMakeLists.txt
M  +10   -0    umbrello/umlwidgets/statewidget.cpp

https://commits.kde.org/umbrello/d256103ac28dfa2d0fbc850d9cacd0362f8514ca
Comment 40 Ralf Habacker 2019-11-09 10:47:55 UTC
Git commit e191ce93612695c4c9c0131d6aca46bae2be7f27 by Ralf Habacker.
Committed on 09/11/2019 at 10:46.
Pushed by habacker into branch 'master'.

Move class WidgetRole into separate file and rename it to AssociationWidgetRole

This is a preparation for further refactoring.

M  +1    -0    umbrello/CMakeLists.txt
M  +9    -22   umbrello/umlwidgets/associationwidget.cpp
M  +2    -27   umbrello/umlwidgets/associationwidget.h
A  +26   -0    umbrello/umlwidgets/associationwidgetrole.cpp     [License: GPL (v2+)]
A  +47   -0    umbrello/umlwidgets/associationwidgetrole.h     [License: GPL (v2+)]

https://commits.kde.org/umbrello/e191ce93612695c4c9c0131d6aca46bae2be7f27
Comment 41 Ralf Habacker 2019-11-09 10:47:55 UTC
Git commit 4652ae3ae49e2f7479e8a5012e6e409e6a3553d8 by Ralf Habacker.
Committed on 09/11/2019 at 10:46.
Pushed by habacker into branch 'master'.

Simplify code in AssociationWidget::operator==()

M  +2    -6    umbrello/umlwidgets/associationwidget.cpp

https://commits.kde.org/umbrello/4652ae3ae49e2f7479e8a5012e6e409e6a3553d8
Comment 42 Ralf Habacker 2019-11-09 10:47:55 UTC
Git commit 03b40692ebdf25be4fb085ac37852e9198c95abb by Ralf Habacker.
Committed on 09/11/2019 at 10:45.
Pushed by habacker into branch 'master'.

Remove unused method AssociationWidget::setWidgets()

M  +0    -26   umbrello/umlwidgets/associationwidget.cpp
M  +0    -2    umbrello/umlwidgets/associationwidget.h

https://commits.kde.org/umbrello/03b40692ebdf25be4fb085ac37852e9198c95abb
Comment 43 Ralf Habacker 2019-11-09 10:47:55 UTC
Git commit fe4756bd0855a3a216ea8301bacd7127a2f6011d by Ralf Habacker.
Committed on 09/11/2019 at 10:46.
Pushed by habacker into branch 'master'.

Remove obsolete code in AssociationWidget::widgetLocalIDForRole()

M  +0    -2    umbrello/umlwidgets/associationwidget.cpp

https://commits.kde.org/umbrello/fe4756bd0855a3a216ea8301bacd7127a2f6011d
Comment 44 Ralf Habacker 2019-11-09 11:47:28 UTC
Git commit e4a6b966863cd1d92de49dd0ac4493a2776e6347 by Ralf Habacker.
Committed on 09/11/2019 at 11:45.
Pushed by habacker into branch 'master'.

Move font setting from AssociationWidget into class AssociationWidgetRole

M  +2    -16   umbrello/umlwidgets/associationwidget.cpp
M  +11   -0    umbrello/umlwidgets/associationwidgetrole.cpp
M  +2    -0    umbrello/umlwidgets/associationwidgetrole.h

https://commits.kde.org/umbrello/e4a6b966863cd1d92de49dd0ac4493a2776e6347
Comment 45 Ralf Habacker 2019-11-09 12:02:42 UTC
Git commit 90738bb9ed0d4749c7b2dacf555d1ebd534c2b08 by Ralf Habacker.
Committed on 09/11/2019 at 12:02.
Pushed by habacker into branch 'master'.

Move out widget cleanup into class AssociationWidgetRole

The original code uses the scene of the AssociationWidget instance
for widget removal, where AssociationWidgetRole uses the scene of
the related widget, which is more accurate.

M  +4    -20   umbrello/umlwidgets/associationwidget.cpp
M  +22   -0    umbrello/umlwidgets/associationwidgetrole.cpp
M  +7    -0    umbrello/umlwidgets/associationwidgetrole.h

https://commits.kde.org/umbrello/90738bb9ed0d4749c7b2dacf555d1ebd534c2b08
Comment 46 Ralf Habacker 2019-11-09 16:10:10 UTC
Git commit a37f2c1e6d17ec5174afc2bc126c3d0d28816eaa by Ralf Habacker.
Committed on 09/11/2019 at 16:08.
Pushed by habacker into branch 'master'.

Move the code to select appropriate widgets to the AssociationWidgetRole class

M  +3    -12   umbrello/umlwidgets/associationwidget.cpp
M  +15   -0    umbrello/umlwidgets/associationwidgetrole.cpp
M  +1    -0    umbrello/umlwidgets/associationwidgetrole.h

https://commits.kde.org/umbrello/a37f2c1e6d17ec5174afc2bc126c3d0d28816eaa
Comment 47 Ralf Habacker 2019-11-09 16:10:10 UTC
Git commit 2ba73e22799bc9989f91b165163c95072f48f0a0 by Ralf Habacker.
Committed on 09/11/2019 at 16:08.
Pushed by habacker into branch 'master'.

Move code of corresponding widgets in AssociationWidget::clipSize()  to the AssociationWidgetRole class

M  +2    -17   umbrello/umlwidgets/associationwidget.cpp
M  +12   -0    umbrello/umlwidgets/associationwidgetrole.cpp
M  +1    -0    umbrello/umlwidgets/associationwidgetrole.h

https://commits.kde.org/umbrello/2ba73e22799bc9989f91b165163c95072f48f0a0
Comment 48 Ralf Habacker 2019-11-09 16:10:10 UTC
Git commit 8e90c6582f9dd2c62aeb5689c6787a15ebd02461 by Ralf Habacker.
Committed on 09/11/2019 at 16:08.
Pushed by habacker into branch 'master'.

Move corresponding code in saveToXMI1() and loadFromXMI1() to the AssociationWidgetRole class

M  +4    -35   umbrello/umlwidgets/associationwidget.cpp
M  +23   -0    umbrello/umlwidgets/associationwidgetrole.cpp
M  +4    -0    umbrello/umlwidgets/associationwidgetrole.h

https://commits.kde.org/umbrello/8e90c6582f9dd2c62aeb5689c6787a15ebd02461
Comment 49 Ralf Habacker 2019-11-09 16:10:10 UTC
Git commit 18cded57d1b64501294feb06b0c35a123fba2317 by Ralf Habacker.
Committed on 09/11/2019 at 16:08.
Pushed by habacker into branch 'master'.

Move code related to 'getStartMove' to the AssociationWidgetRole class

M  +4    -20   umbrello/umlwidgets/associationwidget.cpp
M  +10   -0    umbrello/umlwidgets/associationwidgetrole.cpp
M  +2    -0    umbrello/umlwidgets/associationwidgetrole.h

https://commits.kde.org/umbrello/18cded57d1b64501294feb06b0c35a123fba2317
Comment 50 Ralf Habacker 2019-11-09 16:10:10 UTC
Git commit abd178afe50207036f42fa54393a1e5bcfd4db89 by Ralf Habacker.
Committed on 09/11/2019 at 16:07.
Pushed by habacker into branch 'master'.

Move out 'on widget' handling to class AssociationWidgetRole::onWidget

M  +13   -18   umbrello/umlwidgets/associationwidget.cpp
M  +19   -0    umbrello/umlwidgets/associationwidgetrole.cpp
M  +4    -0    umbrello/umlwidgets/associationwidgetrole.h

https://commits.kde.org/umbrello/abd178afe50207036f42fa54393a1e5bcfd4db89
Comment 51 Ralf Habacker 2019-11-19 23:10:00 UTC
Git commit 18bad45690eaf0ca9863aad7089e46ba143a39c2 by Ralf Habacker.
Committed on 19/11/2019 at 22:48.
Pushed by habacker into branch 'release/19.12'.

Move WidgetBase::addAssoc(), removeAssoc() and m_nlocalID to class WidgetBase

To be able to use a widget that is linked to another diagram as a link
end in the AssociationWidget class, some methods must be encapsulated.
In order to use the class WidgetBase as base class of such a
"proxy widget", some methods and class members located in the UMLWidget
have to be moved to WidgetBase.

M  +2    -57   umbrello/umlwidgets/umlwidget.cpp
M  +2    -8    umbrello/umlwidgets/umlwidget.h
M  +73   -0    umbrello/umlwidgets/widgetbase.cpp
M  +13   -0    umbrello/umlwidgets/widgetbase.h

https://invent.kde.org/kde/umbrello/commit/18bad45690eaf0ca9863aad7089e46ba143a39c2
Comment 52 Ralf Habacker 2019-11-24 22:45:44 UTC
The basic support for having a nested chart has been implemented in release/19.12 and could be part of 2.30 releases after fixing possible issues.
For the remaining stuff I suggest to open additional tickets, one for multiple sub chart support and one for association to/from sub charts.
Comment 53 Ralf Habacker 2019-11-27 10:53:47 UTC
Git commit 1e4efa2c86af5840c82d211a069becb7ca35b85e by Ralf Habacker.
Committed on 27/11/2019 at 10:53.
Pushed by habacker into branch 'master'.

Separate context menu items related to linked diagrams from others with separators
Related: bug 413579

M  +5    -2    umbrello/menus/umlscenepopupmenu.cpp
M  +2    -1    umbrello/menus/widgetbasepopupmenu.cpp

https://invent.kde.org/kde/umbrello/commit/1e4efa2c86af5840c82d211a069becb7ca35b85e
Comment 54 Ralf Habacker 2019-11-27 10:53:47 UTC
Git commit caee16334b94f3c969f608e1e0967569bf9b2f4f by Ralf Habacker.
Committed on 27/11/2019 at 10:53.
Pushed by habacker into branch 'master'.

Merge menu selection code from state widget into class DiagramProxyWidget to reduce duplicated code

M  +15   -0    umbrello/umlwidgets/diagramproxywidget.cpp
M  +1    -20   umbrello/umlwidgets/statewidget.cpp

https://invent.kde.org/kde/umbrello/commit/caee16334b94f3c969f608e1e0967569bf9b2f4f