Reputation: 359
When I create packages programatically Packages does not appear in Project browser Creating classes and attributes are fine, but not Packages. Any suggestions? Thx...
Here is my create Package function:
public void addNewPackage(String packageName, Package parentPackage, string elementType)
{
// for every package under the Root Model->Folder->...
foreach (Package pack in r.Models)
{
foreach (Package package in pack.Packages)
{
foreach (Package innerPackage in package.Packages)
{
// ----addOrUpdateElement
Package myPackage;
// try to find existing class with the given name
// this will only work correctly if there is only one element with the given name, and if it is a class
myPackage = getPackageElementByName(parentPackage, packageName);
if ((myPackage == null))
{
// no existing class, create new
myPackage = parentPackage.Elements.AddNew(packageName, elementType);
}
// set properties
// save class
myPackage.Update();
// refresh elements collection
parentPackage.Elements.Refresh();
innerPackage.Packages.Refresh();
}
package.Packages.Refresh();
package.Update();
}
r.RefreshModelView(pack.PackageID);
}
models.Refresh();
MessageBox.Show("Pack adding Ended: " + models.GetLastError());
}
Upvotes: 2
Views: 450
Reputation: 10504
Looks like you're adding your packages to the Package.Elements
collection. They should be in Package.Packages
. A UML package is represented in EA by both an Element
and a Package
, but the Element
is created automatically when you create a Package
.
So you need to do something like
if (elementType.Equals("Package"))
{
Package myPackage = parentPackage.Packages.AddNew(elementName, elementType);
myPackage.Update();
parentPackage.Packages.Refresh();
}
else
{
Element myElement = parentPackage.Elements.AddNew(elementName, elementType);
myElement.Update();
parentPackage.Elements.Refresh();
}
Upvotes: 3