Example #1
0
		/// <summary>
		/// Create a new <c>PSPanelPropertyChangeArgs</c> with the specified
		/// property enumeration value
		/// </summary>
		/// <param name="property"></param>
		public PSPanelPropertyChangeEventArgs(PSPanelProperties property) {
			this.psPanelProperty = property ;
		}
Example #2
0
		/// <summary>
		/// Preprocessor for <see cref="PropertyChange"/> events
		/// </summary>
		/// <param name="psPanelProperty">The property that changed</param>
		/// <remarks>
		/// Look at each property change and invalidate cached GDI+ objects 
		/// as necessary.
		/// </remarks>
		protected virtual void OnPropertyChange(PSPanelProperties psPanelProperty) {
			switch(psPanelProperty) {
				case PSPanelProperties.HorzAlignmentProperty:
				case PSPanelProperties.VertAlignmentProperty:
					MeasureTextFormat = null ;
					DrawTextFormat = null ;
					break ;

				case PSPanelProperties.TextColorsProperty:
					FontBrush = null ;
					break ;

				case PSPanelProperties.TextHighlightColorsProperty:
					FontHighlightBrush = null ;
					break ;

				case PSPanelProperties.CaptionGradientProperty:
				case PSPanelProperties.CaptionGradientModeProperty:
				case PSPanelProperties.GradientOffsetProperty:
				case PSPanelProperties.CaptionCornerTypeProperty:
					CaptionBrush = null ;
					break ;

				case PSPanelProperties.FontProperty:
					DisabledFont = null ;
					isLayoutDirty = true ;
					break ;
			
				case PSPanelProperties.CaptionProperty:
				case PSPanelProperties.SpacingProperty:
				case PSPanelProperties.CurveRadiusProperty:
				case PSPanelProperties.FitToImageProperty:
				case PSPanelProperties.PSPanelStyleProperty:
				case PSPanelProperties.PanelHeightProperty:
					isLayoutDirty = true ;
					break ;

				case PSPanelProperties.CaptionUnderlineProperty:
					CaptionUnderlinePen = null ;
					// this may not be necessary, but its hard to tell without more logic
					isLayoutDirty = true ;
					break ;

				case PSPanelProperties.PanelGradientProperty:
				case PSPanelProperties.PanelGradientModeProperty:
					PanelBrush = null ;
					break ;

				case PSPanelProperties.IsFixedHeightProperty:
					if (IsFixedHeight) {
						PanelState = PSPanelState.Expanded ;
					}
					break ;

				case PSPanelProperties.PanelStateProperty:
				case PSPanelProperties.ExpandedGlyphsProperty:
				case PSPanelProperties.CollapsedGlyphsProperty:
					break ;

				case PSPanelProperties.EnabledProperty:
					CaptionBrush = null ;
					PanelBrush = null ;
					CaptionUnderlinePen = null ;
					break ;

				case PSPanelProperties.DisabledOpacityProperty:
					if (!Enabled) {
						Invalidate() ;
					}
					break ;
			}

			// forward the event to listeners
			if (propertyChangeListeners != null) {
				propertyChangeListeners(this,new PSPanelPropertyChangeEventArgs(psPanelProperty)) ;
			}

			// invalidate the control
			Invalidate() ;
		}