PageRenderTime 90ms CodeModel.GetById 27ms RepoModel.GetById 0ms app.codeStats 0ms

/IZWebFileManager/FileManagerControlBase.cs

http://izwebfilemanager.googlecode.com/
C# | 655 lines | 537 code | 100 blank | 18 comment | 45 complexity | 67024a525a4f8160e4b20694bbe06c7b MD5 | raw file
  1. // Copyright (C) 2006 Igor Zelmanovich <izwebfilemanager@gmail.com>
  2. //
  3. // This program is free software; you can redistribute it and/or modify
  4. // it under the terms of the GNU General Public License as published by
  5. // the Free Software Foundation; either version 2 of the License, or
  6. // (at your option) any later version.
  7. //
  8. // This program is distributed in the hope that it will be useful,
  9. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. // GNU General Public License for more details.
  12. //
  13. // You should have received a copy of the GNU General Public License
  14. // along with this program; if not, write to the Free Software
  15. // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  16. using System;
  17. using System.Collections.Generic;
  18. using System.Text;
  19. using System.Web.UI.WebControls;
  20. using System.Web;
  21. using System.Web.UI;
  22. using System.Globalization;
  23. using System.IO;
  24. using System.Diagnostics.CodeAnalysis;
  25. using System.Resources;
  26. using System.ComponentModel;
  27. using System.Collections.Specialized;
  28. using System.Drawing;
  29. using System.Drawing.Design;
  30. namespace IZ.WebFileManager
  31. {
  32. [PersistChildren (false)]
  33. [ParseChildren (true)]
  34. public abstract partial class FileManagerControlBase : WebControl, INamingContainer
  35. {
  36. #region Constructors
  37. public FileManagerControlBase () { }
  38. public FileManagerControlBase (FileManagerController controller) {
  39. if (controller == null)
  40. throw new ArgumentNullException ("controller");
  41. _controller = controller;
  42. }
  43. #endregion
  44. #region Fields
  45. FileManagerController _controller;
  46. static readonly Unit _defaultWidth = Unit.Pixel (600);
  47. static readonly Unit _defaultHeight = Unit.Pixel (400);
  48. static readonly Unit _defaultBorderWidth = Unit.Pixel (1);
  49. static readonly BorderStyle _defaultBorderStyle = BorderStyle.Solid;
  50. static readonly Color _defaultBorderColor = Color.FromArgb (0xACA899);
  51. static readonly Color _defaultBackColor = Color.White;
  52. static readonly Color _defaultForeColor = Color.Black;
  53. #endregion
  54. #region Properties
  55. [Themeable (false)]
  56. [Localizable (false)]
  57. [DefaultValue (false)]
  58. [Category ("Behavior")]
  59. public bool AllowOverwrite {
  60. get { return Controller.AllowOverwrite; }
  61. set { Controller.AllowOverwrite = value; }
  62. }
  63. [Themeable (false)]
  64. [Localizable (false)]
  65. [DefaultValue (true)]
  66. [Category ("Behavior")]
  67. public bool AllowUpload {
  68. get { return Controller.AllowUpload; }
  69. set { Controller.AllowUpload = value; }
  70. }
  71. /// <summary>
  72. /// When is set true, Delete, Move and Rename are not allowed, Default value it true.
  73. /// </summary>
  74. [Themeable (false)]
  75. [Localizable (false)]
  76. [DefaultValue (true)]
  77. [Category ("Behavior")]
  78. public bool AllowDelete {
  79. get { return Controller.AllowDelete; }
  80. set { Controller.AllowDelete = value; }
  81. }
  82. [Themeable (false)]
  83. [Localizable (false)]
  84. [DefaultValue (false)]
  85. [Category ("Behavior")]
  86. public bool ReadOnly {
  87. get { return Controller.ReadOnly; }
  88. set { Controller.ReadOnly = value; }
  89. }
  90. [Themeable (false)]
  91. [Localizable (false)]
  92. [DefaultValue (false)]
  93. [Category ("Behavior")]
  94. public bool DownloadOnDoubleClick {
  95. get { return Controller.DownloadOnDoubleClick; }
  96. set { Controller.DownloadOnDoubleClick = value; }
  97. }
  98. [Browsable (false)]
  99. public FileManagerController Controller {
  100. get {
  101. EnsureChildControls ();
  102. return _controller;
  103. }
  104. }
  105. [DefaultValue ("600px")]
  106. public override Unit Width {
  107. get {
  108. if (ControlStyleCreated)
  109. return ControlStyle.Width;
  110. return _defaultWidth;
  111. }
  112. set { base.Width = value; }
  113. }
  114. [DefaultValue ("400px")]
  115. public override Unit Height {
  116. get {
  117. if (ControlStyleCreated)
  118. return ControlStyle.Height;
  119. return _defaultHeight;
  120. }
  121. set { base.Height = value; }
  122. }
  123. [DefaultValue ("1px")]
  124. public override Unit BorderWidth {
  125. get {
  126. if (ControlStyleCreated)
  127. return ControlStyle.BorderWidth;
  128. return _defaultBorderWidth;
  129. }
  130. set { base.BorderWidth = value; }
  131. }
  132. [DefaultValue ("0xACA899")]
  133. public override Color BorderColor {
  134. get {
  135. if (ControlStyleCreated)
  136. return ControlStyle.BorderColor;
  137. return _defaultBorderColor;
  138. }
  139. set { base.BorderColor = value; }
  140. }
  141. [DefaultValue (BorderStyle.Solid)]
  142. public override BorderStyle BorderStyle {
  143. get {
  144. if (ControlStyleCreated)
  145. return ControlStyle.BorderStyle;
  146. return _defaultBorderStyle;
  147. }
  148. set { base.BorderStyle = value; }
  149. }
  150. [DefaultValue ("White")]
  151. public override Color BackColor {
  152. get {
  153. if (ControlStyleCreated)
  154. return ControlStyle.BackColor;
  155. return _defaultBackColor;
  156. }
  157. set { base.BackColor = value; }
  158. }
  159. [DefaultValue ("Black")]
  160. public override Color ForeColor {
  161. get {
  162. if (ControlStyleCreated)
  163. return ControlStyle.ForeColor;
  164. return _defaultForeColor;
  165. }
  166. set { base.ForeColor = value; }
  167. }
  168. #endregion
  169. #region InitControllerEvents
  170. private void InitControllerEvents (FileManagerController controller) {
  171. controller.ExecuteCommand += new EventHandler<ExecuteCommandEventArgs> (controller_ExecuteCommand);
  172. controller.FileUploaded += new EventHandler<UploadFileEventArgs> (controller_FileUploaded);
  173. controller.FileUploading += new EventHandler<UploadFileCancelEventArgs> (controller_FileUploading);
  174. controller.ItemRenamed += new EventHandler<RenameEventArgs> (controller_ItemRenamed);
  175. controller.ItemRenaming += new EventHandler<RenameCancelEventArgs> (controller_ItemRenaming);
  176. controller.NewDocumentCreated += new EventHandler<NewDocumentEventArgs> (controller_NewDocumentCreated);
  177. controller.NewDocumentCreating += new EventHandler<NewDocumentCancelEventArgs> (controller_NewDocumentCreating);
  178. controller.NewFolderCreated += new EventHandler<NewFolderEventArgs> (controller_NewFolderCreated);
  179. controller.NewFolderCreating += new EventHandler<NewFolderCancelEventArgs> (controller_NewFolderCreating);
  180. controller.SelectedItemsActionComplete += new EventHandler<SelectedItemsActionEventArgs> (controller_SelectedItemsActionComplete);
  181. controller.SelectedItemsAction += new EventHandler<SelectedItemsActionCancelEventArgs> (controller_SelectedItemsAction);
  182. controller.FileDownload += controller_FileDownload;
  183. }
  184. private void controller_FileDownload(object sender, DownloadFileCancelEventArgs e)
  185. {
  186. if (FileDownload != null)
  187. FileDownload(this, e);
  188. }
  189. void controller_SelectedItemsAction (object sender, SelectedItemsActionCancelEventArgs e) {
  190. if (SelectedItemsAction != null)
  191. SelectedItemsAction (this, e);
  192. }
  193. void controller_SelectedItemsActionComplete (object sender, SelectedItemsActionEventArgs e) {
  194. if (SelectedItemsActionComplete != null)
  195. SelectedItemsActionComplete (this, e);
  196. }
  197. void controller_NewFolderCreating (object sender, NewFolderCancelEventArgs e) {
  198. if (NewFolderCreating != null)
  199. NewFolderCreating (this, e);
  200. }
  201. void controller_NewFolderCreated (object sender, NewFolderEventArgs e) {
  202. if (NewFolderCreated != null)
  203. NewFolderCreated (this, e);
  204. }
  205. void controller_NewDocumentCreating (object sender, NewDocumentCancelEventArgs e) {
  206. if (NewDocumentCreating != null)
  207. NewDocumentCreating (this, e);
  208. }
  209. void controller_NewDocumentCreated (object sender, NewDocumentEventArgs e) {
  210. if (NewDocumentCreated != null)
  211. NewDocumentCreated (this, e);
  212. }
  213. void controller_ItemRenaming (object sender, RenameCancelEventArgs e) {
  214. if (ItemRenaming != null)
  215. ItemRenaming (this, e);
  216. }
  217. void controller_ItemRenamed (object sender, RenameEventArgs e) {
  218. if (ItemRenamed != null)
  219. ItemRenamed (this, e);
  220. }
  221. void controller_FileUploading (object sender, UploadFileCancelEventArgs e) {
  222. if (FileUploading != null)
  223. FileUploading (this, e);
  224. }
  225. void controller_FileUploaded (object sender, UploadFileEventArgs e) {
  226. if (FileUploaded != null)
  227. FileUploaded (this, e);
  228. }
  229. void controller_ExecuteCommand (object sender, ExecuteCommandEventArgs e) {
  230. if (ExecuteCommand != null)
  231. ExecuteCommand (this, e);
  232. }
  233. #endregion
  234. public virtual FileManagerItemInfo [] SelectedItems { get { return null; } }
  235. public virtual FileManagerItemInfo CurrentDirectory { get { return null; } }
  236. protected override void OnInit (EventArgs e) {
  237. base.OnInit (e);
  238. RegisterComponent ();
  239. }
  240. protected override HtmlTextWriterTag TagKey {
  241. get { return HtmlTextWriterTag.Div; }
  242. }
  243. protected virtual void RegisterComponent () {
  244. Controller.RegisterComponent (this);
  245. }
  246. protected override void CreateChildControls () {
  247. base.CreateChildControls ();
  248. if (_controller == null) {
  249. _controller = new FileManagerController ();
  250. _controller.ID = "Controller";
  251. InitControllerEvents (_controller);
  252. Controls.Add (_controller);
  253. }
  254. }
  255. #region Methods
  256. internal void RegisterHiddenField (string key, string value) {
  257. string id = ClientID + "_" + key;
  258. Page.ClientScript.RegisterHiddenField (id, value);
  259. }
  260. internal string GetValueFromHiddenField (string key) {
  261. return Page.Request.Form [ClientID + "_" + key];
  262. }
  263. protected internal virtual string RenderContents () {
  264. return null;
  265. }
  266. internal virtual FileManagerItemInfo ResolveFileManagerItemInfo (string path) { return null; }
  267. internal virtual FileManagerItemInfo GetCurrentDirectory () { return null; }
  268. protected override void AddAttributesToRender (HtmlTextWriter writer) {
  269. base.AddAttributesToRender (writer);
  270. if (!ControlStyleCreated)
  271. CreateControlStyle ().AddAttributesToRender (writer);
  272. }
  273. protected override Style CreateControlStyle () {
  274. Style style = new Style ();
  275. style.Font.Names = new string [] { "Tahoma", "Verdana", "Geneva", "Arial", "Helvetica", "sans-serif" };
  276. style.Font.Size = FontUnit.Parse ("11px", null);
  277. style.BorderStyle = _defaultBorderStyle;
  278. style.BorderWidth = _defaultBorderWidth;
  279. style.BorderColor = _defaultBorderColor;
  280. style.BackColor = _defaultBackColor;
  281. style.ForeColor = _defaultForeColor;
  282. style.Width = _defaultWidth;
  283. style.Height = _defaultHeight;
  284. return style;
  285. }
  286. protected override void LoadViewState (object savedState) {
  287. if (savedState == null)
  288. return;
  289. object [] state = (object []) savedState;
  290. base.LoadViewState (state [0]);
  291. if (state [1] != null)
  292. ((IStateManager) ControlStyle).LoadViewState (state [1]);
  293. }
  294. protected override object SaveViewState () {
  295. object [] state = new object [2];
  296. state [0] = base.SaveViewState ();
  297. if (ControlStyleCreated)
  298. state [1] = ((IStateManager) ControlStyle).SaveViewState ();
  299. if (state [0] != null || state [1] != null)
  300. return state;
  301. return null;
  302. }
  303. protected string GetResourceString (string name, string defaultValue) {
  304. return Controller.GetResourceString (name, defaultValue);
  305. }
  306. #endregion
  307. #region FileManagerController Members
  308. [DefaultValue ("")]
  309. [Category ("Action")]
  310. [Themeable (false)]
  311. [Localizable (false)]
  312. public string ClientOpenItemFunction {
  313. get { return Controller.ClientOpenItemFunction; }
  314. set { Controller.ClientOpenItemFunction = value; }
  315. }
  316. [DefaultValue (null)]
  317. [Category ("Appearance")]
  318. [Themeable (true)]
  319. public System.Globalization.CultureInfo Culture {
  320. get { return Controller.Culture; }
  321. set { Controller.Culture = value; }
  322. }
  323. [Category ("Action")]
  324. public event EventHandler<ExecuteCommandEventArgs> ExecuteCommand;
  325. [MergableProperty (false)]
  326. [PersistenceMode (PersistenceMode.InnerProperty)]
  327. [Category ("Behavior")]
  328. [Localizable (false)]
  329. [Themeable (false)]
  330. public FileTypeCollection FileTypes {
  331. get { return Controller.FileTypes; }
  332. }
  333. [Category ("Action")]
  334. public event EventHandler<UploadFileEventArgs> FileUploaded;
  335. [Category ("Action")]
  336. public event EventHandler<UploadFileCancelEventArgs> FileUploading;
  337. [DefaultValue ("")]
  338. [Category ("Behavior")]
  339. [Themeable (false)]
  340. [Localizable (false)]
  341. public string HiddenFiles {
  342. get { return Controller.HiddenFiles; }
  343. set { Controller.HiddenFiles = value; }
  344. }
  345. [DefaultValue ("")]
  346. [Category ("Behavior")]
  347. [Themeable (false)]
  348. [Localizable (false)]
  349. public string HiddenFilesAndFoldersPrefix {
  350. get { return Controller.HiddenFilesAndFoldersPrefix; }
  351. set { Controller.HiddenFilesAndFoldersPrefix = value; }
  352. }
  353. [DefaultValue (false)]
  354. [Category ("Behavior")]
  355. [Themeable (false)]
  356. [Localizable (false)]
  357. public bool ShowHiddenFilesAndFolders {
  358. get { return Controller.ShowHiddenFilesAndFolders; }
  359. set { Controller.ShowHiddenFilesAndFolders = value; }
  360. }
  361. [Category ("Action")]
  362. public event EventHandler<RenameEventArgs> ItemRenamed;
  363. [Category ("Action")]
  364. public event EventHandler<RenameCancelEventArgs> ItemRenaming;
  365. [Category ("Action")]
  366. public event EventHandler<NewDocumentEventArgs> NewDocumentCreated;
  367. [Category ("Action")]
  368. public event EventHandler<NewDocumentCancelEventArgs> NewDocumentCreating;
  369. [Category ("Action")]
  370. public event EventHandler<NewFolderEventArgs> NewFolderCreated;
  371. [Category ("Action")]
  372. public event EventHandler<NewFolderCancelEventArgs> NewFolderCreating;
  373. [DefaultValue ("")]
  374. [Category ("Behavior")]
  375. [Themeable (false)]
  376. [Localizable (false)]
  377. public string ProhibitedFiles {
  378. get { return Controller.ProhibitedFiles; }
  379. set { Controller.ProhibitedFiles = value; }
  380. }
  381. [MergableProperty (false)]
  382. [Category ("Data")]
  383. [PersistenceMode (PersistenceMode.InnerProperty)]
  384. [Localizable (false)]
  385. [Themeable (false)]
  386. public RootDirectoryCollection RootDirectories {
  387. get { return Controller.RootDirectories; }
  388. }
  389. [MergableProperty (false)]
  390. [Category ("Behavior")]
  391. [PersistenceMode (PersistenceMode.InnerProperty)]
  392. [Localizable (false)]
  393. [Themeable (false)]
  394. public SpecialFolderCollection SpecialFolders {
  395. get { return Controller.SpecialFolders; }
  396. }
  397. [Category ("Action")]
  398. public event EventHandler<SelectedItemsActionEventArgs> SelectedItemsActionComplete;
  399. [Category ("Action")]
  400. public event EventHandler<SelectedItemsActionCancelEventArgs> SelectedItemsAction;
  401. [Category ("Action")]
  402. public event EventHandler<DownloadFileCancelEventArgs> FileDownload;
  403. [MergableProperty (false)]
  404. [PersistenceMode (PersistenceMode.InnerProperty)]
  405. [Category ("Behavior")]
  406. [Localizable (false)]
  407. [Themeable (false)]
  408. public NewDocumentTemplateCollection Templates {
  409. get { return Controller.Templates; }
  410. }
  411. [Editor ("System.Web.UI.Design.ImageUrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof (UITypeEditor))]
  412. [DefaultValue ("")]
  413. [UrlProperty]
  414. [Bindable (true)]
  415. [Category ("Appearance")]
  416. public string FileSmallImageUrl {
  417. get { return Controller.FileSmallImageUrl; }
  418. set { Controller.FileSmallImageUrl = value; }
  419. }
  420. [Editor ("System.Web.UI.Design.ImageUrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof (UITypeEditor))]
  421. [DefaultValue ("")]
  422. [UrlProperty]
  423. [Bindable (true)]
  424. [Category ("Appearance")]
  425. public string FileLargeImageUrl {
  426. get { return Controller.FileLargeImageUrl; }
  427. set { Controller.FileLargeImageUrl = value; }
  428. }
  429. [Editor ("System.Web.UI.Design.ImageUrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof (UITypeEditor))]
  430. [DefaultValue ("")]
  431. [UrlProperty]
  432. [Bindable (true)]
  433. [Category ("Appearance")]
  434. public string FolderSmallImageUrl {
  435. get { return Controller.FolderSmallImageUrl; }
  436. set { Controller.FolderSmallImageUrl = value; }
  437. }
  438. [Editor ("System.Web.UI.Design.ImageUrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof (UITypeEditor))]
  439. [DefaultValue ("")]
  440. [UrlProperty]
  441. [Bindable (true)]
  442. [Category ("Appearance")]
  443. public string FolderLargeImageUrl {
  444. get { return Controller.FolderLargeImageUrl; }
  445. set { Controller.FolderLargeImageUrl = value; }
  446. }
  447. [Editor ("System.Web.UI.Design.ImageUrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof (UITypeEditor))]
  448. [DefaultValue ("")]
  449. [UrlProperty]
  450. [Bindable (true)]
  451. [Category ("Appearance")]
  452. public string RootFolderSmallImageUrl {
  453. get { return Controller.RootFolderSmallImageUrl; }
  454. set { Controller.RootFolderSmallImageUrl = value; }
  455. }
  456. [Editor ("System.Web.UI.Design.ImageUrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof (UITypeEditor))]
  457. [DefaultValue ("")]
  458. [UrlProperty]
  459. [Bindable (true)]
  460. [Category ("Appearance")]
  461. public string RootFolderLargeImageUrl {
  462. get { return Controller.RootFolderLargeImageUrl; }
  463. set { Controller.RootFolderLargeImageUrl = value; }
  464. }
  465. [DefaultValue ("")]
  466. [Bindable (true)]
  467. [Category ("Appearance")]
  468. public string ImagesFolder {
  469. get { return Controller.ImagesFolder; }
  470. set { Controller.ImagesFolder = value; }
  471. }
  472. [Editor ("System.Web.UI.Design.ImageUrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof (UITypeEditor))]
  473. [DefaultValue ("")]
  474. [UrlProperty]
  475. [Bindable (true)]
  476. [Category ("Appearance")]
  477. public string DeleteImageUrl {
  478. get { return Controller.DeleteImageUrl; }
  479. set { Controller.DeleteImageUrl = value; }
  480. }
  481. [Editor ("System.Web.UI.Design.ImageUrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof (UITypeEditor))]
  482. [DefaultValue ("")]
  483. [UrlProperty]
  484. [Bindable (true)]
  485. [Category ("Appearance")]
  486. public string RenameImageUrl {
  487. get { return Controller.RenameImageUrl; }
  488. set { Controller.RenameImageUrl = value; }
  489. }
  490. [Editor ("System.Web.UI.Design.ImageUrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof (UITypeEditor))]
  491. [DefaultValue ("")]
  492. [UrlProperty]
  493. [Bindable (true)]
  494. [Category ("Appearance")]
  495. public string CopyImageUrl {
  496. get { return Controller.CopyImageUrl; }
  497. set { Controller.CopyImageUrl = value; }
  498. }
  499. [Editor ("System.Web.UI.Design.ImageUrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof (UITypeEditor))]
  500. [DefaultValue ("")]
  501. [UrlProperty]
  502. [Bindable (true)]
  503. [Category ("Appearance")]
  504. public string MoveImageUrl {
  505. get { return Controller.MoveImageUrl; }
  506. set { Controller.MoveImageUrl = value; }
  507. }
  508. [Editor ("System.Web.UI.Design.ImageUrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof (UITypeEditor))]
  509. [DefaultValue ("")]
  510. [UrlProperty]
  511. [Bindable (true)]
  512. [Category ("Appearance")]
  513. public string FolderUpImageUrl {
  514. get { return Controller.FolderUpImageUrl; }
  515. set { Controller.FolderUpImageUrl = value; }
  516. }
  517. [Editor ("System.Web.UI.Design.ImageUrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof (UITypeEditor))]
  518. [DefaultValue ("")]
  519. [UrlProperty]
  520. [Bindable (true)]
  521. [Category ("Appearance")]
  522. public string NewFolderImageUrl {
  523. get { return Controller.NewFolderImageUrl; }
  524. set { Controller.NewFolderImageUrl = value; }
  525. }
  526. [Editor ("System.Web.UI.Design.ImageUrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof (UITypeEditor))]
  527. [DefaultValue ("")]
  528. [UrlProperty]
  529. [Bindable (true)]
  530. [Category ("Appearance")]
  531. public string ViewImageUrl {
  532. get { return Controller.ViewImageUrl; }
  533. set { Controller.ViewImageUrl = value; }
  534. }
  535. [Editor ("System.Web.UI.Design.ImageUrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof (UITypeEditor))]
  536. [DefaultValue ("")]
  537. [UrlProperty]
  538. [Bindable (true)]
  539. [Category ("Appearance")]
  540. public string ProcessImageUrl {
  541. get { return Controller.ProcessImageUrl; }
  542. set { Controller.ProcessImageUrl = value; }
  543. }
  544. [Editor ("System.Web.UI.Design.ImageUrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof (UITypeEditor))]
  545. [DefaultValue ("")]
  546. [UrlProperty]
  547. [Bindable (true)]
  548. [Category ("Appearance")]
  549. public string RefreshImageUrl {
  550. get { return Controller.RefreshImageUrl; }
  551. set { Controller.RefreshImageUrl = value; }
  552. }
  553. #endregion
  554. }
  555. }