FolderNameEditor.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. //
  2. // System.Windows.Forms.Design.FolderNameEditor.cs
  3. //
  4. // Author:
  5. // Gert Driesen ([email protected])
  6. // (C) 2004 Ximian, Inc. http://www.ximian.com
  7. //
  8. using System;
  9. using System.ComponentModel;
  10. using System.Drawing.Design;
  11. namespace System.Windows.Forms.Design
  12. {
  13. [MonoTODO]
  14. public class FolderNameEditor : UITypeEditor
  15. {
  16. #region Public Instance Constructors
  17. public FolderNameEditor ()
  18. {
  19. }
  20. #endregion Public Instance Constructors
  21. #region Override implementation of UITypeEditor
  22. public override object EditValue (ITypeDescriptorContext context, IServiceProvider provider, object value)
  23. {
  24. if (folderBrowser == null)
  25. {
  26. folderBrowser = new FolderBrowser ();
  27. InitializeDialog (folderBrowser);
  28. }
  29. if (this.folderBrowser.ShowDialog () != DialogResult.OK)
  30. {
  31. return value;
  32. }
  33. return folderBrowser.DirectoryPath;
  34. }
  35. public override UITypeEditorEditStyle GetEditStyle (ITypeDescriptorContext context)
  36. {
  37. return UITypeEditorEditStyle.Modal;
  38. }
  39. #endregion Override implementation of UITypeEditor
  40. #region Protected Instance Methods
  41. protected virtual void InitializeDialog (FolderBrowser folderBrowser)
  42. {
  43. }
  44. #endregion Protected Instance Methods
  45. #region Private Instance Fields
  46. private FolderBrowser folderBrowser;
  47. #endregion Private Instance Fields
  48. protected enum FolderBrowserFolder
  49. {
  50. Desktop = 0,
  51. Favorites = 6,
  52. MyComputer = 17,
  53. MyDocuments = 5,
  54. MyPictures = 39,
  55. NetAndDialUpConnections = 49,
  56. NetworkNeighborhood = 18,
  57. Printers = 4,
  58. Recent = 8,
  59. SendTo = 9,
  60. StartMenu = 11,
  61. Templates = 21
  62. }
  63. [Flags]
  64. protected enum FolderBrowserStyles
  65. {
  66. BrowseForComputer = 4096,
  67. BrowseForEverything = 16384,
  68. BrowseForPrinter = 8192,
  69. RestrictToDomain = 2,
  70. RestrictToFilesystem = 1,
  71. RestrictToSubfolders = 8,
  72. ShowTextBox = 16
  73. }
  74. protected sealed class FolderBrowser : Component
  75. {
  76. [MonoTODO]
  77. public FolderBrowser ()
  78. {
  79. startLocation = FolderBrowserFolder.Desktop;
  80. publicOptions = FolderBrowserStyles.RestrictToFilesystem;
  81. descriptionText = string.Empty;
  82. directoryPath = string.Empty;
  83. }
  84. #region Public Instance Properties
  85. public string Description
  86. {
  87. get
  88. {
  89. return descriptionText;
  90. }
  91. set
  92. {
  93. descriptionText = (value == null) ? string.Empty : value;
  94. }
  95. }
  96. public string DirectoryPath
  97. {
  98. get
  99. {
  100. return directoryPath;
  101. }
  102. }
  103. public FolderBrowserFolder StartLocation
  104. {
  105. get
  106. {
  107. return startLocation;
  108. }
  109. set
  110. {
  111. startLocation = value;
  112. }
  113. }
  114. public FolderBrowserStyles Style
  115. {
  116. get
  117. {
  118. return publicOptions;
  119. }
  120. set
  121. {
  122. publicOptions = value;
  123. }
  124. }
  125. #endregion Public Instance Properties
  126. #region Public Instance Methods
  127. [MonoTODO]
  128. public DialogResult ShowDialog ()
  129. {
  130. return ShowDialog (null);
  131. }
  132. [MonoTODO]
  133. public DialogResult ShowDialog (IWin32Window owner)
  134. {
  135. throw new NotImplementedException ();
  136. }
  137. #endregion Public Instance Methods
  138. #region Private Instance Fields
  139. private string descriptionText;
  140. private string directoryPath;
  141. private FolderBrowserStyles publicOptions;
  142. private FolderBrowserFolder startLocation;
  143. #endregion Private Instance Fields
  144. }
  145. }
  146. }