The profile is the body of diagram presentation rules available to all diagram editors. You can extend the profile to create custom presentations.
For a tool supporting only simple presentation rules, those rules could be stored in a preference page, or stored with the diagram properties.
The simplest approach would be to use global settings in a preference page. That would affect the appearance of all diagrams across the board. It would work well enough for simple rules like all methods or all protected members, but for more complex filtering rules such as all methods with a name starting with "test..." and which throw an exception it would be inappropriate to apply them to all diagrams globally.
We could have stored filter and presentation rules as additional attributes of the diagram. That would solve the problem of the preference page changing everything globally. However, given the large number of settings required to enable fine levels of filtering it would mean a lot of work just to set up a single diagram
AgileJ StructureViews uses neither preference pages nor diagram properties to hold the filtering and presentation rules; instead all the rules are held completely independently of all diagrams. This enables us to have: