using System.Windows.Forms.Design;
using System.Windows.Forms.PropertyGridInternal;
-namespace System.Windows.Forms
-{
- [Designer("System.Windows.Forms.Design.PropertyGridDesigner, " + Consts.AssemblySystem_Design)]
- public class PropertyGrid : System.Windows.Forms.ContainerControl, ComponentModel.Com2Interop.IComPropertyBrowser
- {
+namespace System.Windows.Forms {
+ [Designer("System.Windows.Forms.Design.PropertyGridDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
+ public class PropertyGrid : System.Windows.Forms.ContainerControl, ComponentModel.Com2Interop.IComPropertyBrowser {
#region Private Members
private ContextMenu context_menu;
private MenuItem reset_menuitem;
private MenuItem description_menuitem;
-
+ private object current_property_value;
#endregion // Private Members
-
+
#region Contructors
public PropertyGrid() {
selected_objects = new object[1];
grid_items = new GridItemCollection();
+ property_tabs = new PropertyTabCollection();
line_color = SystemColors.ScrollBar;
line_color = SystemColors.ScrollBar;
property_sort = PropertySort.Categorized;
property_grid_view = new PropertyGridView(this);
- property_grid_view.Dock = DockStyle.Fill;
splitter = new Splitter();
splitter.Dock = DockStyle.Bottom;
help_panel = new Panel();
help_panel.Dock = DockStyle.Bottom;
+ //help_panel.DockPadding.All = 3;
help_panel.Height = 50;
+ help_panel.BackColor = SystemColors.Control;
- help_description_label = new Label();
- help_description_label.Dock = DockStyle.Fill;
- help_description_label.Name = "help_description_label";
- help_description_label.Font = this.Font;
help_title_label = new Label();
- help_title_label.Dock = DockStyle.Top;
+ help_title_label.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
help_title_label.Name = "help_title_label";
- help_description_label.Font = new Font(this.Font,FontStyle.Bold);
+ help_title_label.Font = new Font(this.Font,FontStyle.Bold);
+ help_title_label.Text = "Title";
+ help_title_label.Location = new Point(2,2);
+ help_title_label.Height = 17;
+ help_title_label.Width = help_panel.Width - 4;
+
+
+ help_description_label = new Label();
+ help_description_label.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
+ help_description_label.Name = "help_description_label";
+ help_description_label.Font = this.Font;
+ help_description_label.Text = "The long important Description";
+ help_description_label.Location = new Point(2,help_title_label.Top+help_title_label.Height);
+ help_description_label.Width = help_panel.Width - 4;
+ help_description_label.Height = 17;
help_panel.Controls.Add(help_description_label);
help_panel.Controls.Add(help_title_label);
+ help_panel.Paint+=new PaintEventHandler(help_panel_Paint);
- toolbar = new ToolBar();
+ toolbar = new PropertyToolBar();
toolbar.Dock = DockStyle.Top;
categorized_toolbarbutton = new ToolBarButton();
alphabetic_toolbarbutton = new ToolBarButton();
propertypages_toolbarbutton = new ToolBarButton();
context_menu = new ContextMenu();
- //help_title_label.Dock = DockStyle.Top;
- help_title_label.Name = "help_title_label";
- help_title_label.Location = new Point(2,20);
- help_title_label.Size = new Size(20,20);
-
toolbar_imagelist = new ImageList();
toolbar_imagelist.ColorDepth = ColorDepth.Depth32Bit;
toolbar_imagelist.ImageSize = new System.Drawing.Size(16, 16);
toolbar_imagelist.TransparentColor = System.Drawing.Color.Transparent;
+ toolbar_imagelist.Images.Add( (Image)Locale.GetResource( "propertygrid_sort_category") );
+ toolbar_imagelist.Images.Add( (Image)Locale.GetResource( "propertygrid_sort_alphabetical") );
+ toolbar_imagelist.Images.Add( (Image)Locale.GetResource( "propertygrid_tab_properties") );
toolbar.Appearance = ToolBarAppearance.Flat;
toolbar.AutoSize = false;
toolbar.Buttons.AddRange(new ToolBarButton[] {
- categorized_toolbarbutton,
- alphabetic_toolbarbutton,
- separator_toolbarbutton,
- propertypages_toolbarbutton});
+ categorized_toolbarbutton,
+ alphabetic_toolbarbutton,
+ separator_toolbarbutton,
+ propertypages_toolbarbutton});
toolbar.ButtonSize = new System.Drawing.Size(20, 20);
toolbar.ImageList = toolbar_imagelist;
toolbar.Location = new System.Drawing.Point(0, 0);
- toolbar.Name = "toolbar";
toolbar.ShowToolTips = true;
toolbar.Size = new System.Drawing.Size(256, 27);
toolbar.TabIndex = 0;
toolbar.ButtonClick += new ToolBarButtonClickEventHandler(toolbar_ButtonClick);
+ categorized_toolbarbutton.ImageIndex = 0;
categorized_toolbarbutton.Style = ToolBarButtonStyle.ToggleButton;
- categorized_toolbarbutton.ToolTipText = "Categorized";
- categorized_toolbarbutton.Text = "C";
+ categorized_toolbarbutton.ToolTipText = (string)Locale.GetResource( "Categorized");
+ alphabetic_toolbarbutton.ImageIndex = 1;
alphabetic_toolbarbutton.Style = ToolBarButtonStyle.ToggleButton;
- alphabetic_toolbarbutton.ToolTipText = "Alphabetic";
- alphabetic_toolbarbutton.Text = "A";
- alphabetic_toolbarbutton.ImageIndex = 0;
+ alphabetic_toolbarbutton.ToolTipText = (string)Locale.GetResource( "Alphabetic");
separator_toolbarbutton.Style = ToolBarButtonStyle.Separator;
propertypages_toolbarbutton.Enabled = false;
+ propertypages_toolbarbutton.ImageIndex = 2;
propertypages_toolbarbutton.Style = ToolBarButtonStyle.ToggleButton;
propertypages_toolbarbutton.ToolTipText = "Property Pages";
- propertypages_toolbarbutton.Text = "P";
reset_menuitem = context_menu.MenuItems.Add("Reset");
description_menuitem.Checked = this.HelpVisible;
this.ContextMenu = context_menu;
toolbar.ContextMenu = context_menu;
-
- this.Controls.Add(property_grid_view);
+
+ BorderHelperControl helper = new BorderHelperControl ();
+ helper.Dock = DockStyle.Fill;
+ helper.Controls.Add (property_grid_view);
+
+ this.Controls.Add(helper);
this.Controls.Add(toolbar);
this.Controls.Add(splitter);
this.Controls.Add(help_panel);
this.Name = "PropertyGrid";
this.Size = new System.Drawing.Size(256, 400);
-\r
- has_focus = false;
-
- //TextChanged+=new System.EventHandler(RedrawEvent);
- //ForeColorChanged+=new EventHandler(RedrawEvent);
- //BackColorChanged+=new System.EventHandler(RedrawEvent);
- //FontChanged+=new EventHandler(RedrawEvent);
- //SizeChanged+=new EventHandler(RedrawEvent);
-
-
- SetStyle(ControlStyles.UserPaint, true);
- SetStyle(ControlStyles.AllPaintingInWmPaint, true);
- SetStyle(ControlStyles.ResizeRedraw, true);
- SetStyle(ControlStyles.StandardClick | ControlStyles.StandardDoubleClick, false);
UpdateToolBarButtons();
}
browsable_attributes = value;
}
}
+
+ [Browsable(false)]
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public override bool AutoScroll {
+ get {
+ return base.AutoScroll;
+ }
+ set {
+ base.AutoScroll = value;
+ }
+ }
public override Color BackColor {
get {
}
set {
- if (base.BackColor == value) {
- return;
- }
base.BackColor = value;
+ toolbar.BackColor = value;
+ Refresh ();
+ }
+ }
+
+ [Browsable(false)]
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public override Image BackgroundImage {
+ get {
+ return base.BackgroundImage;
+ }
+ set {
+ base.BackgroundImage = value;
}
}
- [BrowsableAttribute(false)]\r
+ [BrowsableAttribute(false)]
[EditorBrowsableAttribute(EditorBrowsableState.Advanced)]
public virtual bool CanShowCommands {
get {
}
}
- [BrowsableAttribute(false)]\r
+ [BrowsableAttribute(false)]
[EditorBrowsableAttribute(EditorBrowsableState.Advanced)]
[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
public Point ContextMenuDefaultLocation {
return context_menu_default_location;
}
}
-\r
+
+ [Browsable(false)]
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
+ public new Control.ControlCollection Controls {
+ get {
+ return base.Controls;
+ }
+ }
+
+ [Browsable(false)]
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public override Color ForeColor {
+ get {
+ return base.ForeColor;
+ }
+ set {
+ base.ForeColor = value;
+ }
+ }
+
public Color HelpBackColor {
- get
- {
- return help_panel.BackColor;\r
- }\r
- set
- {
- if (help_panel.BackColor == value) {\r
+ get {
+ return help_panel.BackColor;
+ }
+ set {
+ if (help_panel.BackColor == value) {
return;
}
help_panel.ForeColor = value;
}
}
-\r
+
[DefaultValue(true)]
[Localizable(true)]
- public virtual bool HelpVisible {\r
+ public virtual bool HelpVisible {
get {
return help_panel.Visible;
}
line_color = value;
}
}
-\r
- [DefaultValue(PropertySort.Categorized)]
- public PropertySort PropertySort {\r
+
+ [DefaultValue(PropertySort.CategorizedAlphabetical)]
+ public PropertySort PropertySort {
get {
return property_sort;
}
return;
}
- property_sort = value;\r
-
+ property_sort = value;
+
+ UpdateToolBarButtons();
ReflectObjects();
- property_grid_view.Redraw();
+ property_grid_view.Refresh();
if (PropertySortChanged != null) {
PropertySortChanged(this, EventArgs.Empty);
- }\r
+ }
}
}
- [BrowsableAttribute(false)]\r
+ [BrowsableAttribute(false)]
[EditorBrowsableAttribute(EditorBrowsableState.Advanced)]
[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
public PropertyTabCollection PropertyTabs {
}
}
- [BrowsableAttribute(false)]\r
+ [BrowsableAttribute(false)]
[EditorBrowsableAttribute(EditorBrowsableState.Advanced)]
[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
public GridItem SelectedGridItem {
}
GridItem oldItem = selected_grid_item;
- selected_grid_item = value;\r
+ selected_grid_item = value;
this.help_title_label.Text = selected_grid_item.Label;
if (selected_grid_item.PropertyDescriptor != null)
this.help_description_label.Text = selected_grid_item.PropertyDescriptor.Description;
- property_grid_view.Redraw();
- if (SelectedGridItemChanged != null) {
- SelectedGridItemChanged(this, new SelectedGridItemChangedEventArgs( oldItem, selected_grid_item));
- }\r
+
+ current_property_value = value.Value;
+ if (oldItem != null && oldItem.PropertyDescriptor != null)
+ oldItem.PropertyDescriptor.RemoveValueChanged(SelectedObject, new EventHandler(HandlePropertyValueChanged));
+ if (selected_grid_item.PropertyDescriptor != null)
+ selected_grid_item.PropertyDescriptor.AddValueChanged(SelectedObject, new EventHandler(HandlePropertyValueChanged));
+ OnSelectedGridItemChanged(new SelectedGridItemChangedEventArgs( oldItem, selected_grid_item));
+
}
}
+ private void HandlePropertyValueChanged(object sender, EventArgs e) {
+ OnPropertyValueChanged(new PropertyValueChangedEventArgs( selected_grid_item, current_property_value));
+ }
+
[DefaultValue(null)]
- [TypeConverter("System.Windows.Forms.PropertyGrid+SelectedObjectConverter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")]
+ [TypeConverter("System.Windows.Forms.PropertyGrid+SelectedObjectConverter, " + Consts.AssemblySystem_Windows_Forms)]
public object SelectedObject {
get {
return selected_objects[0];
set {
selected_objects = new object[] {value};
+ if (this.SelectedObject == null)
+ return;
+ PropertyTabAttribute[] propTabs = (PropertyTabAttribute[])this.SelectedObject.GetType().GetCustomAttributes(typeof(PropertyTabAttribute),true);
+ if (propTabs.Length > 0) {
+ foreach (Type tabType in propTabs[0].TabClasses) {
+ this.PropertyTabs.AddTabType(tabType);
+ }
+ }
+ RefreshTabs(PropertyTabScope.Component);
ReflectObjects();
- property_grid_view.Redraw();
+ property_grid_view.Refresh();
}
}
}
}
-\r
+
[DefaultValue(true)]
- public virtual bool ToolbarVisible {\r
+ public virtual bool ToolbarVisible {
get {
return toolbar.Visible;
}
}
- [MonoTODO]
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Advanced)]
+ [DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
protected virtual Type DefaultTabType {
get {
- throw new NotImplementedException();
+ return typeof(PropertiesTab);
+ }
+ }
+
+ protected bool DrawFlatToolbar {
+ get {
+ return (toolbar.Appearance == ToolBarAppearance.Flat);
+ }
+ set {
+ if (value)
+ toolbar.Appearance = ToolBarAppearance.Flat;
+ else
+ toolbar.Appearance = ToolBarAppearance.Normal;
}
}
#endregion // Protected Instance Properties
#region Public Instance Methods
- [MonoTODO]
- public void CollapseAllGridItems ()
- {
- throw new NotImplementedException();
+
+ protected override void Dispose(bool val) {
+ base.Dispose(val);
+ }
+
+ public void CollapseAllGridItems () {
+ foreach (GridItem item in this.grid_items) {
+ item.Expanded = false;
+ }
}
- [MonoTODO]
- public void ExpandAllGridItems ()
- {
- throw new NotImplementedException();
+ public void ExpandAllGridItems () {
+ foreach (GridItem item in this.grid_items) {
+ item.Expanded = true;
+ }
}
- public override void Refresh ()
- {
+ public override void Refresh () {
base.Refresh ();
}
+ public void RefreshTabs (PropertyTabScope tabScope) {
+
+ /*button = new ToolBarButton("C");
+ button.ImageIndex = 0;
+ this.toolbar.Buttons.Add(button);
+ button = new ToolBarButton();
+ button.ImageIndex = 0;
+ button.Style = ToolBarButtonStyle.Separator;
+ this.toolbar.Buttons.Add(button);
+ foreach (PropertyTab tab in this.PropertyTabs)
+ {
- [MonoTODO]
- public void RefreshTabs (PropertyTabScope tabScope)
- {
- throw new NotImplementedException();
+ int index = toolbar.ImageList.Images.Count;
+ this.toolbar.ImageList.Images.Add(tab.Bitmap);
+ button = new ToolBarButton();
+ button.ImageIndex = index;
+ this.toolbar.Buttons.Add(button);
+ }*/
+
}
- [MonoTODO]
- public void ResetSelectedProperty()
- {
- throw new NotImplementedException();
+ public void ResetSelectedProperty() {
+ if (selected_grid_item == null || selected_grid_item.PropertyDescriptor == null)
+ return;
+
+ selected_grid_item.PropertyDescriptor.ResetValue(SelectedObject);
}
#endregion // Public Instance Methods
#region Protected Instance Methods
+
+ protected virtual PropertyTab CreatePropertyTab(Type tabType) {
+ return (PropertyTab)Activator.CreateInstance(tabType);
+ }
+
[MonoTODO]
- protected virtual PropertyTab CreatePropertyTab(Type tabType)
- {
+ protected void OnComComponentNameChanged(ComponentRenameEventArgs e) {
throw new NotImplementedException();
}
- protected override void OnFontChanged(EventArgs e)
- {
+ protected override void OnFontChanged(EventArgs e) {
base.OnFontChanged (e);
}
- protected override void OnGotFocus(EventArgs e)
- {
- has_focus=true;
+ protected override void OnGotFocus(EventArgs e) {
base.OnGotFocus(e);
}
- protected override void OnHandleCreated (EventArgs e)
- {
+ protected override void OnHandleCreated (EventArgs e) {
base.OnHandleCreated (e);
}
- protected override void OnHandleDestroyed (EventArgs e)
- {
+ protected override void OnHandleDestroyed (EventArgs e) {
base.OnHandleDestroyed (e);
}
- protected override void OnMouseDown (MouseEventArgs e)
- {
+ protected override void OnMouseDown (MouseEventArgs e) {
base.OnMouseDown (e);
}
- protected override void OnMouseMove (MouseEventArgs e)
- {
+ protected override void OnMouseMove (MouseEventArgs e) {
base.OnMouseMove (e);
}
- protected override void OnMouseUp (MouseEventArgs e)
- {
+ protected override void OnMouseUp (MouseEventArgs e) {
base.OnMouseUp (e);
}
-\r
- protected override void OnPaint (PaintEventArgs pevent)
- {\r
+
+ [MonoTODO]
+ protected void OnNotifyPropertyValueUIItemsChanged(object sender, EventArgs e) {
+ }
+
+ protected override void OnPaint (PaintEventArgs pevent) {
+ pevent.Graphics.FillRectangle(ThemeEngine.Current.ResPool.GetSolidBrush(BackColor), pevent.ClipRectangle);
base.OnPaint (pevent);
}
[MonoTODO]
- protected virtual void OnPropertyTabChanged (PropertyTabChangedEventArgs e)
- {
+ protected virtual void OnPropertyTabChanged (PropertyTabChangedEventArgs e) {
throw new NotImplementedException();
}
- [MonoTODO]
- protected virtual void OnPropertyValueChanged (PropertyValueChangedEventArgs e)
- {
- throw new NotImplementedException();
+ protected virtual void OnPropertyValueChanged (PropertyValueChangedEventArgs e) {
+ if (PropertyValueChanged != null) {
+ PropertyValueChanged(this, e);
+ current_property_value = selected_grid_item.Value;
+ }
}
- protected override void OnResize (EventArgs e)
- {
+ protected override void OnResize (EventArgs e) {
base.OnResize (e);
}
- [MonoTODO]
- protected virtual void OnSelectedGridItemChanged (SelectedGridItemChangedEventArgs e)
- {
- throw new NotImplementedException();
+ protected virtual void OnSelectedGridItemChanged (SelectedGridItemChangedEventArgs e) {
+ if (SelectedGridItemChanged != null) {
+ SelectedGridItemChanged(this, e);
+ }
}
- [MonoTODO]
- protected virtual void OnSelectedObjectsChanged (EventArgs e)
- {
- throw new NotImplementedException();
+ protected virtual void OnSelectedObjectsChanged (EventArgs e) {
+ if (SelectedObjectsChanged != null) {
+ SelectedObjectsChanged(this, e);
+ }
}
- protected override void OnSystemColorsChanged (EventArgs e)
- {
+ protected override void OnSystemColorsChanged (EventArgs e) {
base.OnSystemColorsChanged (e);
}
- protected override void OnVisibleChanged (EventArgs e)
- {
+ protected override void OnVisibleChanged (EventArgs e) {
base.OnVisibleChanged (e);
}
- protected override bool ProcessDialogKey (Keys keyData)
- {
+ protected override bool ProcessDialogKey (Keys keyData) {
return base.ProcessDialogKey (keyData);
}
- protected override void ScaleCore (float dx, float dy)
- {
+ protected override void ScaleCore (float dx, float dy) {
base.ScaleCore (dx, dy);
}
+
+ [MonoTODO]
+ protected void ShowEventsButton(bool value) {
+ throw new NotImplementedException();
+ }
- protected override void WndProc (ref Message m)
- {
+ protected override void WndProc (ref Message m) {
base.WndProc (ref m);
}
#endregion
public event PropertyValueChangedEventHandler PropertyValueChanged;
public event SelectedGridItemChangedEventHandler SelectedGridItemChanged;
public event EventHandler SelectedObjectsChanged;
+
+ [Browsable(false)]
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public new event EventHandler BackgroundImageChanged {
+ add { base.BackgroundImageChanged += value; }
+ remove { base.BackgroundImageChanged -= value; }
+ }
+
+ [Browsable(false)]
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public new event EventHandler ForeColorChanged {
+ add { base.ForeColorChanged += value; }
+ remove { base.ForeColorChanged -= value; }
+ }
#endregion
#region Com2Interop.IComPropertyBrowser Interface
#endregion // Com2Interop.IComPropertyBrowser Interface
#region PropertyTabCollection Class
- public class PropertyTabCollection : ICollection, IEnumerable
- {
+ public class PropertyTabCollection : ICollection, IEnumerable {
+ System.Collections.ArrayList list;
#region Private Constructors
- private PropertyTabCollection() {
+ internal PropertyTabCollection() {
+ list = new ArrayList();
}
#endregion // Private Constructors
- [MonoTODO]\r
public PropertyTab this[int index] {
- get {\r
- throw new NotImplementedException();
+ get {
+ return (PropertyTab)list[index];
}
}
#region ICollection Members
- [MonoTODO]\r
- bool ICollection.IsSynchronized
- {
- get {\r
- // TODO: Add PropertyTabCollection.IsSynchronized getter implementation
- return false;
+ bool ICollection.IsSynchronized {
+ get {
+ return list.IsSynchronized;
}
}
- [MonoTODO]
- void ICollection.CopyTo(Array array, int index)
- {
- // TODO: Add PropertyTabCollection.CopyTo implementation
+ void ICollection.CopyTo(Array array, int index) {
+ list.CopyTo(array, index);
}
- [MonoTODO]\r
- object ICollection.SyncRoot
- {
- get {\r
- // TODO: Add PropertyTabCollection.SyncRoot getter implementation
- return null;
+ object ICollection.SyncRoot {
+ get {
+ return list.SyncRoot;
}
}
#endregion
#region IEnumerable Members
- [MonoTODO]
public IEnumerator GetEnumerator() {
- // TODO: Add PropertyTabCollection.GetEnumerator implementation
- return null;
+ return list.GetEnumerator();
}
#endregion
#region ICollection Members
- [MonoTODO]\r
public int Count {
- get {\r
- // TODO: Add PropertyTabCollection.Count getter implementation
- return 0;
+ get {
+ return list.Count;
}
}
#endregion
+
+ #region Public Instance Methods
+ public void AddTabType(System.Type propertyTabType) {
+ list.Add(Activator.CreateInstance(propertyTabType));
+ }
+ [MonoTODO]
+ public void AddTabType(System.Type propertyTabType,
+ System.ComponentModel.PropertyTabScope tabScope) {
+ AddTabType(propertyTabType);
+ }
+ [MonoTODO]
+ public void Clear(System.ComponentModel.PropertyTabScope tabScope) {
+ throw new NotImplementedException();
+ }
+ [MonoTODO]
+ public void RemoveTabType(System.Type propertyTabType) {
+ throw new NotImplementedException();
+ }
+ #endregion
}
#endregion // PropertyTabCollection Class
#region Private Helper Methods
-\r
- private void toolbar_ButtonClick (object sender, ToolBarButtonClickEventArgs e)
- {
- if (e.Button == alphabetic_toolbarbutton) {\r
- this.PropertySort = PropertySort.Alphabetical;\r
+
+ private void toolbar_ButtonClick (object sender, ToolBarButtonClickEventArgs e) {
+ if (e.Button == alphabetic_toolbarbutton) {
+ this.PropertySort = PropertySort.Alphabetical;
}
- else if (e.Button == categorized_toolbarbutton) {\r
+ else if (e.Button == categorized_toolbarbutton) {
this.PropertySort = PropertySort.Categorized;
}
- UpdateToolBarButtons();
- ReflectObjects();
- property_grid_view.Redraw();
}
-\r
- internal void UpdateToolBarButtons ()
- {
- if (PropertySort == PropertySort.Alphabetical) {\r
+
+ internal void UpdateToolBarButtons () {
+ if (PropertySort == PropertySort.Alphabetical) {
categorized_toolbarbutton.Pushed = false;
- alphabetic_toolbarbutton.Pushed = true;\r
+ alphabetic_toolbarbutton.Pushed = true;
}
- else if (PropertySort == PropertySort.Categorized) {\r
+ else if (PropertySort == PropertySort.Categorized) {
categorized_toolbarbutton.Pushed = true;
- alphabetic_toolbarbutton.Pushed = false;\r
+ alphabetic_toolbarbutton.Pushed = false;
}
- else {\r
+ else {
categorized_toolbarbutton.Pushed = false;
alphabetic_toolbarbutton.Pushed = false;
}
}
- private void OnResetPropertyClick (object sender, EventArgs e)
- {
+ private void OnResetPropertyClick (object sender, EventArgs e) {
ResetSelectedProperty();
}
- private void OnDescriptionClick (object sender, EventArgs e)
- {
+ private void OnDescriptionClick (object sender, EventArgs e) {
this.HelpVisible = !this.HelpVisible;
description_menuitem.Checked = this.HelpVisible;
}
-\r
- private void ReflectObjects ()
- {
- GridItemCollection alphabetical_grid_items = new GridItemCollection();
- GridItemCollection category_grid_items = new GridItemCollection();
+
+ private void ReflectObjects () {
+ grid_items = new GridItemCollection();
foreach (object obj in selected_objects) {
if (obj != null) {
- PopulateGridItemCollection(obj,alphabetical_grid_items, category_grid_items);\r
+ PopulateGridItemCollection(obj,grid_items, true);
}
}
- if (PropertySort == PropertySort.Alphabetical) {
- grid_items = alphabetical_grid_items;
+ }
+
+ private void PopulateGridItemCollection (object obj, GridItemCollection grid_item_coll, bool recurse) {
+ if (!recurse && !TypeDescriptor.GetConverter(obj).GetPropertiesSupported())
+ return;
+ PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(obj);
+ foreach (PropertyDescriptor property in properties) {
+ if (property.IsBrowsable) {
+ GridEntry grid_entry = new GridEntry(obj, property);
+ if (property_sort == PropertySort.Alphabetical || !recurse) {
+ if (grid_item_coll[property.Name] == null)
+ grid_item_coll.Add(property.Name,grid_entry);
+ }
+ else if (property_sort == PropertySort.Categorized || property_sort == PropertySort.CategorizedAlphabetical) {
+
+ string category = property.Category;
+ GridItem cat_item = grid_item_coll[category];
+ if (cat_item == null) {
+ cat_item = new CategoryGridEntry(category);
+ grid_item_coll.Add(category,cat_item);
+ }
+ cat_item.GridItems.Add(property.Name,grid_entry);
+ }
+ if (recurse) {
+ object propObj = property.GetValue(obj);
+ if (propObj != null)
+ PopulateGridItemCollection(propObj,grid_entry.GridItems, false);
+ }
+ grid_entry.Expanded = false;
+ }
}
- // need to use categories
- else {
- grid_items = category_grid_items;
+ }
+
+ private void help_panel_Paint(object sender, PaintEventArgs e) {
+ e.Graphics.FillRectangle(ThemeEngine.Current.ResPool.GetSolidBrush(help_panel.BackColor), help_panel.ClientRectangle );
+ e.Graphics.DrawRectangle(SystemPens.ControlDark, 0,0,help_panel.Width-1,help_panel.Height-1 );
+ }
+
+ #endregion // Private Helper Methods
+
+
+#if NET_2_0
+
+ public bool UseCompatibleTextRendering {
+ get {
+ return use_compatible_text_rendering;
+ }
+
+ set {
+ use_compatible_text_rendering = value;
}
}
+#endif
+
+ // as we can not change the color for BorderStyle.FixedSingle and we need the correct
+ // ClientRectangle so that the ScrollBar doesn't draw over the border we need this class
+ internal class BorderHelperControl : Control {
- private void PopulateGridItemCollection (object obj, GridItemCollection grid_item_coll, GridItemCollection category_grid_item_coll)
- {
- PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(obj);\r
- for (int i = 0; i < properties.Count;i++) {
- bool not_browseable = properties[i].Attributes.Contains(new BrowsableAttribute(false));
- if (!not_browseable) {\r
- GridEntry grid_entry = new GridEntry(obj, properties[i]);\r
- grid_item_coll.Add(properties[i].Name,grid_entry);
+ public BorderHelperControl ()
+ {
+ BackColor = ThemeEngine.Current.ColorWindow;
+ }
- string category = properties[i].Category;
- GridItem cat_item = category_grid_item_coll[category];
- if (cat_item == null) {
- cat_item = new CategoryGridEntry(category);
- category_grid_item_coll.Add(category,cat_item);
- }
- cat_item.GridItems.Add(properties[i].Name,grid_entry);
+ protected override void OnPaint (PaintEventArgs e)
+ {
+ e.Graphics.DrawRectangle (SystemPens.ControlDark, 0 , 0 , Width - 1, Height - 1);
+ base.OnPaint (e);
+ }
+
+ protected override void OnSizeChanged (EventArgs e)
+ {
+ if (Controls.Count == 1) {
+ Control control = Controls [0];
+
+ if (control.Location.X != 1 || control.Location.Y != 1)
+ control.Location = new Point (1, 1);
+
+ control.Width = ClientRectangle.Width - 2;
+ control.Height = ClientRectangle.Height - 2;
+
+ Refresh ();
}
+ base.OnSizeChanged (e);
}
- }\r
-\r
- #endregion // Private Helper Methods
+ }
+
+ // needed! this little helper makes it possible to draw a different toolbar border
+ // and toolbar backcolor in ThemeWin32Classic
+ internal class PropertyToolBar : ToolBar {}
}
}