private static void RoleNameVisibilityChangedEvent(object sender, ElementPropertyChangedEventArgs e) { FactTypeShape factTypeShape = (FactTypeShape)e.ModelElement; if (!factTypeShape.IsDeleted) { DisplayRoleNames display = factTypeShape.DisplayRoleNames; bool shouldBeVisible = display == DisplayRoleNames.On || (display == DisplayRoleNames.UserDefault && OptionsPage.CurrentRoleNameDisplay == RoleNameDisplay.On); foreach (ShapeElement childShape in factTypeShape.RelativeChildShapes) { RoleNameShape roleNameShape; if (null != (roleNameShape = childShape as RoleNameShape) && (shouldBeVisible ^ roleNameShape.IsVisible)) { if (shouldBeVisible) { roleNameShape.Show(); } else { roleNameShape.Hide(); } } } } }
/// <summary> /// Set shape visibility for the given fact type, fact type shape, and diagram /// </summary> private static void UpdateRoleNameDisplay(FactType factType, FactTypeShape factTypeShape, ORMDiagram diagram, bool immediateNotification) { DisplayRoleNames display = factTypeShape.DisplayRoleNames; bool asObjectType = factTypeShape.DisplayAsObjectType; bool shouldDisplay = !asObjectType && display == DisplayRoleNames.On || (display == DisplayRoleNames.UserDefault && OptionsPage.CurrentRoleNameDisplay == RoleNameDisplay.On); bool shouldRemove = asObjectType || display == DisplayRoleNames.Off; foreach (RoleBase roleBase in factType.RoleCollection) { Role role = roleBase as Role; if (role != null && !string.IsNullOrEmpty(role.Name)) { UpdateRoleNameDisplay(role, factType, factTypeShape, diagram, shouldDisplay, shouldRemove, immediateNotification); } } }