Version: 1.2.1 (using KDE KDE 3.2.2KDE 1.2) Installed from: SuSE RPMsSuSE RPMs I would like to be able to: Share designs or parts of designs. One case is where Designer1 designs some functionality based on a set of classes, including Class Diagrams, Sequence Diagrams and State Diagrams. Somebody else (Designer2) then gets ready to design another feature, largely based on my design. If Designer1 wishes to "share" his entire design, he can save the whole project. However, 1 - If Designer1 wants to share part of it (e.g., something within one Folder), there is no way to do this? 2 - Other than copying the entire Designer1's .XML project, and then making changes directly to the new project, there isn't a way for Designer2 to "import" the Design1 into a Folder. (It would be best if this "import" would be as read only so that he doesn't change it by accident and then he can "Use" it)? Another case, is where a team uses some 3rd party class library (e.g., ACE). Same thing here - I'd like to build the list of classes from ACE once, and then let other designers use it.
R.Rose solve this problem doing what they call 'controlled units', which means that the part of the serialization file corresponding to a folder (or package) is written in another file, and referenced in the parent file. This way you can edit independently and simultaneously various parts of the model. Would be fine if umbrello implements a thing like that.
At the very least, UMLDoc::getUniqueID() should generate a random value instead of using an up-counter - else there are ID conflicts if the submodel is developed independently of the main model.
Here's my implementation proposal: Each folder can have an optional "external_file" tag attached to it. The external_file value is a file name. The file location would be the same as the main model file. A relative path may be given, which would also be relative to the main model file dir. The external_file directive acts as an "include" statement in programming languages. I.e. the external file is opened and read into the model as though its text appeared in the main model itself. (This means that the external file is not itself a valid standalone XMI file, only an XMI snippet.)
CVS commit by okellogg: Implement saving of folders as separate files. Externalized folders may contain UML objects or diagrams (but no further folders.) For now, the folder files must reside in the same directory as the main model file. Note that marking a folder for externalization does not save the folder to file; that is done upon the next File->Save. FEATURE:87252 M +14 -2 ChangeLog 1.72 M +29 -12 umbrello/listpopupmenu.cpp 1.67 M +8 -0 umbrello/listpopupmenu.h 1.38 M +87 -17 umbrello/umldoc.cpp 1.245 M +13 -3 umbrello/umldoc.h 1.96 M +71 -15 umbrello/umllistview.cpp 1.153 M +2 -1 umbrello/umllistview.h 1.56 M +101 -14 umbrello/umllistviewitem.cpp 1.70 M +15 -1 umbrello/umllistviewitem.h 1.19 M +24 -0 umbrello/umlobject.cpp 1.72 M +6 -0 umbrello/umlobject.h 1.52 M +25 -1 umbrello/umlview.cpp 1.213 M +5 -0 umbrello/umlview.h 1.73
*** Bug 108585 has been marked as a duplicate of this bug. ***
SVN commit 575645 by okellogg: New class UMLFolder gives folders a representation in the document. Change the document model to match the listview appearance: UMLDoc::m_objects is replaced by m_root, an array of modelviews with one element for each of the Logical, UseCase, Component, Deployment, and EntityRelationship models. This prepares for implementing the loading of Rose controlled units. Stuff known to need work: - Support for external folders is temporarily broken - On loading previous XMI files, the contents of user created folders appear okay in the listview but are not located inside the proper UMLFolder in the document - The Datatypes folder appears multiple times in the list view - Diagrams should appear in the XMI.extension of the respective UMLFolder CCBUG:87252 CCBUG:81364 M +2 -0 Makefile.am M +0 -4 artifact.h M +9 -5 association.cpp M +6 -5 classifier.cpp M +4 -6 clipboard/umldrag.cpp M +0 -1 codeimport/import_utils.cpp M +4 -6 dialogs/umloperationdialog.cpp M +4 -3 entity.cpp M +0 -5 enum.h A folder.cpp [License: GPL (v2+)] A folder.h [License: GPL (v2+)] M +9 -1 listpopupmenu.cpp M +7 -0 main.cpp M +2 -1 messagewidget.cpp M +149 -15 model_utils.cpp M +28 -4 model_utils.h M +47 -9 object_factory.cpp M +2 -6 object_factory.h M +6 -11 operation.cpp M +63 -32 package.cpp M +10 -11 package.h M +3 -1 uml.cpp M +230 -222 umldoc.cpp M +32 -20 umldoc.h M +676 -753 umllistview.cpp M +75 -107 umllistview.h M +67 -166 umllistviewitem.cpp M +3 -11 umllistviewitem.h M +63 -7 umlnamespace.h M +14 -46 umlobject.cpp M +1 -7 umlobject.h M +53 -54 umlview.cpp M +2 -1 umlwidget.cpp A uniqueid.cpp [License: no copyright] A uniqueid.h [License: GPL (v2+)] M +0 -3 usecase.h
SVN commit 580517 by okellogg: Now that folders are first class document citizens, we can support external folders more solidly and fully: UMLListViewItem::saveToXMI(): Move saving of external folders to UMLFolder. UMLDoc::loadFolderFile(): Move to UMLFolder. UMLFolder::{save,saveContents}: New. This closes out the last remaining TODO mentioned in commit 575645, "Support for external folders is temporarily broken". CCBUG:87252 M +1 -0 ChangeLog M +129 -66 umbrello/folder.cpp M +35 -0 umbrello/folder.h M +4 -76 umbrello/umldoc.cpp M +1 -11 umbrello/umldoc.h M +45 -11 umbrello/umllistview.cpp M +1 -2 umbrello/umllistview.h M +10 -56 umbrello/umllistviewitem.cpp M +1 -2 umbrello/umllistviewitem.h