private void AddUniqueRelations(StyleBuilderRegistration registration, RadStyleSheetRelationList relations, string themeName) { bool added = false; foreach (RadStylesheetRelation relationToCheck in relations) { bool contains = false; foreach (RadStylesheetRelation currentRelation in registration.StylesheetRelations) { if (currentRelation.Equals(relationToCheck)) { contains = true; break; } } if (!contains) { registration.StylesheetRelations.Add(relationToCheck); added = true; } } if (added) { //update ThemeResolutionService registrations ThemeResolutionService.RegisterStyleBuilder(registration, themeName); } }
/// <summary> /// Adds a new <see cref="StyleBuilderRegistration"/>to the collection of registrations /// of the control metadata. /// </summary> /// <param name="registration">The <see cref="StyleBuilderRegistration"/>to add.</param> public virtual void AddStyleBuilderRegistration(StyleBuilderRegistration registration) { if (!this.CheckContainsRegistration(registration)) { this.StyleBuilderRegistrations.Add(registration); } }
/// <summary> /// Removes the <see cref="StyleBuilderRegistration"/>from the collection of registrations /// of the control metadata. /// </summary> /// <param name="registration">The <see cref="StyleBuilderRegistration"/>to remove.</param> public virtual void RemoveStyleBuilderRegistration(StyleBuilderRegistration registration) { if (this.CheckContainsRegistration(registration)) { this.StyleBuilderRegistrations.Remove(registration); } }
/// <summary> /// This method creates and returns an instance of the StyleBuilderRegistration /// class. This method should be called before a control is edited in the Visual Style Builder /// and later accessed when styles for the control are modified. This can happen when a repository item /// is associated with element for particular state or when an element is edited directly from an /// editor. /// </summary> protected virtual void CreateDefaultRegistrations() { Debug.Assert(this.PreviewTreeHandler != null, "No preview control for metadata " + this.DisplayText); StyleBuilderRegistration defaultRegistration = new StyleBuilderRegistration( BuilderRegistrationType.ElementTypeControlType, typeof(RootRadElement).FullName, this.PreviewTreeHandler.ThemeClassName, string.Empty, string.Empty, new DefaultStyleBuilder()); this.AddStyleBuilderRegistration(defaultRegistration); }
private bool CheckContainsRegistration(StyleBuilderRegistration registration) { foreach (StyleBuilderRegistration currentRegistration in this.StyleBuilderRegistrations) { foreach (RadStylesheetRelation relationToCheck in currentRegistration.StylesheetRelations) { foreach (RadStylesheetRelation sourceRelation in registration.StylesheetRelations) { if (relationToCheck.Equals(sourceRelation)) { return(true); } } } } return(false); }
public void RemoveRelationForItem(VsbItemMetadata metadata, BuilderRegistrationType registrationType) { StyleBuilderRegistration registration = this.GetStyleBuilderRegistration(metadata); if (registration == null) { throw new InvalidOperationException("Could not add relation for Item " + metadata.ItemThemeRole + " because no style registration is available."); } foreach (RadStylesheetRelation relation in registration.StylesheetRelations) { if (relation.RegistrationType == registrationType && metadata.ElementThemeType.FullName == relation.ElementType) { registration.StylesheetRelations.Remove(relation); break; } } }
public void AddRelationForItem(VsbItemMetadata metadata, BuilderRegistrationType registrationType) { StyleBuilderRegistration registration = this.GetStyleBuilderRegistration(metadata); if (registration == null) { throw new InvalidOperationException("Could not add relation for Item " + metadata.ItemThemeRole + " because no style registration is available."); } string controlType = string.Empty; if (registrationType == BuilderRegistrationType.ElementTypeControlType || registrationType == BuilderRegistrationType.ElementNameControlType) { controlType = this.PreviewTreeHandler.ThemeClassName; } registration.AddStylesheetRelation(registrationType, metadata.ElementThemeType.FullName, controlType, string.Empty, string.Empty); }
public RadStylesheetRelation FindRelation(VsbItemMetadata metadata, BuilderRegistrationType registrationType) { StyleBuilderRegistration registration = this.GetStyleBuilderRegistration(metadata); if (registration == null) { return(null); } foreach (RadStylesheetRelation relation in registration.StylesheetRelations) { if (relation.RegistrationType == registrationType && metadata.ElementThemeType.FullName == relation.ElementType) { return(relation); } } return(null); }
/// <summary> /// Gets the current <see cref="StyleBuilderRegistration"/> and tries /// to re-merge the states which have defined styles within their /// corresponding state managers. /// </summary> public void ReMergeItemStatesForCurrentRegistration() { StyleBuilderRegistration currentRegistration = this.GetStyleBuilderRegistration(this); this.MergeItemStates((currentRegistration.Builder as DefaultStyleBuilder).Style); }
public virtual string GetUniqueThemeNameIdentifier(StyleBuilderRegistration registration) { return(registration.StylesheetRelations[0].ControlType); }