(This page was taken from a mail by Bogdan Ciprian Pistol. It's just a unmodified copy from it, so it need testing and rework.)
I (Bogdan) have created a snapshot of my work with some modifications of ArgoUML my private branch to show you a demo of eUML.
To access the demo ArgoUML you will need only an Eclipse environment, there are no other Eclipse plugin dependencies.
This is a custom ArgoUML environment that overlaps the standard ArgoUML projects from Eclipse, so if you already use in your working copy any of these: argouml (src_new), argouml-core-model (src/model) and argouml-core-model-euml (src/model-euml), you will need to switch to the new branches. I use a custom ArgoUML environment because the GSoC deadline is today and I wanted to have a demo with full Undo/Redo support until the deadline. The right way is to use mementos (as Tom and Bob suggested), this will be done when ?UndoManager will be available in ArgoUML for extending it.
To test the demo, checkout or switch to the following branches:
the rest of the Eclipse projects are unchanged.
Clean the projects and rebuild them. There will be some errors in argouml-core-tests and argouml-core-model-mdr because I modified argouml-core-model.
To launch ArgoUML with the eUML model subsystem open the Debug Dialog and use the "ArgoUML UML2-EUML debug b00__1" launch configuration.
You can test the Class Diagram and the Use Case Diagram. The diagrams are mostly working.
Some things you can't do: - in the Class diagram you can't create an operation for a Classifier, you can't create an enumeration, a stereotype, a signal or an exception - in the Use Case diagram you can't create includes or excludes
Some things you can do: - create the elements not listed in the things you can't do - create attributes, associations (bidirectional or unidirectional) but these can behave a little different from the MDR implementation - save & load the project (XMI + diagrams) - undo & redo
Notice that when you make some changes the Edit-Undo and Edit-Redo menu are updated with the new information. For example the names of the elements in the undo/redo commands description (the names of the menu items) are updated when the model changes.
Redoing and undoing the commands will affect only the model. The model will send event notifications of the changes, but because some UML1.x property names changed in UML2.x or ArgoUML doesn't expect this to happen, the ArgoUML application sometimes will forget to update with the new changes. Examples of misbehaviour: Create a class and then undo the creation and then redo, the class will be visible only in the explorer.
The associations are implemented this way: If a navigable association is created between some types that can own attributes (properties) then eUML creates attributes owned by those types that have the 'association' feature set to that association and the 'type' feature indicating at each other's type. If the types cannot have attributes and the association is navigable then the properties are owned by the association in the 'navigableOwnedEnd' feature. If the association is not navigable then the properties are owned by the association.
A UML1.x Association End is a UML2.x Property that has the 'association' feature non-null (Facade#isAAssociationEnd()). A UML1.x Attribute is a UML2.x Property that has the 'class' feature non-null (Facade#isAAttribute()).
Previously in ArgoUML it was not possible to have an association between any types (instances of Type). In eUML associations can be created between any Types.