PageRenderTime 206ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/IZWebFileManager/FileManager.cs

http://izwebfilemanager.googlecode.com/
C# | 992 lines | 843 code | 112 blank | 37 comment | 121 complexity | 992528bba0ec3f88c89198c2bc5f8d79 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;
  20. using System.Web.UI.WebControls;
  21. using System.Drawing;
  22. using System.ComponentModel;
  23. using IZ.WebFileManager.Components;
  24. using System.Web;
  25. using System.Collections.Specialized;
  26. using System.Drawing.Design;
  27. namespace IZ.WebFileManager
  28. {
  29. [ToolboxData ("<{0}:FileManager runat=\"server\" width=\"400\" height=\"300\"></{0}:FileManager>")]
  30. public sealed class FileManager : FileManagerControlBase, IPostBackEventHandler
  31. {
  32. #region Fields
  33. FileView _fileView;
  34. FolderTree _folderTree;
  35. Menu _toolBar;
  36. BorderedPanelStyle _addressBarStyle;
  37. BorderedPanelStyle _addressTextBoxStyle;
  38. BorderedPanelStyle _toolbarStyle;
  39. BorderedPanelStyle _toolbarButtonStyle;
  40. BorderedPanelStyle _toolbarButtonHoverStyle;
  41. BorderedPanelStyle _toolbarButtonPressedStyle;
  42. ToolbarOptions _toolbarOptions;
  43. CustomToolbarButtonCollection _cusomToolbarButtonCollection;
  44. BorderedPanelStyle _defaultToolbarStyle;
  45. BorderedPanelStyle _defaultToolbarButtonStyle;
  46. BorderedPanelStyle _defaultToolbarButtonHoverStyle;
  47. BorderedPanelStyle _defaultToolbarButtonPressedStyle;
  48. #endregion
  49. #region Events
  50. [Category ("Action")]
  51. public event CommandEventHandler ToolbarCommand;
  52. #endregion
  53. #region Properties
  54. [Themeable (false)]
  55. [Localizable (false)]
  56. [DefaultValue (true)]
  57. [Category ("Appearance")]
  58. public bool ShowToolBar {
  59. get { return ViewState ["ShowToolBar"] == null ? true : (bool) ViewState ["ShowToolBar"]; }
  60. set { ViewState ["ShowToolBar"] = value; }
  61. }
  62. [Themeable (false)]
  63. [Localizable (false)]
  64. [DefaultValue (true)]
  65. [Category ("Appearance")]
  66. public bool ShowAddressBar {
  67. get { return ViewState ["ShowAddressBar"] == null ? true : (bool) ViewState ["ShowAddressBar"]; }
  68. set { ViewState ["ShowAddressBar"] = value; }
  69. }
  70. [Themeable (false)]
  71. [Localizable (false)]
  72. [DefaultValue (true)]
  73. [Category ("Appearance")]
  74. public bool ShowUploadBar {
  75. get { return ViewState ["ShowUploadBar"] == null ? true : (bool) ViewState ["ShowUploadBar"]; }
  76. set { ViewState ["ShowUploadBar"] = value; }
  77. }
  78. [Category ("Appearance")]
  79. [PersistenceMode (PersistenceMode.InnerProperty)]
  80. [Localizable (false)]
  81. [Themeable (true)]
  82. public ToolbarOptions ToolbarOptions {
  83. get {
  84. if (_toolbarOptions == null) {
  85. _toolbarOptions = new ToolbarOptions (ViewState);
  86. }
  87. return _toolbarOptions;
  88. }
  89. }
  90. [MergableProperty (false)]
  91. [PersistenceMode (PersistenceMode.InnerProperty)]
  92. [Category ("Behavior")]
  93. [Localizable (false)]
  94. [Themeable (false)]
  95. public CustomToolbarButtonCollection CustomToolbarButtons {
  96. get {
  97. if (_cusomToolbarButtonCollection == null) {
  98. _cusomToolbarButtonCollection = new CustomToolbarButtonCollection ();
  99. if (IsTrackingViewState)
  100. ((IStateManager) _cusomToolbarButtonCollection).TrackViewState ();
  101. }
  102. return _cusomToolbarButtonCollection;
  103. }
  104. }
  105. FileView FileView {
  106. get {
  107. EnsureChildControls ();
  108. return _fileView;
  109. }
  110. }
  111. FolderTree FolderTree {
  112. get {
  113. EnsureChildControls ();
  114. return _folderTree;
  115. }
  116. }
  117. public override FileManagerItemInfo [] SelectedItems {
  118. get {
  119. return FileView.SelectedItems;
  120. }
  121. }
  122. [Editor ("System.Web.UI.Design.ImageUrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof (UITypeEditor))]
  123. [DefaultValue ("")]
  124. [UrlProperty]
  125. [Bindable (true)]
  126. [Category ("Appearance")]
  127. public string SplitterImageUrl {
  128. get { return ViewState ["SplitterImageUrl"] == null ? String.Empty : (string) ViewState ["SplitterImageUrl"]; }
  129. set { ViewState ["SplitterImageUrl"] = value; }
  130. }
  131. // TODO
  132. [PersistenceMode (PersistenceMode.InnerProperty)]
  133. [Category ("Appearance")]
  134. internal BorderedPanelStyle AddressBarStyle {
  135. get {
  136. if (_addressBarStyle == null) {
  137. _addressBarStyle = new BorderedPanelStyle ();
  138. _addressBarStyle.PaddingLeft = Unit.Pixel (3);
  139. _addressBarStyle.PaddingTop = Unit.Pixel (2);
  140. _addressBarStyle.PaddingBottom = Unit.Pixel (2);
  141. _addressBarStyle.PaddingRight = Unit.Pixel (2);
  142. if (IsTrackingViewState)
  143. ((IStateManager) _addressBarStyle).TrackViewState ();
  144. }
  145. return _addressBarStyle;
  146. }
  147. }
  148. // TODO
  149. [PersistenceMode (PersistenceMode.InnerProperty)]
  150. [Category ("Appearance")]
  151. internal BorderedPanelStyle AddressTextBoxStyle {
  152. get {
  153. if (_addressTextBoxStyle == null) {
  154. _addressTextBoxStyle = new BorderedPanelStyle ();
  155. _addressTextBoxStyle.Font.Names = new string [] { "Tahoma", "Verdana", "Geneva", "Arial", "Helvetica", "sans-serif" };
  156. _addressTextBoxStyle.Font.Size = FontUnit.Parse ("11px", null);
  157. _addressTextBoxStyle.Width = Unit.Percentage (98);
  158. _addressTextBoxStyle.BorderStyle = BorderStyle.Solid;
  159. _addressTextBoxStyle.BorderWidth = Unit.Pixel (1);
  160. _addressTextBoxStyle.BorderColor = Color.FromArgb (0xACA899);
  161. _addressTextBoxStyle.PaddingLeft = Unit.Pixel (2);
  162. _addressTextBoxStyle.PaddingTop = Unit.Pixel (2);
  163. _addressTextBoxStyle.PaddingBottom = Unit.Pixel (2);
  164. if (IsTrackingViewState)
  165. ((IStateManager) _addressTextBoxStyle).TrackViewState ();
  166. }
  167. return _addressTextBoxStyle;
  168. }
  169. }
  170. [PersistenceMode (PersistenceMode.InnerProperty)]
  171. [Category ("Appearance")]
  172. public BorderedPanelStyle ToolbarStyle {
  173. get {
  174. if (_toolbarStyle == null) {
  175. _toolbarStyle = new BorderedPanelStyle ();
  176. if (IsTrackingViewState)
  177. ((IStateManager) _toolbarStyle).TrackViewState ();
  178. }
  179. return _toolbarStyle;
  180. }
  181. }
  182. bool ToolbarStyleCreated {
  183. get { return _toolbarStyle != null; }
  184. }
  185. BorderedPanelStyle DefaultToolbarStyle {
  186. get {
  187. if (_defaultToolbarStyle == null) {
  188. _defaultToolbarStyle = new BorderedPanelStyle ();
  189. _defaultToolbarStyle.ForeColor = Color.Black;
  190. _defaultToolbarStyle.Font.Names = new string [] { "Tahoma", "Verdana", "Geneva", "Arial", "Helvetica", "sans-serif" };
  191. _defaultToolbarStyle.Font.Size = FontUnit.Parse ("11px", null);
  192. _defaultToolbarStyle.Height = Unit.Pixel (24);
  193. _defaultToolbarStyle.BackImageUrl = Page.ClientScript.GetWebResourceUrl (GetType (), "IZ.WebFileManager.resources.toolbarbg.gif");
  194. _defaultToolbarStyle.BackColor = Color.FromArgb (0xEBEADB);
  195. _defaultToolbarStyle.PaddingLeft = Unit.Pixel (3);
  196. _defaultToolbarStyle.PaddingRight = Unit.Pixel (3);
  197. _defaultToolbarStyle.PaddingTop = Unit.Pixel (2);
  198. }
  199. return _defaultToolbarStyle;
  200. }
  201. }
  202. [PersistenceMode (PersistenceMode.InnerProperty)]
  203. [Category ("Appearance")]
  204. public BorderedPanelStyle ToolbarButtonStyle {
  205. get {
  206. if (_toolbarButtonStyle == null) {
  207. _toolbarButtonStyle = new BorderedPanelStyle ();
  208. if (IsTrackingViewState)
  209. ((IStateManager) _toolbarButtonStyle).TrackViewState ();
  210. }
  211. return _toolbarButtonStyle;
  212. }
  213. }
  214. bool ToolbarButtonStyleCreated {
  215. get { return _toolbarButtonStyle != null; }
  216. }
  217. BorderedPanelStyle DefaultToolbarButtonStyle {
  218. get {
  219. if (_defaultToolbarButtonStyle == null) {
  220. _defaultToolbarButtonStyle = new BorderedPanelStyle ();
  221. _defaultToolbarButtonStyle.OuterBorderStyle = OuterBorderStyle.AllSides;
  222. _defaultToolbarButtonStyle.OuterBorderTopWidth = Unit.Pixel (3);
  223. _defaultToolbarButtonStyle.OuterBorderLeftWidth = Unit.Pixel (3);
  224. _defaultToolbarButtonStyle.OuterBorderRightWidth = Unit.Pixel (3);
  225. _defaultToolbarButtonStyle.OuterBorderBottomWidth = Unit.Pixel (3);
  226. _defaultToolbarButtonStyle.ForeColor = Color.Black;
  227. }
  228. return _defaultToolbarButtonStyle;
  229. }
  230. }
  231. [PersistenceMode (PersistenceMode.InnerProperty)]
  232. [Category ("Appearance")]
  233. public BorderedPanelStyle ToolbarButtonHoverStyle {
  234. get {
  235. if (_toolbarButtonHoverStyle == null) {
  236. _toolbarButtonHoverStyle = new BorderedPanelStyle ();
  237. if (IsTrackingViewState)
  238. ((IStateManager) _toolbarButtonHoverStyle).TrackViewState ();
  239. }
  240. return _toolbarButtonHoverStyle;
  241. }
  242. }
  243. bool ToolbarButtonHoverStyleCreated {
  244. get { return _toolbarButtonHoverStyle != null; }
  245. }
  246. BorderedPanelStyle DefaultToolbarButtonHoverStyle {
  247. get {
  248. if (_defaultToolbarButtonHoverStyle == null) {
  249. _defaultToolbarButtonHoverStyle = new BorderedPanelStyle ();
  250. _defaultToolbarButtonHoverStyle.ForeColor = Color.Black;
  251. _defaultToolbarButtonHoverStyle.BackColor = Color.FromArgb (0xf5f5ef);
  252. _defaultToolbarButtonHoverStyle.OuterBorderLeftBottomCornerImageUrl = Page.ClientScript.GetWebResourceUrl (GetType (), "IZ.WebFileManager.resources.toolbarbtnhover_LB.gif");
  253. _defaultToolbarButtonHoverStyle.OuterBorderRightBottomCornerImageUrl = Page.ClientScript.GetWebResourceUrl (GetType (), "IZ.WebFileManager.resources.toolbarbtnhover_RB.gif");
  254. _defaultToolbarButtonHoverStyle.OuterBorderLeftTopCornerImageUrl = Page.ClientScript.GetWebResourceUrl (GetType (), "IZ.WebFileManager.resources.toolbarbtnhover_LT.gif");
  255. _defaultToolbarButtonHoverStyle.OuterBorderRightTopCornerImageUrl = Page.ClientScript.GetWebResourceUrl (GetType (), "IZ.WebFileManager.resources.toolbarbtnhover_RT.gif");
  256. _defaultToolbarButtonHoverStyle.OuterBorderTopImageUrl = Page.ClientScript.GetWebResourceUrl (GetType (), "IZ.WebFileManager.resources.toolbarbtnhover_T.gif");
  257. _defaultToolbarButtonHoverStyle.OuterBorderBottomImageUrl = Page.ClientScript.GetWebResourceUrl (GetType (), "IZ.WebFileManager.resources.toolbarbtnhover_B.gif");
  258. _defaultToolbarButtonHoverStyle.OuterBorderLeftImageUrl = Page.ClientScript.GetWebResourceUrl (GetType (), "IZ.WebFileManager.resources.toolbarbtnhover_L.gif");
  259. _defaultToolbarButtonHoverStyle.OuterBorderRightImageUrl = Page.ClientScript.GetWebResourceUrl (GetType (), "IZ.WebFileManager.resources.toolbarbtnhover_R.gif");
  260. }
  261. return _defaultToolbarButtonHoverStyle;
  262. }
  263. }
  264. [PersistenceMode (PersistenceMode.InnerProperty)]
  265. [Category ("Appearance")]
  266. public BorderedPanelStyle ToolbarButtonPressedStyle {
  267. get {
  268. if (_toolbarButtonPressedStyle == null) {
  269. _toolbarButtonPressedStyle = new BorderedPanelStyle ();
  270. if (IsTrackingViewState)
  271. ((IStateManager) _toolbarButtonPressedStyle).TrackViewState ();
  272. }
  273. return _toolbarButtonPressedStyle;
  274. }
  275. }
  276. bool ToolbarButtonPressedStyleCreated {
  277. get { return _toolbarButtonPressedStyle != null; }
  278. }
  279. BorderedPanelStyle DefaultToolbarButtonPressedStyle {
  280. get {
  281. if (_defaultToolbarButtonPressedStyle == null) {
  282. _defaultToolbarButtonPressedStyle = new BorderedPanelStyle ();
  283. _defaultToolbarButtonPressedStyle.ForeColor = Color.Black;
  284. _defaultToolbarButtonPressedStyle.BackColor = Color.FromArgb (0xe3e3db);
  285. _defaultToolbarButtonPressedStyle.OuterBorderLeftBottomCornerImageUrl = Page.ClientScript.GetWebResourceUrl (GetType (), "IZ.WebFileManager.resources.toolbarbtndown_LB.gif");
  286. _defaultToolbarButtonPressedStyle.OuterBorderRightBottomCornerImageUrl = Page.ClientScript.GetWebResourceUrl (GetType (), "IZ.WebFileManager.resources.toolbarbtndown_RB.gif");
  287. _defaultToolbarButtonPressedStyle.OuterBorderLeftTopCornerImageUrl = Page.ClientScript.GetWebResourceUrl (GetType (), "IZ.WebFileManager.resources.toolbarbtndown_LT.gif");
  288. _defaultToolbarButtonPressedStyle.OuterBorderRightTopCornerImageUrl = Page.ClientScript.GetWebResourceUrl (GetType (), "IZ.WebFileManager.resources.toolbarbtndown_RT.gif");
  289. _defaultToolbarButtonPressedStyle.OuterBorderTopImageUrl = Page.ClientScript.GetWebResourceUrl (GetType (), "IZ.WebFileManager.resources.toolbarbtndown_T.gif");
  290. _defaultToolbarButtonPressedStyle.OuterBorderBottomImageUrl = Page.ClientScript.GetWebResourceUrl (GetType (), "IZ.WebFileManager.resources.toolbarbtndown_B.gif");
  291. _defaultToolbarButtonPressedStyle.OuterBorderLeftImageUrl = Page.ClientScript.GetWebResourceUrl (GetType (), "IZ.WebFileManager.resources.toolbarbtndown_L.gif");
  292. _defaultToolbarButtonPressedStyle.OuterBorderRightImageUrl = Page.ClientScript.GetWebResourceUrl (GetType (), "IZ.WebFileManager.resources.toolbarbtndown_R.gif");
  293. }
  294. return _defaultToolbarButtonPressedStyle;
  295. }
  296. }
  297. [Bindable (true)]
  298. [Category ("Behavior")]
  299. [DefaultValue (false)]
  300. [Localizable (false)]
  301. public bool UseLinkToOpenItem {
  302. get { return FileView.UseLinkToOpenItem; }
  303. set { FileView.UseLinkToOpenItem = value; }
  304. }
  305. [Bindable (true)]
  306. [Category ("Behavior")]
  307. [DefaultValue ("_blank")]
  308. [Localizable (false)]
  309. public string LinkToOpenItemTarget {
  310. get { return FileView.LinkToOpenItemTarget; }
  311. set { FileView.LinkToOpenItemTarget = value; }
  312. }
  313. [Bindable (true)]
  314. [Category ("Appearance")]
  315. [DefaultValue (FileViewRenderMode.Icons)]
  316. [Localizable (false)]
  317. public FileViewRenderMode FileViewMode {
  318. get { return FileView.View; }
  319. set { FileView.View = value; }
  320. }
  321. [PersistenceMode (PersistenceMode.InnerProperty)]
  322. [Category ("Appearance")]
  323. public Style FileViewStyle {
  324. get { return FileView.ControlStyle; }
  325. }
  326. [PersistenceMode (PersistenceMode.InnerProperty)]
  327. [Category ("Appearance")]
  328. public Style FolderTreeStyle {
  329. get { return FolderTree.ControlStyle; }
  330. }
  331. [Bindable (true)]
  332. [Category ("Data")]
  333. [DefaultValue ("[0]/")]
  334. [Localizable (false)]
  335. [Themeable (false)]
  336. public string Directory {
  337. get { return FileView.Directory; }
  338. set { FileView.Directory = value; }
  339. }
  340. public override FileManagerItemInfo CurrentDirectory {
  341. get {
  342. return FileView.CurrentDirectory;
  343. }
  344. }
  345. #endregion
  346. protected override void OnPreRender (EventArgs e) {
  347. base.OnPreRender (e);
  348. if (ShowToolBar)
  349. CreateToolbar ();
  350. RegisterSplitterClientScript ();
  351. RegisterLayoutSetupScript ();
  352. Page.Form.Enctype = "multipart/form-data";
  353. Page.ClientScript.RegisterExpandoAttribute (_fileView.ClientID, "rootControl", ClientID);
  354. }
  355. private void RegisterLayoutSetupScript () {
  356. StringBuilder sb = new StringBuilder ();
  357. if (!ShowAddressBar)
  358. sb.AppendLine ("var addressBarHeight = 0;");
  359. else
  360. sb.AppendLine ("var addressBarHeight = WebForm_GetElementPosition(WebForm_GetElementById('" + ClientID + "_AddressBar')).height;");
  361. if (!ShowToolBar)
  362. sb.AppendLine ("var toolBarHeight = 0;");
  363. else
  364. sb.AppendLine ("var toolBarHeight = WebForm_GetElementPosition(WebForm_GetElementById('" + ClientID + "_ToolBar')).height;");
  365. if (ReadOnly || !AllowUpload || !ShowUploadBar)
  366. sb.AppendLine ("var uploadBarHeight = 0;");
  367. else
  368. sb.AppendLine ("var uploadBarHeight = WebForm_GetElementPosition(WebForm_GetElementById('" + ClientID + "_UploadBar')).height;");
  369. sb.AppendLine ("var fileManagerHeight = WebForm_GetElementPosition(WebForm_GetElementById('" + ClientID + "')).height;");
  370. sb.AppendLine ("var requestedHeight = fileManagerHeight - addressBarHeight - toolBarHeight - uploadBarHeight;");
  371. sb.AppendLine ("WebForm_SetElementHeight(WebForm_GetElementById('" + _fileView.ClientID + "'), requestedHeight);");
  372. sb.AppendLine ("WebForm_SetElementHeight(WebForm_GetElementById('" + _folderTree.ClientID + "'), requestedHeight);");
  373. Page.ClientScript.RegisterStartupScript (typeof (FileManager), ClientID + "LayoutSetup", sb.ToString (), true);
  374. }
  375. private void RegisterSplitterClientScript () {
  376. StringBuilder sb = new StringBuilder ();
  377. sb.AppendLine ("var __fileView;");
  378. sb.AppendLine ("var __fileViewWidth;");
  379. sb.AppendLine ("var __folderTree;");
  380. sb.AppendLine ("var __folderTreeWidth;");
  381. sb.AppendLine ("var __clientX;");
  382. sb.AppendLine ("var __document_onmousemove;");
  383. sb.AppendLine ("var __document_onmouseup;");
  384. sb.AppendLine ("function " + ClientID + "SplitterDragStart(e) {");
  385. sb.AppendLine ("if(e == null) var e = event;");
  386. sb.AppendLine ("__fileView = WebForm_GetElementById('" + _fileView.ClientID + "');");
  387. sb.AppendLine ("__fileViewWidth = WebForm_GetElementPosition(__fileView).width;");
  388. sb.AppendLine ("__folderTree = WebForm_GetElementById('" + _folderTree.ClientID + "');");
  389. sb.AppendLine ("__folderTreeWidth = WebForm_GetElementPosition(__folderTree).width;");
  390. sb.AppendLine ("__clientX = e.clientX;");
  391. sb.AppendLine ("__document_onmousemove = document.onmousemove;");
  392. sb.AppendLine ("__document_onmouseup = document.onmouseup;");
  393. sb.AppendLine ("document.onmousemove = " + ClientID + "SplitterDrag;");
  394. sb.AppendLine ("document.onmouseup = " + ClientID + "SplitterDragEnd;");
  395. sb.AppendLine ("return false;");
  396. sb.AppendLine ("}");
  397. sb.AppendLine ("function " + ClientID + "SplitterDragEnd(e) {");
  398. sb.AppendLine ("document.onmousemove = __document_onmousemove;");
  399. sb.AppendLine ("document.onmouseup = __document_onmouseup;");
  400. sb.AppendLine ("return false;");
  401. sb.AppendLine ("}");
  402. sb.AppendLine ("function " + ClientID + "SplitterDrag(e) {");
  403. sb.AppendLine ("if(e == null) var e = event;");
  404. if (Controller.IsRightToLeft)
  405. sb.AppendLine ("var __delta = __clientX - e.clientX;");
  406. else
  407. sb.AppendLine ("var __delta = e.clientX - __clientX;");
  408. sb.AppendLine ("WebForm_SetElementWidth(__fileView, __fileViewWidth - __delta);");
  409. sb.AppendLine ("WebForm_SetElementWidth(__folderTree, __folderTreeWidth + __delta);");
  410. sb.AppendLine ("return false;");
  411. sb.AppendLine ("}");
  412. Page.ClientScript.RegisterClientScriptBlock (typeof (FileManager), ClientID + "SplitterDrag", sb.ToString (), true);
  413. }
  414. protected override void CreateChildControls () {
  415. base.CreateChildControls ();
  416. CreateFileView ();
  417. CreateFolderTree ();
  418. }
  419. private void CreateFolderTree () {
  420. _folderTree = new FolderTree (Controller, _fileView);
  421. _folderTree.ID = "FolderTree";
  422. Controls.Add (_folderTree);
  423. }
  424. private void CreateFileView () {
  425. _fileView = new FileView (Controller);
  426. _fileView.ID = "FileView";
  427. Controls.Add (_fileView);
  428. }
  429. class IE8Fix : Style
  430. {
  431. protected override void FillStyleAttributes(CssStyleCollection attributes, IUrlResolutionService urlResolver)
  432. {
  433. //.IE8fix
  434. //{
  435. // z-index: 100;
  436. //}
  437. base.FillStyleAttributes(attributes, urlResolver);
  438. attributes.Add(HtmlTextWriterStyle.ZIndex, "100");
  439. }
  440. }
  441. private void CreateToolbar () {
  442. _toolBar = new Menu ();
  443. _toolBar.EnableViewState = false;
  444. _toolBar.StaticEnableDefaultPopOutImage = false;
  445. _toolBar.DynamicEnableDefaultPopOutImage = false;
  446. _toolBar.Orientation = Orientation.Horizontal;
  447. _toolBar.SkipLinkText = String.Empty;
  448. _toolBar.StaticItemTemplate = new CompiledTemplateBuilder (new BuildTemplateMethod (CreateToolbarButton));
  449. _toolBar.DynamicItemTemplate = new CompiledTemplateBuilder (new BuildTemplateMethod (CreateToolbarPopupItem));
  450. // TODO
  451. _toolBar.DynamicMenuStyle.BackColor = Color.White;
  452. _toolBar.DynamicMenuStyle.BorderStyle = BorderStyle.Solid;
  453. _toolBar.DynamicMenuStyle.BorderWidth = Unit.Pixel (1);
  454. _toolBar.DynamicMenuStyle.BorderColor = Color.FromArgb (0xACA899);
  455. _toolBar.DynamicMenuStyle.HorizontalPadding = Unit.Pixel (2);
  456. _toolBar.DynamicMenuStyle.VerticalPadding = Unit.Pixel (2);
  457. // fix IE8 bug
  458. var ie8fix = new IE8Fix();
  459. if (Page.Header != null)
  460. Page.Header.StyleSheet.RegisterStyle(ie8fix, this);
  461. _toolBar.DynamicMenuStyle.CssClass = ie8fix.RegisteredCssClass;
  462. _toolBar.DynamicMenuItemStyle.ForeColor = Color.Black;
  463. _toolBar.DynamicMenuItemStyle.Font.Names = new string [] { "Tahoma", "Verdana", "Geneva", "Arial", "Helvetica", "sans-serif" };
  464. _toolBar.DynamicMenuItemStyle.VerticalPadding = Unit.Pixel (1);
  465. _toolBar.DynamicMenuItemStyle.Font.Size = FontUnit.Parse ("11px", null);
  466. _toolBar.DynamicHoverStyle.ForeColor = Color.White;
  467. _toolBar.DynamicHoverStyle.BackColor = Color.FromArgb (0x316AC5);
  468. Controls.Add (_toolBar);
  469. string clientClickFunction = "javascript:" + FileManagerController.ClientScriptObjectNamePrefix + Controller.ClientID + ".On{0}(" + FileManagerController.ClientScriptObjectNamePrefix + _fileView.ClientID + ", '{1}');return false;";
  470. // Copy to
  471. if (ToolbarOptions.ShowCopyButton) {
  472. MenuItem itemCopyTo = new MenuItem ();
  473. itemCopyTo.Text = Controller.GetResourceString ("Copy", "Copy");
  474. itemCopyTo.ImageUrl = Controller.GetToolbarImage (ToolbarImages.Copy);
  475. itemCopyTo.NavigateUrl = String.Format (clientClickFunction, FileManagerCommands.SelectedItemsCopyTo, "");
  476. itemCopyTo.Enabled = !ReadOnly;
  477. _toolBar.Items.Add (itemCopyTo);
  478. }
  479. // Move to
  480. if (ToolbarOptions.ShowMoveButton) {
  481. MenuItem itemMoveTo = new MenuItem ();
  482. itemMoveTo.Text = Controller.GetResourceString ("Move", "Move");
  483. itemMoveTo.ImageUrl = Controller.GetToolbarImage (ToolbarImages.Move);
  484. itemMoveTo.NavigateUrl = String.Format (clientClickFunction, FileManagerCommands.SelectedItemsMoveTo, "");
  485. itemMoveTo.Enabled = !ReadOnly && AllowDelete;
  486. _toolBar.Items.Add (itemMoveTo);
  487. }
  488. // Delete
  489. if (ToolbarOptions.ShowDeleteButton) {
  490. MenuItem itemDelete = new MenuItem ();
  491. itemDelete.Text = Controller.GetResourceString ("Delete", "Delete");
  492. itemDelete.ImageUrl = Controller.GetToolbarImage (ToolbarImages.Delete);
  493. itemDelete.NavigateUrl = String.Format (clientClickFunction, FileManagerCommands.SelectedItemsDelete, "");
  494. itemDelete.Enabled = !ReadOnly && AllowDelete;
  495. _toolBar.Items.Add (itemDelete);
  496. }
  497. // Rename
  498. if (ToolbarOptions.ShowRenameButton) {
  499. MenuItem itemRename = new MenuItem ();
  500. itemRename.Text = Controller.GetResourceString ("Rename", "Rename");
  501. itemRename.ImageUrl = Controller.GetToolbarImage (ToolbarImages.Rename);
  502. itemRename.NavigateUrl = String.Format (clientClickFunction, FileManagerCommands.Rename, "");
  503. itemRename.Enabled = !ReadOnly && AllowDelete;
  504. _toolBar.Items.Add (itemRename);
  505. }
  506. // NewFolder
  507. if (ToolbarOptions.ShowNewFolderButton) {
  508. MenuItem itemNewFolder = new MenuItem ();
  509. itemNewFolder.Text = Controller.GetResourceString ("Create_New_Folder", "New Folder");
  510. itemNewFolder.ImageUrl = Controller.GetToolbarImage (ToolbarImages.NewFolder);
  511. itemNewFolder.NavigateUrl = String.Format (clientClickFunction, FileManagerCommands.NewFolder, "");
  512. itemNewFolder.Enabled = !ReadOnly;
  513. _toolBar.Items.Add (itemNewFolder);
  514. }
  515. // FolderUp
  516. if (ToolbarOptions.ShowFolderUpButton) {
  517. MenuItem itemFolderUp = new MenuItem ();
  518. itemFolderUp.Text = Controller.GetResourceString ("Up", "Up");
  519. itemFolderUp.ImageUrl = Controller.GetToolbarImage (ToolbarImages.FolderUp);
  520. itemFolderUp.NavigateUrl = String.Format (clientClickFunction, FileManagerCommands.FileViewNavigate, "..");
  521. _toolBar.Items.Add (itemFolderUp);
  522. }
  523. // View
  524. if (ToolbarOptions.ShowViewButton) {
  525. MenuItem itemView = new MenuItem ();
  526. itemView.Text = Controller.GetResourceString ("View", "View");
  527. itemView.ImageUrl = Controller.GetToolbarImage (ToolbarImages.View);
  528. itemView.NavigateUrl = "javascript: return;";
  529. _toolBar.Items.Add (itemView);
  530. // Icons
  531. MenuItem itemViewIcons = new MenuItem ();
  532. itemViewIcons.Text = Controller.GetResourceString ("Icons", "Icons");
  533. itemViewIcons.NavigateUrl = String.Format (clientClickFunction, FileManagerCommands.FileViewChangeView, FileViewRenderMode.Icons);
  534. itemView.ChildItems.Add (itemViewIcons);
  535. // Details
  536. MenuItem itemViewDetails = new MenuItem ();
  537. itemViewDetails.Text = Controller.GetResourceString ("Details", "Details");
  538. itemViewDetails.NavigateUrl = String.Format (clientClickFunction, FileManagerCommands.FileViewChangeView, FileViewRenderMode.Details);
  539. itemView.ChildItems.Add (itemViewDetails);
  540. if (Controller.SupportThumbnails) {
  541. // Thumbnails
  542. MenuItem itemViewThumbnails = new MenuItem ();
  543. itemViewThumbnails.Text = Controller.GetResourceString ("Thumbnails", "Thumbnails");
  544. itemViewThumbnails.NavigateUrl = String.Format (clientClickFunction, FileManagerCommands.FileViewChangeView, FileViewRenderMode.Thumbnails);
  545. itemView.ChildItems.Add (itemViewThumbnails);
  546. }
  547. }
  548. // Refresh
  549. if (ToolbarOptions.ShowRefreshButton) {
  550. MenuItem itemRefresh = new MenuItem ();
  551. itemRefresh.Text = Controller.GetResourceString ("Refresh", "Refresh");
  552. itemRefresh.Value = "Refresh";
  553. itemRefresh.ImageUrl = Controller.GetToolbarImage (ToolbarImages.Refresh);
  554. itemRefresh.NavigateUrl = String.Format (clientClickFunction, FileManagerCommands.Refresh, "");
  555. _toolBar.Items.Add (itemRefresh);
  556. }
  557. // Custom Buttons
  558. if (_cusomToolbarButtonCollection != null) {
  559. for (int i = 0; i < _cusomToolbarButtonCollection.Count; i++) {
  560. CustomToolbarButton button = _cusomToolbarButtonCollection [i];
  561. string postBackStatement = null;
  562. if (button.PerformPostBack) {
  563. postBackStatement = Page.ClientScript.GetPostBackEventReference (this, "Toolbar:" + i);
  564. }
  565. MenuItem item = new MenuItem ()
  566. {
  567. Text = button.Text,
  568. ImageUrl = button.ImageUrl,
  569. NavigateUrl = "javascript:" + button.OnClientClick + ";" + postBackStatement + ";return false;"
  570. };
  571. _toolBar.Items.Add (item);
  572. }
  573. }
  574. }
  575. void CreateToolbarPopupItem (Control control) {
  576. MenuItemTemplateContainer container = (MenuItemTemplateContainer) control;
  577. MenuItem menuItem = (MenuItem) container.DataItem;
  578. Table t = new Table ();
  579. t.CellPadding = 0;
  580. t.CellSpacing = 0;
  581. t.BorderWidth = 0;
  582. t.Style [HtmlTextWriterStyle.Cursor] = "default";
  583. t.Attributes ["onclick"] = menuItem.NavigateUrl;
  584. container.Controls.Add (t);
  585. TableRow r = new TableRow ();
  586. t.Rows.Add (r);
  587. TableCell c1 = new TableCell ();
  588. System.Web.UI.WebControls.Image img1 = new System.Web.UI.WebControls.Image ();
  589. img1.ImageUrl = Page.ClientScript.GetWebResourceUrl (typeof (FileManagerController), "IZ.WebFileManager.resources.Empty.gif");
  590. img1.Width = 16;
  591. img1.Height = 16;
  592. c1.Controls.Add (img1);
  593. r.Cells.Add (c1);
  594. TableCell c2 = new TableCell ();
  595. c2.Style [HtmlTextWriterStyle.PaddingLeft] = "2px";
  596. c2.Style [HtmlTextWriterStyle.PaddingRight] = "2px";
  597. c2.Text = "&nbsp;" + menuItem.Text;
  598. c2.Width = Unit.Percentage (100);
  599. r.Cells.Add (c2);
  600. TableCell c3 = new TableCell ();
  601. System.Web.UI.WebControls.Image img3 = new System.Web.UI.WebControls.Image ();
  602. img3.ImageUrl = Page.ClientScript.GetWebResourceUrl (typeof (FileManagerController), "IZ.WebFileManager.resources.Empty.gif");
  603. img3.Width = 16;
  604. img3.Height = 16;
  605. c3.Controls.Add (img3);
  606. r.Cells.Add (c3);
  607. }
  608. void CreateToolbarButton (Control control) {
  609. MenuItemTemplateContainer container = (MenuItemTemplateContainer) control;
  610. MenuItem menuItem = (MenuItem) container.DataItem;
  611. BorderedPanel panel = new BorderedPanel ();
  612. panel.ControlStyle.CopyFrom (DefaultToolbarButtonStyle);
  613. if (ToolbarButtonStyleCreated)
  614. panel.ControlStyle.CopyFrom (ToolbarButtonStyle);
  615. panel.Style [HtmlTextWriterStyle.Cursor] = "default";
  616. if (menuItem.Enabled) {
  617. panel.HoverSyle.CopyFrom (DefaultToolbarButtonHoverStyle);
  618. if (ToolbarButtonHoverStyleCreated)
  619. panel.HoverSyle.CopyFrom (ToolbarButtonHoverStyle);
  620. panel.PressedSyle.CopyFrom (DefaultToolbarButtonPressedStyle);
  621. if (ToolbarButtonPressedStyleCreated)
  622. panel.PressedSyle.CopyFrom (ToolbarButtonPressedStyle);
  623. panel.Attributes ["onclick"] = menuItem.NavigateUrl;
  624. }
  625. else
  626. panel.Style ["color"] = "gray";
  627. container.Controls.Add (panel);
  628. Table t = new Table ();
  629. t.CellPadding = 0;
  630. t.CellSpacing = 0;
  631. t.BorderWidth = 0;
  632. panel.Controls.Add (t);
  633. TableRow r = new TableRow ();
  634. t.Rows.Add (r);
  635. TableCell c1 = new TableCell ();
  636. r.Cells.Add (c1);
  637. System.Web.UI.WebControls.Image img = new System.Web.UI.WebControls.Image ();
  638. img.ImageUrl = ((MenuItem) container.DataItem).ImageUrl;
  639. c1.Controls.Add (img);
  640. TableCell c2 = new TableCell ();
  641. c2.Style [HtmlTextWriterStyle.PaddingLeft] = "2px";
  642. c2.Style [HtmlTextWriterStyle.PaddingRight] = "2px";
  643. c2.Text = "&nbsp;" + menuItem.Text;
  644. r.Cells.Add (c2);
  645. }
  646. protected override Style CreateControlStyle () {
  647. Style style = base.CreateControlStyle ();
  648. style.BackColor = Color.FromArgb (0xEDEBE0);
  649. return style;
  650. }
  651. protected override void AddAttributesToRender (HtmlTextWriter writer) {
  652. base.AddAttributesToRender (writer);
  653. writer.AddStyleAttribute (HtmlTextWriterStyle.Cursor, "default");
  654. }
  655. protected override void Render (HtmlTextWriter writer) {
  656. if (DesignMode) {
  657. writer.Write (String.Format (System.Globalization.CultureInfo.InvariantCulture,
  658. "<div><table width=\"{0}\" height=\"{1}\" bgcolor=\"#f5f5f5\" bordercolor=\"#c7c7c7\" cellpadding=\"0\" cellspacing=\"0\" border=\"1\"><tr><td valign=\"middle\" align=\"center\">IZWebFileManager - <b>{2}</b></td></tr></table></div>",
  659. Width,
  660. Height,
  661. ID));
  662. return;
  663. }
  664. AddAttributesToRender (writer);
  665. RenderBeginOuterTable (writer);
  666. if (ShowAddressBar)
  667. RenderAddressBar (writer);
  668. if (ShowToolBar)
  669. RenderToolBar (writer);
  670. writer.AddAttribute (HtmlTextWriterAttribute.Cellpadding, "0");
  671. writer.AddAttribute (HtmlTextWriterAttribute.Cellspacing, "0");
  672. writer.RenderBeginTag (HtmlTextWriterTag.Table);
  673. writer.RenderBeginTag (HtmlTextWriterTag.Tr);
  674. writer.RenderBeginTag (HtmlTextWriterTag.Td);
  675. RenderFolderTree (writer);
  676. writer.RenderEndTag ();
  677. // splitter
  678. writer.AddStyleAttribute (HtmlTextWriterStyle.Cursor, "col-resize");
  679. writer.AddAttribute ("onmousedown", ClientID + "SplitterDragStart(event)");
  680. writer.AddAttribute ("onselectstart", "return false");
  681. writer.RenderBeginTag (HtmlTextWriterTag.Td);
  682. if (SplitterImageUrl.Length > 0) {
  683. writer.AddAttribute (HtmlTextWriterAttribute.Src, ResolveClientUrl (SplitterImageUrl));
  684. }
  685. else {
  686. writer.AddAttribute (HtmlTextWriterAttribute.Width, "3px");
  687. writer.AddAttribute (HtmlTextWriterAttribute.Height, "3px");
  688. writer.AddAttribute (HtmlTextWriterAttribute.Src, Page.ClientScript.GetWebResourceUrl (typeof (FileManagerController), "IZ.WebFileManager.resources.Empty.gif"));
  689. }
  690. writer.AddAttribute (HtmlTextWriterAttribute.Alt, "");
  691. writer.RenderBeginTag (HtmlTextWriterTag.Img);
  692. writer.RenderEndTag ();
  693. writer.RenderEndTag ();
  694. writer.RenderBeginTag (HtmlTextWriterTag.Td);
  695. RenderFileView (writer);
  696. writer.RenderEndTag ();
  697. writer.RenderEndTag ();
  698. writer.RenderEndTag ();
  699. if (!ReadOnly && AllowUpload && ShowUploadBar)
  700. RenderFileUploadBar (writer);
  701. RenderEndOuterTable (writer);
  702. }
  703. private void RenderToolBar (HtmlTextWriter writer) {
  704. BorderedPanel p = new BorderedPanel ();
  705. p.Page = Page;
  706. p.ControlStyle.CopyFrom (DefaultToolbarStyle);
  707. if (ToolbarStyleCreated)
  708. p.ControlStyle.CopyFrom (ToolbarStyle);
  709. writer.AddStyleAttribute (HtmlTextWriterStyle.Position, "relative");
  710. writer.AddStyleAttribute (HtmlTextWriterStyle.ZIndex, "100");
  711. writer.AddAttribute (HtmlTextWriterAttribute.Id, ClientID + "_ToolBar");
  712. writer.RenderBeginTag (HtmlTextWriterTag.Div);
  713. p.RenderBeginTag (writer);
  714. _toolBar.RenderControl (writer);
  715. p.RenderEndTag (writer);
  716. writer.RenderEndTag ();
  717. }
  718. private void RenderFolderTree (HtmlTextWriter writer) {
  719. _folderTree.Width = new Unit (Width.Value * 0.25, Width.Type);
  720. _folderTree.Height = 100;
  721. _folderTree.RenderControl (writer);
  722. }
  723. private void RenderFileView (HtmlTextWriter writer) {
  724. _fileView.Width = new Unit (Width.Value * 0.75, Width.Type);
  725. _fileView.Height = 100;
  726. _fileView.RenderControl (writer);
  727. }
  728. private void RenderAddressBar (HtmlTextWriter writer) {
  729. AddressBarStyle.AddAttributesToRender (writer);
  730. writer.AddAttribute (HtmlTextWriterAttribute.Id, ClientID + "_AddressBar");
  731. writer.RenderBeginTag (HtmlTextWriterTag.Div);
  732. writer.AddAttribute (HtmlTextWriterAttribute.Cellspacing, "0");
  733. writer.AddAttribute (HtmlTextWriterAttribute.Cellpadding, "0");
  734. writer.AddAttribute (HtmlTextWriterAttribute.Border, "0");
  735. writer.AddStyleAttribute (HtmlTextWriterStyle.Width, "100%");
  736. writer.RenderBeginTag (HtmlTextWriterTag.Table);
  737. writer.RenderBeginTag (HtmlTextWriterTag.Tr);
  738. writer.RenderBeginTag (HtmlTextWriterTag.Td);
  739. writer.AddAttribute (HtmlTextWriterAttribute.Id, _fileView.ClientID + "_Address");
  740. writer.AddAttribute (HtmlTextWriterAttribute.Value, CurrentDirectory.FileManagerPath, true);
  741. AddressTextBoxStyle.AddAttributesToRender (writer);
  742. //writer.AddAttribute(HtmlTextWriterAttribute.ReadOnly, "readonly");
  743. writer.RenderBeginTag (HtmlTextWriterTag.Input);
  744. writer.RenderEndTag ();
  745. writer.RenderEndTag ();
  746. writer.AddStyleAttribute (HtmlTextWriterStyle.Width, "16px");
  747. writer.RenderBeginTag (HtmlTextWriterTag.Td);
  748. writer.AddAttribute (HtmlTextWriterAttribute.Alt, "");
  749. writer.AddAttribute (HtmlTextWriterAttribute.Src, Controller.GetToolbarImage (ToolbarImages.Process));
  750. writer.AddAttribute (HtmlTextWriterAttribute.Id, _fileView.ClientID + "_ProgressImg");
  751. writer.AddStyleAttribute (HtmlTextWriterStyle.Visibility, "hidden");
  752. writer.RenderBeginTag (HtmlTextWriterTag.Img);
  753. writer.RenderEndTag ();
  754. writer.RenderEndTag ();
  755. writer.RenderEndTag ();
  756. writer.RenderEndTag ();
  757. writer.RenderEndTag ();
  758. }
  759. private void RenderFileUploadBar (HtmlTextWriter writer) {
  760. AddressBarStyle.AddAttributesToRender (writer);
  761. writer.AddAttribute (HtmlTextWriterAttribute.Id, ClientID + "_UploadBar");
  762. writer.RenderBeginTag (HtmlTextWriterTag.Div);
  763. writer.RenderBeginTag (HtmlTextWriterTag.Table);
  764. writer.RenderBeginTag (HtmlTextWriterTag.Tr);
  765. writer.AddStyleAttribute (HtmlTextWriterStyle.WhiteSpace, "nowrap");
  766. writer.RenderBeginTag (HtmlTextWriterTag.Td);
  767. writer.Write (HttpUtility.HtmlEncode (Controller.GetResourceString ("Upload_File", "Upload File")));
  768. writer.RenderEndTag ();
  769. writer.AddStyleAttribute (HtmlTextWriterStyle.Width, "100%");
  770. writer.RenderBeginTag (HtmlTextWriterTag.Td);
  771. writer.AddAttribute (HtmlTextWriterAttribute.Id, ClientID + "_Upload");
  772. writer.AddAttribute (HtmlTextWriterAttribute.Name, ClientID + "_Upload");
  773. writer.AddAttribute (HtmlTextWriterAttribute.Type, "file");
  774. writer.AddStyleAttribute (HtmlTextWriterStyle.Width, "100%");
  775. writer.RenderBeginTag (HtmlTextWriterTag.Input);
  776. writer.RenderEndTag ();
  777. writer.RenderEndTag ();
  778. writer.RenderBeginTag (HtmlTextWriterTag.Td);
  779. writer.AddAttribute (HtmlTextWriterAttribute.Type, "button");
  780. writer.AddAttribute (HtmlTextWriterAttribute.Onclick, Page.ClientScript.GetPostBackEventReference (this, "Upload"));
  781. writer.AddAttribute (HtmlTextWriterAttribute.Value, Controller.GetResourceString ("Submit", "Submit"));
  782. writer.RenderBeginTag (HtmlTextWriterTag.Input);
  783. writer.RenderEndTag ();
  784. writer.RenderEndTag ();
  785. writer.RenderEndTag ();
  786. writer.RenderEndTag ();
  787. writer.RenderEndTag ();
  788. }
  789. [System.Diagnostics.CodeAnalysis.SuppressMessage ("Microsoft.Performance", "CA1822:MarkMembersAsStatic")]
  790. private void RenderBeginOuterTable (HtmlTextWriter writer) {
  791. Controller.AddDirectionAttribute (writer);
  792. writer.AddAttribute (HtmlTextWriterAttribute.Cellpadding, "0");
  793. writer.AddAttribute (HtmlTextWriterAttribute.Cellspacing, "0");
  794. writer.RenderBeginTag (HtmlTextWriterTag.Table);
  795. writer.AddAttribute(HtmlTextWriterAttribute.Valign, "top");
  796. writer.RenderBeginTag(HtmlTextWriterTag.Tr);
  797. writer.RenderBeginTag (HtmlTextWriterTag.Td);
  798. }
  799. [System.Diagnostics.CodeAnalysis.SuppressMessage ("Microsoft.Performance", "CA1822:MarkMembersAsStatic")]
  800. private void RenderEndOuterTable (HtmlTextWriter writer) {
  801. writer.RenderEndTag ();
  802. writer.RenderEndTag ();
  803. writer.RenderEndTag ();
  804. }
  805. protected override object SaveViewState () {
  806. object [] states = new object [6];
  807. states [0] = base.SaveViewState ();
  808. if (_toolbarStyle != null)
  809. states [1] = ((IStateManager) _toolbarStyle).SaveViewState ();
  810. if (_toolbarButtonStyle != null)
  811. states [2] = ((IStateManager) _toolbarButtonStyle).SaveViewState ();
  812. if (_toolbarButtonHoverStyle != null)
  813. states [3] = ((IStateManager) _toolbarButtonHoverStyle).SaveViewState ();
  814. if (_toolbarButtonPressedStyle != null)
  815. states [4] = ((IStateManager) _toolbarButtonPressedStyle).SaveViewState ();
  816. if (_cusomToolbarButtonCollection != null)
  817. states [5] = ((IStateManager) _cusomToolbarButtonCollection).SaveViewState ();
  818. for (int i = 0; i < states.Length; i++) {
  819. if (states [i] != null)
  820. return states;
  821. }
  822. return null;
  823. }
  824. protected override void LoadViewState (object savedState) {
  825. if (savedState == null)
  826. return;
  827. object [] states = (object []) savedState;
  828. base.LoadViewState (states [0]);
  829. if (states [1] != null)
  830. ((IStateManager) ToolbarStyle).LoadViewState (states [1]);
  831. if (states [2] != null)
  832. ((IStateManager) ToolbarButtonStyle).LoadViewState (states [2]);
  833. if (states [3] != null)
  834. ((IStateManager) ToolbarButtonHoverStyle).LoadViewState (states [3]);
  835. if (states [4] != null)
  836. ((IStateManager) ToolbarButtonPressedStyle).LoadViewState (states [4]);
  837. if (states [5] != null)
  838. ((IStateManager) CustomToolbarButtons).LoadViewState (states [5]);
  839. }
  840. protected override void TrackViewState () {
  841. base.TrackViewState ();
  842. if (_toolbarStyle != null)
  843. ((IStateManager) _toolbarStyle).TrackViewState ();
  844. if (_toolbarButtonStyle != null)
  845. ((IStateManager) _toolbarButtonStyle).TrackViewState ();
  846. if (_toolbarButtonHoverStyle != null)
  847. ((IStateManager) _toolbarButtonHoverStyle).TrackViewState ();
  848. if (_toolbarButtonPressedStyle != null)
  849. ((IStateManager) _toolbarButtonPressedStyle).TrackViewState ();
  850. if (_cusomToolbarButtonCollection != null)
  851. ((IStateManager) _cusomToolbarButtonCollection).TrackViewState ();
  852. }
  853. void RaisePostBackEvent (string eventArgument) {
  854. if (eventArgument == "Upload") {
  855. HttpPostedFile uploadedFile = Page.Request.Files [ClientID + "_Upload"];
  856. if (uploadedFile != null && uploadedFile.ContentLength > 0) {
  857. FileManagerItemInfo dir = GetCurrentDirectory ();
  858. Controller.ProcessFileUpload (dir, uploadedFile);
  859. }
  860. }
  861. else if (eventArgument.StartsWith ("Toolbar:", StringComparison.Ordinal)) {
  862. int i = int.Parse (eventArgument.Substring (8));
  863. CustomToolbarButton button = CustomToolbarButtons [i];
  864. OnToolbarCommand (new CommandEventArgs (button.CommandName, button.CommandArgument));
  865. }
  866. }
  867. void OnToolbarCommand (CommandEventArgs e) {
  868. if (ToolbarCommand != null)
  869. ToolbarCommand (this, e);
  870. }
  871. internal override FileManagerItemInfo GetCurrentDirectory () {
  872. return Controller.ResolveFileManagerItemInfo (_fileView.Directory);
  873. }
  874. #region IPostBackEventHandler Members
  875. void IPostBackEventHandler.RaisePostBackEvent (string eventArgument) {
  876. RaisePostBackEvent (eventArgument);
  877. }
  878. #endregion
  879. }
  880. }