Bug 87252

Summary: Sharing designs, Folders, 3rd Party imports
Product: [Applications] umbrello Reporter: Larry Weisberg <lweisberg>
Component: generalAssignee: Oliver Kellogg <okellogg>
Status: RESOLVED FIXED    
Severity: wishlist CC: kleagg
Priority: NOR    
Version: 1.2.1   
Target Milestone: ---   
Platform: openSUSE   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Larry Weisberg 2004-08-15 14:12:46 UTC
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.
Comment 1 Marcos Mayorga 2004-12-11 01:01:53 UTC
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. 
Comment 2 Oliver Kellogg 2004-12-11 15:13:46 UTC
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.
Comment 3 Oliver Kellogg 2005-03-21 07:39:02 UTC
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.)
Comment 4 Oliver Kellogg 2005-04-01 10:28:21 UTC
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
Comment 5 Oliver Kellogg 2005-07-05 19:02:42 UTC
*** Bug 108585 has been marked as a duplicate of this bug. ***
Comment 6 Oliver Kellogg 2006-08-21 22:17:51 UTC
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  
Comment 7 Oliver Kellogg 2006-09-03 21:17:00 UTC
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