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
Use com.nomagic.magicdraw.core.Project.getOptions().
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); } } }