Project options
Every project has project related options. These options are stored together with the project data. Options are organized using com.nomagic.magicdraw.properties.Property and com.nomagic.magicdraw.properties.PropertyManager classes.
Project options belong to three categories:
Visible in the Project Options UI window
Invisible in the Project Options UI window
Personal invisible in the Project Options UI window
Personal options are specific to every user in a server project. It means, every user may have different values of the same option if it is marked as "personal". The personal option is treated as a regular option in a local project.
Retrieving Project Options
Retrieving Project Option value
The following example shows how to access project option’s value:
//retrieving a visible in UI option
Property property = project.getOptions().getProperty(ProjectOptions.PROJECT_GENERAL_PROPERTIES,
"TEST_PROPERTY_ID"
);
//retrieving an invisible in UI option
Property property = project.getOptions().getProperty(ProjectOptions.PROJECT_INVISIBLE_PROPERTIES,
"TEST_PROPERTY_ID"
);
//retrieving a personal invisible in UI option
Property property = project.getOptions().getProperty(ProjectOptions.PERSONAL_INVISIBLE_PROPERTIES,
"TEST_PROPERTY_ID"
);
//retrieving an option value
if
(property !=
null
)
{
Object value = property.getValue();
}
Adding custom project options
Configurators are used for defining a new project options.
The following example shows, how to add the project option’s configurator at the plugin’s init() method in order to have the additional project option ”Test Property” for every project.
ProjectOptions.addConfigurator(
new
ProjectOptionsConfigurator()
{
public
void
configure(ProjectOptions projectOptions)
{
com.nomagic.magicdraw.properties.Property property = projectOptions.getProperty(ProjectOptions.PROJECT_GENERAL_PROPERTIES,
"TEST_PROPERTY_ID"
);
if
(property ==
null
)
{
// Create a property, if it does not exist
property =
new
StringProperty(
"TEST_PROPERTY_ID"
,
"description"
);
// Group
property.setGroup(
"MY_GROUP"
);
// The custom resource provider
property.setResourceProvider(
new
PropertyResourceProvider()
{
public
String getString(String string, Property property)
{
if
(
"TEST_PROPERTY_ID"
.equals(string))
{
// Translate ID
return
"Test Property"
;
}
if
(
"TEST_PROPERTY_ID_DESCRIPTION"
.equals(string))
{
// Translate a description
return
"Test Property in My Group"
;
}
if
(
"MY_GROUP"
.equals(string))
{
// Translate a group
return
"My Group"
;
}
return
string;
}
});
// Add a property
projectOptions.addProperty(ProjectOptions.PROJECT_GENERAL_PROPERTIES, property);
}
}
}