Changeset 2024 for trunk/eraser


Ignore:
Timestamp:
5/3/2010 2:18:48 PM (4 years ago)
Author:
lowjoel
Message:

Use the new form of the task data selection dialog: The type of erasure target is a combobox now so that in future new types of erasure methods can be defined. Addresses #279

Location:
trunk/eraser
Files:
3 added
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/eraser/Eraser.Manager/Eraser.Manager.csproj

    r2023 r2024  
    111111  </ItemGroup> 
    112112  <ItemGroup> 
     113    <EmbeddedResource Include="FileErasureTargetSettings.resx"> 
     114      <DependentUpon>FileErasureTargetSettings.cs</DependentUpon> 
     115    </EmbeddedResource> 
     116    <EmbeddedResource Include="FolderErasureTargetSettings.resx"> 
     117      <DependentUpon>FolderErasureTargetSettings.cs</DependentUpon> 
     118    </EmbeddedResource> 
    113119    <EmbeddedResource Include="Strings.en.resx"> 
    114120      <SubType>Designer</SubType> 
     
    121127    <EmbeddedResource Include="Strings.resx"> 
    122128      <SubType>Designer</SubType> 
     129    </EmbeddedResource> 
     130    <EmbeddedResource Include="UnusedSpaceErasureTargetSettings.resx"> 
     131      <DependentUpon>UnusedSpaceErasureTargetSettings.cs</DependentUpon> 
    123132    </EmbeddedResource> 
    124133  </ItemGroup> 
  • trunk/eraser/Eraser.Manager/ErasureTarget.cs

    r2023 r2024  
    7676        public ErasureMethod Method 
    7777        { 
    78             get; 
    79             set; 
     78            get 
     79            { 
     80                return method; 
     81            } 
     82            set 
     83            { 
     84                if (!SupportsMethod(value)) 
     85                    throw new ArgumentException(S._("The selected erasure method is not " + 
     86                        "supported for this erasure target.")); 
     87                method = value; 
     88            } 
    8089        } 
    8190 
     
    100109 
    101110        /// <summary> 
     111        /// Checks whether the provided erasure method is supported by this current 
     112        /// target. 
     113        /// </summary> 
     114        /// <param name="method">The erasure method to check.</param> 
     115        /// <returns>True if the erasure method is supported, false otherwise.</returns> 
     116        public virtual bool SupportsMethod(ErasureMethod method) 
     117        { 
     118            return true; 
     119        } 
     120 
     121        /// <summary> 
    102122        /// Retrieves the text to display representing this task. 
    103123        /// </summary> 
     
    117137 
    118138        /// <summary> 
    119         /// Gets a control which contains settings for configuring this task, or 
     139        /// Gets an <see cref="IErasureTargetConfigurer"/> which contains settings for configuring this task, or 
    120140        /// null if this erasure target has no settings to be set. 
    121141        /// </summary> 
     
    123143        /// function, and settings for this task will be according to the returned 
    124144        /// control.</remarks> 
    125         public abstract System.Windows.Forms.Control SettingsPanel 
     145        public abstract IErasureTargetConfigurer Configurer 
    126146        { 
    127147            get; 
    128148        } 
    129  
    130         /// <summary> 
    131         /// Configures the current task based on settings specified in the control 
    132         /// returned by the <see cref="SettingsPanel"/> property. 
    133         /// </summary> 
    134         /// <param name="settingsPanel">A settings panel returned by the 
    135         /// <see cref="SettingsPanel"/> property, which contains the user-selected 
    136         /// settings.</param> 
    137         public abstract void Configure(System.Windows.Forms.Control settingsPanel); 
    138149 
    139150        /// <summary> 
     
    145156        { 
    146157        } 
     158 
     159        /// <summary> 
     160        /// The backing variable for the <see cref="Method"/> property. 
     161        /// </summary> 
     162        private ErasureMethod method; 
     163    } 
     164 
     165    /// <summary> 
     166    /// Represents an interface for an abstract erasure target configuration 
     167    /// object. 
     168    /// </summary> 
     169    public interface IErasureTargetConfigurer 
     170    { 
     171        /// <summary> 
     172        /// Loads the configuration from the provided erasure target. 
     173        /// </summary> 
     174        /// <param name="target">The erasure target to load the configuration from.</param> 
     175        void LoadFrom(ErasureTarget target); 
     176 
     177        /// <summary> 
     178        /// Configures the provided erasure target. 
     179        /// </summary> 
     180        /// <param name="target">The erasure target to configure.</param> 
     181        /// <returns>True if the configuration was valid and the save operation 
     182        /// succeeded.</returns> 
     183        bool SaveTo(ErasureTarget target); 
    147184    } 
    148185 
     
    304341        } 
    305342 
     343        public override bool SupportsMethod(ErasureMethod method) 
     344        { 
     345            return method == ErasureMethodRegistrar.Default || 
     346                method is UnusedSpaceErasureMethod; 
     347        } 
     348 
    306349        public override string UIText 
    307350        { 
     
    309352        } 
    310353 
    311         public override System.Windows.Forms.Control SettingsPanel 
     354        public override IErasureTargetConfigurer Configurer 
    312355        { 
    313356            get { return new UnusedSpaceErasureTargetSettings(); } 
    314         } 
    315  
    316         public override void Configure(System.Windows.Forms.Control settingsPanel) 
    317         { 
    318             throw new NotImplementedException(); 
    319357        } 
    320358 
     
    350388        } 
    351389 
    352         public override System.Windows.Forms.Control SettingsPanel 
     390        public override IErasureTargetConfigurer Configurer 
    353391        { 
    354392            get { return new FileErasureTargetSettings(); } 
    355         } 
    356  
    357         public override void Configure(System.Windows.Forms.Control settingsPanel) 
    358         { 
    359             throw new NotImplementedException(); 
    360393        } 
    361394 
     
    412445        } 
    413446 
    414         public override System.Windows.Forms.Control SettingsPanel 
     447        public override IErasureTargetConfigurer Configurer 
    415448        { 
    416449            get { return new FolderErasureTargetSettings(); } 
    417         } 
    418  
    419         public override void Configure(System.Windows.Forms.Control settingsPanel) 
    420         { 
    421             throw new NotImplementedException(); 
    422450        } 
    423451 
     
    535563        } 
    536564 
    537         public override System.Windows.Forms.Control SettingsPanel 
     565        public override IErasureTargetConfigurer Configurer 
    538566        { 
    539567            get { return null; } 
    540         } 
    541  
    542         public override void Configure(System.Windows.Forms.Control settingsPanel) 
    543         { 
    544             throw new InvalidOperationException("The RecycleBinTarget class has no settings to " + 
    545                 "be set."); 
    546568        } 
    547569 
  • trunk/eraser/Eraser.Manager/FileErasureTargetSettings.Designer.cs

    r2023 r2024  
    1 namespace Eraser.Manager 
     1/*  
     2 * $Id$ 
     3 * Copyright 2008-2010 The Eraser Project 
     4 * Original Author: Joel Low <lowjoel@users.sourceforge.net> 
     5 * Modified By: 
     6 *  
     7 * This file is part of Eraser. 
     8 *  
     9 * Eraser is free software: you can redistribute it and/or modify it under the 
     10 * terms of the GNU General Public License as published by the Free Software 
     11 * Foundation, either version 3 of the License, or (at your option) any later 
     12 * version. 
     13 *  
     14 * Eraser is distributed in the hope that it will be useful, but WITHOUT ANY 
     15 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 
     16 * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 
     17 *  
     18 * A copy of the GNU General Public License can be found at 
     19 * <http://www.gnu.org/licenses/>. 
     20 */ 
     21 
     22namespace Eraser.Manager 
    223{ 
    324    partial class FileErasureTargetSettings 
     
    2950        private void InitializeComponent() 
    3051        { 
    31             components = new System.ComponentModel.Container(); 
     52            this.components = new System.ComponentModel.Container(); 
     53            this.fileBrowse = new System.Windows.Forms.Button(); 
     54            this.filePath = new System.Windows.Forms.TextBox(); 
     55            this.fileDialog = new System.Windows.Forms.OpenFileDialog(); 
     56            this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components); 
     57            ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit(); 
     58            this.SuspendLayout(); 
     59            //  
     60            // fileBrowse 
     61            //  
     62            this.fileBrowse.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 
     63            this.fileBrowse.ImeMode = System.Windows.Forms.ImeMode.NoControl; 
     64            this.fileBrowse.Location = new System.Drawing.Point(75, 0); 
     65            this.fileBrowse.Name = "fileBrowse"; 
     66            this.fileBrowse.Size = new System.Drawing.Size(75, 23); 
     67            this.fileBrowse.TabIndex = 7; 
     68            this.fileBrowse.Text = "Browse..."; 
     69            this.fileBrowse.UseVisualStyleBackColor = true; 
     70            this.fileBrowse.Click += new System.EventHandler(this.fileBrowse_Click); 
     71            //  
     72            // filePath 
     73            //  
     74            this.filePath.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
     75                        | System.Windows.Forms.AnchorStyles.Right))); 
     76            this.filePath.Location = new System.Drawing.Point(0, 2); 
     77            this.filePath.Name = "filePath"; 
     78            this.filePath.Size = new System.Drawing.Size(69, 20); 
     79            this.filePath.TabIndex = 6; 
     80            //  
     81            // fileDialog 
     82            //  
     83            this.fileDialog.Filter = "All files (*.*)|*.*"; 
     84            //  
     85            // errorProvider 
     86            //  
     87            this.errorProvider.ContainerControl = this; 
     88            //  
     89            // FileErasureTargetSettings 
     90            //  
     91            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
    3292            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
     93            this.Controls.Add(this.fileBrowse); 
     94            this.Controls.Add(this.filePath); 
     95            this.Name = "FileErasureTargetSettings"; 
     96            this.Size = new System.Drawing.Size(150, 23); 
     97            ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit(); 
     98            this.ResumeLayout(false); 
     99            this.PerformLayout(); 
     100 
    33101        } 
    34102 
    35103        #endregion 
     104 
     105        private System.Windows.Forms.Button fileBrowse; 
     106        private System.Windows.Forms.TextBox filePath; 
     107        private System.Windows.Forms.OpenFileDialog fileDialog; 
     108        private System.Windows.Forms.ErrorProvider errorProvider; 
    36109    } 
    37110} 
  • trunk/eraser/Eraser.Manager/FileErasureTargetSettings.cs

    r2023 r2024  
    1 using System; 
     1/*  
     2 * $Id$ 
     3 * Copyright 2008-2010 The Eraser Project 
     4 * Original Author: Joel Low <lowjoel@users.sourceforge.net> 
     5 * Modified By: 
     6 *  
     7 * This file is part of Eraser. 
     8 *  
     9 * Eraser is free software: you can redistribute it and/or modify it under the 
     10 * terms of the GNU General Public License as published by the Free Software 
     11 * Foundation, either version 3 of the License, or (at your option) any later 
     12 * version. 
     13 *  
     14 * Eraser is distributed in the hope that it will be useful, but WITHOUT ANY 
     15 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 
     16 * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 
     17 *  
     18 * A copy of the GNU General Public License can be found at 
     19 * <http://www.gnu.org/licenses/>. 
     20 */ 
     21 
     22using System; 
    223using System.Collections.Generic; 
    324using System.ComponentModel; 
     
    728using System.Text; 
    829using System.Windows.Forms; 
     30using Eraser.Util; 
    931 
    1032namespace Eraser.Manager 
    1133{ 
    12     public partial class FileErasureTargetSettings : UserControl 
     34    public partial class FileErasureTargetSettings : UserControl, IErasureTargetConfigurer 
    1335    { 
    1436        public FileErasureTargetSettings() 
     
    1638            InitializeComponent(); 
    1739        } 
     40 
     41        #region IErasureTargetConfigurer Members 
     42 
     43        public void LoadFrom(ErasureTarget target) 
     44        { 
     45            FileTarget file = target as FileTarget; 
     46            if (file == null) 
     47                throw new ArgumentException("The provided erasure target type is not " + 
     48                    "supported by this configurer."); 
     49 
     50            filePath.Text = file.Path; 
     51        } 
     52 
     53        public bool SaveTo(ErasureTarget target) 
     54        { 
     55            FileTarget file = target as FileTarget; 
     56            if (file == null) 
     57                throw new ArgumentException("The provided erasure target type is not " + 
     58                    "supported by this configurer."); 
     59 
     60            if (filePath.Text.Length == 0) 
     61            { 
     62                errorProvider.SetError(filePath, S._("Invalid file path")); 
     63                return false; 
     64            } 
     65 
     66            file.Path = filePath.Text; 
     67            return true; 
     68        } 
     69 
     70        #endregion 
     71 
     72        private void fileBrowse_Click(object sender, EventArgs e) 
     73        { 
     74            fileDialog.FileName = filePath.Text; 
     75            if (fileDialog.ShowDialog() == DialogResult.OK) 
     76                filePath.Text = fileDialog.FileName; 
     77        } 
    1878    } 
    1979} 
  • trunk/eraser/Eraser.Manager/FolderErasureTargetSettings.Designer.cs

    r2023 r2024  
    1 namespace Eraser.Manager 
     1/*  
     2 * $Id$ 
     3 * Copyright 2008-2010 The Eraser Project 
     4 * Original Author: Joel Low <lowjoel@users.sourceforge.net> 
     5 * Modified By: 
     6 *  
     7 * This file is part of Eraser. 
     8 *  
     9 * Eraser is free software: you can redistribute it and/or modify it under the 
     10 * terms of the GNU General Public License as published by the Free Software 
     11 * Foundation, either version 3 of the License, or (at your option) any later 
     12 * version. 
     13 *  
     14 * Eraser is distributed in the hope that it will be useful, but WITHOUT ANY 
     15 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 
     16 * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 
     17 *  
     18 * A copy of the GNU General Public License can be found at 
     19 * <http://www.gnu.org/licenses/>. 
     20 */ 
     21 
     22namespace Eraser.Manager 
    223{ 
    324    partial class FolderErasureTargetSettings 
     
    2950        private void InitializeComponent() 
    3051        { 
    31             components = new System.ComponentModel.Container(); 
     52            this.components = new System.ComponentModel.Container(); 
     53            this.folderDelete = new System.Windows.Forms.CheckBox(); 
     54            this.folderExclude = new System.Windows.Forms.TextBox(); 
     55            this.folderExcludeLbl = new System.Windows.Forms.Label(); 
     56            this.folderInclude = new System.Windows.Forms.TextBox(); 
     57            this.folderIncludeLbl = new System.Windows.Forms.Label(); 
     58            this.folderBrowse = new System.Windows.Forms.Button(); 
     59            this.folderPath = new System.Windows.Forms.TextBox(); 
     60            this.folderDialog = new System.Windows.Forms.FolderBrowserDialog(); 
     61            this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components); 
     62            ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit(); 
     63            this.SuspendLayout(); 
     64            //  
     65            // folderDelete 
     66            //  
     67            this.folderDelete.AutoSize = true; 
     68            this.folderDelete.Checked = true; 
     69            this.folderDelete.CheckState = System.Windows.Forms.CheckState.Checked; 
     70            this.folderDelete.ImeMode = System.Windows.Forms.ImeMode.NoControl; 
     71            this.folderDelete.Location = new System.Drawing.Point(0, 83); 
     72            this.folderDelete.Name = "folderDelete"; 
     73            this.folderDelete.Size = new System.Drawing.Size(125, 17); 
     74            this.folderDelete.TabIndex = 20; 
     75            this.folderDelete.Text = "Delete folder if empty"; 
     76            this.folderDelete.UseVisualStyleBackColor = true; 
     77            //  
     78            // folderExclude 
     79            //  
     80            this.folderExclude.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
     81                        | System.Windows.Forms.AnchorStyles.Right))); 
     82            this.folderExclude.Location = new System.Drawing.Point(104, 57); 
     83            this.folderExclude.Name = "folderExclude"; 
     84            this.folderExclude.Size = new System.Drawing.Size(272, 20); 
     85            this.folderExclude.TabIndex = 19; 
     86            //  
     87            // folderExcludeLbl 
     88            //  
     89            this.folderExcludeLbl.AutoSize = true; 
     90            this.folderExcludeLbl.ImeMode = System.Windows.Forms.ImeMode.NoControl; 
     91            this.folderExcludeLbl.Location = new System.Drawing.Point(-3, 60); 
     92            this.folderExcludeLbl.Name = "folderExcludeLbl"; 
     93            this.folderExcludeLbl.Size = new System.Drawing.Size(77, 13); 
     94            this.folderExcludeLbl.TabIndex = 18; 
     95            this.folderExcludeLbl.Text = "Exclude Mask:"; 
     96            //  
     97            // folderInclude 
     98            //  
     99            this.folderInclude.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
     100                        | System.Windows.Forms.AnchorStyles.Right))); 
     101            this.folderInclude.Location = new System.Drawing.Point(104, 28); 
     102            this.folderInclude.Name = "folderInclude"; 
     103            this.folderInclude.Size = new System.Drawing.Size(272, 20); 
     104            this.folderInclude.TabIndex = 17; 
     105            //  
     106            // folderIncludeLbl 
     107            //  
     108            this.folderIncludeLbl.AutoSize = true; 
     109            this.folderIncludeLbl.ImeMode = System.Windows.Forms.ImeMode.NoControl; 
     110            this.folderIncludeLbl.Location = new System.Drawing.Point(-3, 31); 
     111            this.folderIncludeLbl.Name = "folderIncludeLbl"; 
     112            this.folderIncludeLbl.Size = new System.Drawing.Size(74, 13); 
     113            this.folderIncludeLbl.TabIndex = 16; 
     114            this.folderIncludeLbl.Text = "Include Mask:"; 
     115            //  
     116            // folderBrowse 
     117            //  
     118            this.folderBrowse.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 
     119            this.folderBrowse.ImeMode = System.Windows.Forms.ImeMode.NoControl; 
     120            this.folderBrowse.Location = new System.Drawing.Point(301, -1); 
     121            this.folderBrowse.Name = "folderBrowse"; 
     122            this.folderBrowse.Size = new System.Drawing.Size(75, 23); 
     123            this.folderBrowse.TabIndex = 15; 
     124            this.folderBrowse.Text = "Browse..."; 
     125            this.folderBrowse.UseVisualStyleBackColor = true; 
     126            this.folderBrowse.Click += new System.EventHandler(this.folderBrowse_Click); 
     127            //  
     128            // folderPath 
     129            //  
     130            this.folderPath.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
     131                        | System.Windows.Forms.AnchorStyles.Right))); 
     132            this.folderPath.Location = new System.Drawing.Point(0, 1); 
     133            this.folderPath.Name = "folderPath"; 
     134            this.folderPath.Size = new System.Drawing.Size(295, 20); 
     135            this.folderPath.TabIndex = 14; 
     136            //  
     137            // folderDialog 
     138            //  
     139            this.folderDialog.Description = "Select a folder to erase."; 
     140            this.folderDialog.ShowNewFolderButton = false; 
     141            //  
     142            // errorProvider 
     143            //  
     144            this.errorProvider.ContainerControl = this; 
     145            //  
     146            // FolderErasureTargetSettings 
     147            //  
     148            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
    32149            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
     150            this.Controls.Add(this.folderDelete); 
     151            this.Controls.Add(this.folderExclude); 
     152            this.Controls.Add(this.folderExcludeLbl); 
     153            this.Controls.Add(this.folderInclude); 
     154            this.Controls.Add(this.folderIncludeLbl); 
     155            this.Controls.Add(this.folderBrowse); 
     156            this.Controls.Add(this.folderPath); 
     157            this.Name = "FolderErasureTargetSettings"; 
     158            this.Size = new System.Drawing.Size(376, 108); 
     159            ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit(); 
     160            this.ResumeLayout(false); 
     161            this.PerformLayout(); 
     162 
    33163        } 
    34164 
    35165        #endregion 
     166 
     167        private System.Windows.Forms.CheckBox folderDelete; 
     168        private System.Windows.Forms.TextBox folderExclude; 
     169        private System.Windows.Forms.Label folderExcludeLbl; 
     170        private System.Windows.Forms.TextBox folderInclude; 
     171        private System.Windows.Forms.Label folderIncludeLbl; 
     172        private System.Windows.Forms.Button folderBrowse; 
     173        private System.Windows.Forms.TextBox folderPath; 
     174        private System.Windows.Forms.FolderBrowserDialog folderDialog; 
     175        private System.Windows.Forms.ErrorProvider errorProvider; 
    36176    } 
    37177} 
  • trunk/eraser/Eraser.Manager/FolderErasureTargetSettings.cs

    r2023 r2024  
    1 using System; 
     1/*  
     2 * $Id$ 
     3 * Copyright 2008-2010 The Eraser Project 
     4 * Original Author: Joel Low <lowjoel@users.sourceforge.net> 
     5 * Modified By: 
     6 *  
     7 * This file is part of Eraser. 
     8 *  
     9 * Eraser is free software: you can redistribute it and/or modify it under the 
     10 * terms of the GNU General Public License as published by the Free Software 
     11 * Foundation, either version 3 of the License, or (at your option) any later 
     12 * version. 
     13 *  
     14 * Eraser is distributed in the hope that it will be useful, but WITHOUT ANY 
     15 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 
     16 * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 
     17 *  
     18 * A copy of the GNU General Public License can be found at 
     19 * <http://www.gnu.org/licenses/>. 
     20 */ 
     21 
     22using System; 
    223using System.Collections.Generic; 
    324using System.ComponentModel; 
     
    829using System.Windows.Forms; 
    930 
     31using Eraser.Util; 
     32 
    1033namespace Eraser.Manager 
    1134{ 
    12     public partial class FolderErasureTargetSettings : UserControl 
     35    public partial class FolderErasureTargetSettings : UserControl, IErasureTargetConfigurer 
    1336    { 
    1437        public FolderErasureTargetSettings() 
     
    1639            InitializeComponent(); 
    1740        } 
     41 
     42        #region IErasureTargetConfigurer Members 
     43 
     44        public void LoadFrom(ErasureTarget target) 
     45        { 
     46            FolderTarget folder = target as FolderTarget; 
     47            if (folder == null) 
     48                throw new ArgumentException("The provided erasure target type is not " + 
     49                    "supported by this configurer."); 
     50 
     51            folderPath.Text = folder.Path; 
     52            folderInclude.Text = folder.IncludeMask; 
     53            folderExclude.Text = folder.ExcludeMask; 
     54            folderDelete.Checked = folder.DeleteIfEmpty; 
     55        } 
     56 
     57        public bool SaveTo(ErasureTarget target) 
     58        { 
     59            FolderTarget folder = target as FolderTarget; 
     60            if (folder == null) 
     61                throw new ArgumentException("The provided erasure target type is not " + 
     62                    "supported by this configurer."); 
     63 
     64            if (folderPath.Text.Length == 0) 
     65            { 
     66                errorProvider.SetError(folderPath, S._("Invalid folder path")); 
     67                return false; 
     68            } 
     69 
     70            folder.Path = folderPath.Text; 
     71            folder.IncludeMask = folderInclude.Text; 
     72            folder.ExcludeMask = folderExclude.Text; 
     73            folder.DeleteIfEmpty = folderDelete.Checked; 
     74            return true; 
     75        } 
     76 
     77        #endregion 
     78 
     79        private void folderBrowse_Click(object sender, EventArgs e) 
     80        { 
     81            try 
     82            { 
     83                folderDialog.SelectedPath = folderPath.Text; 
     84                if (folderDialog.ShowDialog() == DialogResult.OK) 
     85                    folderPath.Text = folderDialog.SelectedPath; 
     86            } 
     87            catch (NotSupportedException) 
     88            { 
     89                MessageBox.Show(this, S._("The path you selected is invalid."), S._("Eraser"), 
     90                    MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, 
     91                    Localisation.IsRightToLeft(this) ? 
     92                        MessageBoxOptions.RtlReading | MessageBoxOptions.RightAlign : 0); 
     93            } 
     94        } 
    1895    } 
    1996} 
  • trunk/eraser/Eraser.Manager/UnusedSpaceErasureTargetSettings.Designer.cs

    r2023 r2024  
    1 namespace Eraser.Manager 
     1/*  
     2 * $Id$ 
     3 * Copyright 2008-2010 The Eraser Project 
     4 * Original Author: Joel Low <lowjoel@users.sourceforge.net> 
     5 * Modified By: 
     6 *  
     7 * This file is part of Eraser. 
     8 *  
     9 * Eraser is free software: you can redistribute it and/or modify it under the 
     10 * terms of the GNU General Public License as published by the Free Software 
     11 * Foundation, either version 3 of the License, or (at your option) any later 
     12 * version. 
     13 *  
     14 * Eraser is distributed in the hope that it will be useful, but WITHOUT ANY 
     15 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 
     16 * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 
     17 *  
     18 * A copy of the GNU General Public License can be found at 
     19 * <http://www.gnu.org/licenses/>. 
     20 */ 
     21 
     22namespace Eraser.Manager 
    223{ 
    324    partial class UnusedSpaceErasureTargetSettings 
     
    2950        private void InitializeComponent() 
    3051        { 
    31             components = new System.ComponentModel.Container(); 
     52            this.unusedClusterTips = new System.Windows.Forms.CheckBox(); 
     53            this.unusedDisk = new System.Windows.Forms.ComboBox(); 
     54            this.SuspendLayout(); 
     55            //  
     56            // unusedClusterTips 
     57            //  
     58            this.unusedClusterTips.AutoSize = true; 
     59            this.unusedClusterTips.Checked = true; 
     60            this.unusedClusterTips.CheckState = System.Windows.Forms.CheckState.Checked; 
     61            this.unusedClusterTips.ImeMode = System.Windows.Forms.ImeMode.NoControl; 
     62            this.unusedClusterTips.Location = new System.Drawing.Point(0, 30); 
     63            this.unusedClusterTips.Name = "unusedClusterTips"; 
     64            this.unusedClusterTips.Size = new System.Drawing.Size(106, 17); 
     65            this.unusedClusterTips.TabIndex = 18; 
     66            this.unusedClusterTips.Text = "Erase cluster tips"; 
     67            this.unusedClusterTips.UseVisualStyleBackColor = true; 
     68            //  
     69            // unusedDisk 
     70            //  
     71            this.unusedDisk.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
     72                        | System.Windows.Forms.AnchorStyles.Right))); 
     73            this.unusedDisk.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; 
     74            this.unusedDisk.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 
     75            this.unusedDisk.FormattingEnabled = true; 
     76            this.unusedDisk.Location = new System.Drawing.Point(0, 0); 
     77            this.unusedDisk.Name = "unusedDisk"; 
     78            this.unusedDisk.Size = new System.Drawing.Size(345, 21); 
     79            this.unusedDisk.TabIndex = 17; 
     80            this.unusedDisk.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.unusedDisk_DrawItem); 
     81            //  
     82            // UnusedSpaceErasureTargetSettings 
     83            //  
     84            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
    3285            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
     86            this.Controls.Add(this.unusedClusterTips); 
     87            this.Controls.Add(this.unusedDisk); 
     88            this.Name = "UnusedSpaceErasureTargetSettings"; 
     89            this.Size = new System.Drawing.Size(345, 49); 
     90            this.ResumeLayout(false); 
     91            this.PerformLayout(); 
     92 
    3393        } 
    3494 
    3595        #endregion 
     96 
     97        private System.Windows.Forms.CheckBox unusedClusterTips; 
     98        private System.Windows.Forms.ComboBox unusedDisk; 
    3699    } 
    37100} 
  • trunk/eraser/Eraser.Manager/UnusedSpaceErasureTargetSettings.cs

    r2023 r2024  
    1 using System; 
     1/*  
     2 * $Id$ 
     3 * Copyright 2008-2010 The Eraser Project 
     4 * Original Author: Joel Low <lowjoel@users.sourceforge.net> 
     5 * Modified By: 
     6 *  
     7 * This file is part of Eraser. 
     8 *  
     9 * Eraser is free software: you can redistribute it and/or modify it under the 
     10 * terms of the GNU General Public License as published by the Free Software 
     11 * Foundation, either version 3 of the License, or (at your option) any later 
     12 * version. 
     13 *  
     14 * Eraser is distributed in the hope that it will be useful, but WITHOUT ANY 
     15 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 
     16 * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 
     17 *  
     18 * A copy of the GNU General Public License can be found at 
     19 * <http://www.gnu.org/licenses/>. 
     20 */ 
     21 
     22using System; 
    223using System.Collections.Generic; 
    324using System.ComponentModel; 
     
    728using System.Text; 
    829using System.Windows.Forms; 
     30using System.IO; 
     31using Eraser.Util; 
     32using Eraser.Util.ExtensionMethods; 
    933 
    1034namespace Eraser.Manager 
    1135{ 
    12     public partial class UnusedSpaceErasureTargetSettings : UserControl 
     36    public partial class UnusedSpaceErasureTargetSettings : UserControl, IErasureTargetConfigurer 
    1337    { 
     38        /// <summary> 
     39        /// Represents an item in the list of drives. 
     40        /// </summary> 
     41        private class DriveItem 
     42        { 
     43            public override string ToString() 
     44            { 
     45                return Label; 
     46            } 
     47 
     48            /// <summary> 
     49            /// The drive selected. 
     50            /// </summary> 
     51            public string Drive; 
     52 
     53            /// <summary> 
     54            /// The label of the drive. 
     55            /// </summary> 
     56            public string Label; 
     57 
     58            /// <summary> 
     59            /// The icon of the drive. 
     60            /// </summary> 
     61            public Icon Icon; 
     62        } 
     63 
    1464        public UnusedSpaceErasureTargetSettings() 
    1565        { 
    1666            InitializeComponent(); 
     67 
     68            //Populate the drives list 
     69            foreach (VolumeInfo volume in VolumeInfo.Volumes.Concat(VolumeInfo.NetworkDrives)) 
     70            { 
     71                DriveType driveType = volume.VolumeType; 
     72                if (driveType != DriveType.Unknown && 
     73                    driveType != DriveType.NoRootDirectory && 
     74                    driveType != DriveType.CDRom) 
     75                { 
     76                    //Skip drives which are not mounted: we cannot erase their unused space. 
     77                    if (!volume.IsMounted) 
     78                        continue; 
     79 
     80                    DriveItem item = new DriveItem(); 
     81                    string volumePath = volume.MountPoints[0]; 
     82                    DirectoryInfo root = new DirectoryInfo(volumePath); 
     83 
     84                    item.Drive = volumePath; 
     85                    item.Label = root.GetDescription(); 
     86                    item.Icon = root.GetIcon(); 
     87                    unusedDisk.Items.Add(item); 
     88                } 
     89            } 
     90 
     91            if (unusedDisk.Items.Count != 0) 
     92                unusedDisk.SelectedIndex = 0; 
     93        } 
     94 
     95        #region IErasureTargetConfigurer Members 
     96 
     97        public void LoadFrom(ErasureTarget target) 
     98        { 
     99            UnusedSpaceTarget unused = target as UnusedSpaceTarget; 
     100            if (unused == null) 
     101                throw new ArgumentException("The provided erasure target type is not " + 
     102                    "supported by this configurer."); 
     103 
     104            foreach (object item in unusedDisk.Items) 
     105                if (((DriveItem)item).Drive == unused.Drive) 
     106                    unusedDisk.SelectedItem = item; 
     107            unusedClusterTips.Checked = unused.EraseClusterTips; 
     108        } 
     109 
     110        public bool SaveTo(ErasureTarget target) 
     111        { 
     112            UnusedSpaceTarget unused = target as UnusedSpaceTarget; 
     113            if (unused == null) 
     114                throw new ArgumentException("The provided erasure target type is not " + 
     115                    "supported by this configurer."); 
     116 
     117            unused.Drive = ((DriveItem)unusedDisk.SelectedItem).Drive; 
     118            unused.EraseClusterTips = unusedClusterTips.Checked; 
     119            return true; 
     120        } 
     121 
     122        #endregion 
     123 
     124        private void unusedDisk_DrawItem(object sender, DrawItemEventArgs e) 
     125        { 
     126            if (e.Index == -1) 
     127                return; 
     128 
     129            Graphics g = e.Graphics; 
     130            DriveItem item = (DriveItem)unusedDisk.Items[e.Index]; 
     131            Color textColour = e.ForeColor; 
     132            PointF textPos = e.Bounds.Location; 
     133            textPos.X += item.Icon.Width + 4; 
     134            textPos.Y += 2; 
     135 
     136            //Set the text colour and background colour if the control is disabled 
     137            if ((e.State & DrawItemState.Disabled) == 0) 
     138                e.DrawBackground(); 
     139            else 
     140            { 
     141                g.FillRectangle(new SolidBrush(SystemColors.ButtonFace), e.Bounds); 
     142                textColour = SystemColors.GrayText; 
     143            } 
     144 
     145            g.DrawIcon(item.Icon, e.Bounds.X + 2, e.Bounds.Y); 
     146            g.DrawString(item.Label, e.Font, new SolidBrush(textColour), textPos); 
     147            if ((e.State & DrawItemState.Focus) != 0) 
     148                e.DrawFocusRectangle(); 
    17149        } 
    18150    } 
  • trunk/eraser/Eraser/Strings.en.resx

    r1996 r2024  
    289289    <value>The new randomness data source will only be used when the next task is run.\nCurrently running tasks will use the old source.</value> 
    290290  </data> 
     291  <data name="The erasure target type could be configured, but it does not provide a user interface for configuring." xml:space="preserve"> 
     292    <value>The erasure target type could be configured, but it does not provide a user interface for configuring.</value> 
     293  </data> 
     294  <data name="Select Data to Erase " xml:space="preserve"> 
     295    <value>Select Data to Erase</value> 
     296  </data> 
    291297  <data name="The erasure method selected does not support unused disk space erasures." xml:space="preserve"> 
    292298    <value>The erasure method selected does not support unused disk space erasures.</value> 
    293299  </data> 
    294   <data name="Invalid file path" xml:space="preserve"> 
    295     <value>Invalid file path</value> 
    296   </data> 
    297   <data name="Invalid folder path" xml:space="preserve"> 
    298     <value>Invalid folder path</value> 
    299   </data> 
    300300  <data name="(default)" xml:space="preserve"> 
    301301    <value>(default)</value> 
  • trunk/eraser/Eraser/Strings.it.resx

    r1996 r2024  
    289289    <value>La nuova sorgente dati casuali sarà usata solamente alla prossima esecuzione dell'operazione.\nLe operazioni attualmente in esecuzione useranno la precedente sorgente.</value> 
    290290  </data> 
     291  <data name="The erasure target type could be configured, but it does not provide a user interface for configuring." xml:space="preserve"> 
     292    <value>(Untranslated)</value> 
     293  </data> 
     294  <data name="Select Data to Erase " xml:space="preserve"> 
     295    <value>(Untranslated)</value> 
     296  </data> 
    291297  <data name="The erasure method selected does not support unused disk space erasures." xml:space="preserve"> 
    292298    <value>Il metodo di pulizia selezionato non consente la pulizia dello spazio libero.</value> 
    293299  </data> 
    294   <data name="Invalid file path" xml:space="preserve"> 
    295     <value>Percorso del file non valido</value> 
    296   </data> 
    297   <data name="Invalid folder path" xml:space="preserve"> 
    298     <value>Percorso della cartella non valido</value> 
    299   </data> 
    300300  <data name="(default)" xml:space="preserve"> 
    301301    <value>(Untranslated)</value> 
  • trunk/eraser/Eraser/Strings.nl.resx

    r1996 r2024  
    289289    <value>(Untranslated)</value> 
    290290  </data> 
     291  <data name="The erasure target type could be configured, but it does not provide a user interface for configuring." xml:space="preserve"> 
     292    <value>(Untranslated)</value> 
     293  </data> 
     294  <data name="Select Data to Erase " xml:space="preserve"> 
     295    <value>(Untranslated)</value> 
     296  </data> 
    291297  <data name="The erasure method selected does not support unused disk space erasures." xml:space="preserve"> 
    292298    <value>Deze geselecteerde wis methode kan geen ongebruikte schijfruimte te wissen.</value> 
    293299  </data> 
    294   <data name="Invalid file path" xml:space="preserve"> 
    295     <value>Foutief bestand</value> 
    296   </data> 
    297   <data name="Invalid folder path" xml:space="preserve"> 
    298     <value>Foutieve folder</value> 
    299   </data> 
    300300  <data name="(default)" xml:space="preserve"> 
    301301    <value>(Untranslated)</value> 
  • trunk/eraser/Eraser/Strings.pl.resx

    r1996 r2024  
    289289    <value>Nowe źródło danych losowych zostanie użyte przy następnym zadaniu.\nObecne zadanie korzysta ze starego źródła.</value> 
    290290  </data> 
     291  <data name="The erasure target type could be configured, but it does not provide a user interface for configuring." xml:space="preserve"> 
     292    <value>(Untranslated)</value> 
     293  </data> 
     294  <data name="Select Data to Erase " xml:space="preserve"> 
     295    <value>(Untranslated)</value> 
     296  </data> 
    291297  <data name="The erasure method selected does not support unused disk space erasures." xml:space="preserve"> 
    292298    <value>Wybrana metoda, nie wspiera wymazywania nieużywanego miejsca.</value> 
    293299  </data> 
    294   <data name="Invalid file path" xml:space="preserve"> 
    295     <value>Niewłaściwa ścieżka pliku</value> 
    296   </data> 
    297   <data name="Invalid folder path" xml:space="preserve"> 
    298     <value>Niewłaściwa ścieżka katalogu</value> 
    299   </data> 
    300300  <data name="(default)" xml:space="preserve"> 
    301301    <value>(domyślny)</value> 
  • trunk/eraser/Eraser/Strings.resx

    r1996 r2024  
    289289    <value>The new randomness data source will only be used when the next task is run.\nCurrently running tasks will use the old source.</value> 
    290290  </data> 
     291  <data name="The erasure target type could be configured, but it does not provide a user interface for configuring." xml:space="preserve"> 
     292    <value>The erasure target type could be configured, but it does not provide a user interface for configuring.</value> 
     293  </data> 
     294  <data name="Select Data to Erase " xml:space="preserve"> 
     295    <value>Select Data to Erase </value> 
     296  </data> 
    291297  <data name="The erasure method selected does not support unused disk space erasures." xml:space="preserve"> 
    292298    <value>The erasure method selected does not support unused disk space erasures.</value> 
    293299  </data> 
    294   <data name="Invalid file path" xml:space="preserve"> 
    295     <value>Invalid file path</value> 
    296   </data> 
    297   <data name="Invalid folder path" xml:space="preserve"> 
    298     <value>Invalid folder path</value> 
    299   </data> 
    300300  <data name="(default)" xml:space="preserve"> 
    301301    <value>(default)</value> 
  • trunk/eraser/Eraser/TaskDataSelectionForm.Designer.cs

    r1675 r2024  
    5252            this.components = new System.ComponentModel.Container(); 
    5353            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TaskDataSelectionForm)); 
    54             this.file = new System.Windows.Forms.RadioButton(); 
    55             this.folder = new System.Windows.Forms.RadioButton(); 
    56             this.unused = new System.Windows.Forms.RadioButton(); 
    57             this.filePath = new System.Windows.Forms.TextBox(); 
    58             this.fileBrowse = new System.Windows.Forms.Button(); 
    59             this.folderPath = new System.Windows.Forms.TextBox(); 
    60             this.folderBrowse = new System.Windows.Forms.Button(); 
    61             this.folderIncludeLbl = new System.Windows.Forms.Label(); 
    62             this.folderInclude = new System.Windows.Forms.TextBox(); 
    63             this.folderExcludeLbl = new System.Windows.Forms.Label(); 
    64             this.folderExclude = new System.Windows.Forms.TextBox(); 
    65             this.folderDelete = new System.Windows.Forms.CheckBox(); 
    66             this.unusedDisk = new System.Windows.Forms.ComboBox(); 
    6754            this.methodLbl = new System.Windows.Forms.Label(); 
    68             this.method = new System.Windows.Forms.ComboBox(); 
     55            this.methodCmb = new System.Windows.Forms.ComboBox(); 
    6956            this.ok = new System.Windows.Forms.Button(); 
    7057            this.cancel = new System.Windows.Forms.Button(); 
    71             this.fileDialog = new System.Windows.Forms.OpenFileDialog(); 
    72             this.folderDialog = new System.Windows.Forms.FolderBrowserDialog(); 
    7358            this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components); 
    74             this.unusedClusterTips = new System.Windows.Forms.CheckBox(); 
    75             this.recycleBin = new System.Windows.Forms.RadioButton(); 
     59            this.typeLbl = new System.Windows.Forms.Label(); 
     60            this.typeCmb = new System.Windows.Forms.ComboBox(); 
     61            this.typeSettingsPnl = new System.Windows.Forms.Panel(); 
    7662            ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit(); 
    7763            this.SuspendLayout(); 
    78             //  
    79             // file 
    80             //  
    81             resources.ApplyResources(this.file, "file"); 
    82             this.file.Name = "file"; 
    83             this.file.TabStop = true; 
    84             this.file.UseVisualStyleBackColor = true; 
    85             this.file.CheckedChanged += new System.EventHandler(this.data_CheckedChanged); 
    86             //  
    87             // folder 
    88             //  
    89             resources.ApplyResources(this.folder, "folder"); 
    90             this.folder.Name = "folder"; 
    91             this.folder.TabStop = true; 
    92             this.folder.UseVisualStyleBackColor = true; 
    93             this.folder.CheckedChanged += new System.EventHandler(this.data_CheckedChanged); 
    94             //  
    95             // unused 
    96             //  
    97             resources.ApplyResources(this.unused, "unused"); 
    98             this.unused.Name = "unused"; 
    99             this.unused.TabStop = true; 
    100             this.unused.UseVisualStyleBackColor = true; 
    101             this.unused.CheckedChanged += new System.EventHandler(this.data_CheckedChanged); 
    102             //  
    103             // filePath 
    104             //  
    105             resources.ApplyResources(this.filePath, "filePath"); 
    106             this.filePath.Name = "filePath"; 
    107             //  
    108             // fileBrowse 
    109             //  
    110             resources.ApplyResources(this.fileBrowse, "fileBrowse"); 
    111             this.fileBrowse.Name = "fileBrowse"; 
    112             this.fileBrowse.UseVisualStyleBackColor = true; 
    113             this.fileBrowse.Click += new System.EventHandler(this.fileBrowse_Click); 
    114             //  
    115             // folderPath 
    116             //  
    117             resources.ApplyResources(this.folderPath, "folderPath"); 
    118             this.folderPath.Name = "folderPath"; 
    119             //  
    120             // folderBrowse 
    121             //  
    122             resources.ApplyResources(this.folderBrowse, "folderBrowse"); 
    123             this.folderBrowse.Name = "folderBrowse"; 
    124             this.folderBrowse.UseVisualStyleBackColor = true; 
    125             this.folderBrowse.Click += new System.EventHandler(this.folderBrowse_Click); 
    126             //  
    127             // folderIncludeLbl 
    128             //  
    129             resources.ApplyResources(this.folderIncludeLbl, "folderIncludeLbl"); 
    130             this.folderIncludeLbl.Name = "folderIncludeLbl"; 
    131             //  
    132             // folderInclude 
    133             //  
    134             resources.ApplyResources(this.folderInclude, "folderInclude"); 
    135             this.folderInclude.Name = "folderInclude"; 
    136             //  
    137             // folderExcludeLbl 
    138             //  
    139             resources.ApplyResources(this.folderExcludeLbl, "folderExcludeLbl"); 
    140             this.folderExcludeLbl.Name = "folderExcludeLbl"; 
    141             //  
    142             // folderExclude 
    143             //  
    144             resources.ApplyResources(this.folderExclude, "folderExclude"); 
    145             this.folderExclude.Name = "folderExclude"; 
    146             //  
    147             // folderDelete 
    148             //  
    149             resources.ApplyResources(this.folderDelete, "folderDelete"); 
    150             this.folderDelete.Checked = true; 
    151             this.folderDelete.CheckState = System.Windows.Forms.CheckState.Checked; 
    152             this.folderDelete.Name = "folderDelete"; 
    153             this.folderDelete.UseVisualStyleBackColor = true; 
    154             //  
    155             // unusedDisk 
    156             //  
    157             resources.ApplyResources(this.unusedDisk, "unusedDisk"); 
    158             this.unusedDisk.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; 
    159             this.unusedDisk.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 
    160             this.unusedDisk.FormattingEnabled = true; 
    161             this.unusedDisk.Name = "unusedDisk"; 
    162             this.unusedDisk.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.unusedDisk_DrawItem); 
    16364            //  
    16465            // methodLbl 
     
    16768            this.methodLbl.Name = "methodLbl"; 
    16869            //  
    169             // method 
     70            // methodCmb 
    17071            //  
    171             resources.ApplyResources(this.method, "method"); 
    172             this.method.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 
    173             this.method.FormattingEnabled = true; 
    174             this.method.Name = "method"; 
    175             this.method.SelectedIndexChanged += new System.EventHandler(this.method_SelectedIndexChanged); 
     72            resources.ApplyResources(this.methodCmb, "methodCmb"); 
     73            this.methodCmb.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 
     74            this.methodCmb.FormattingEnabled = true; 
     75            this.methodCmb.Name = "methodCmb"; 
    17676            //  
    17777            // ok 
     
    18989            this.cancel.UseVisualStyleBackColor = true; 
    19090            //  
    191             // fileDialog 
    192             //  
    193             resources.ApplyResources(this.fileDialog, "fileDialog"); 
    194             //  
    195             // folderDialog 
    196             //  
    197             resources.ApplyResources(this.folderDialog, "folderDialog"); 
    198             this.folderDialog.ShowNewFolderButton = false; 
    199             //  
    20091            // errorProvider 
    20192            //  
    20293            this.errorProvider.ContainerControl = this; 
    20394            //  
    204             // unusedClusterTips 
     95            // typeLbl 
    20596            //  
    206             resources.ApplyResources(this.unusedClusterTips, "unusedClusterTips"); 
    207             this.unusedClusterTips.Checked = true; 
    208             this.unusedClusterTips.CheckState = System.Windows.Forms.CheckState.Checked; 
    209             this.unusedClusterTips.Name = "unusedClusterTips"; 
    210             this.unusedClusterTips.UseVisualStyleBackColor = true; 
     97            resources.ApplyResources(this.typeLbl, "typeLbl"); 
     98            this.typeLbl.Name = "typeLbl"; 
    21199            //  
    212             // recycleBin 
     100            // typeCmb 
    213101            //  
    214             resources.ApplyResources(this.recycleBin, "recycleBin"); 
    215             this.recycleBin.Name = "recycleBin"; 
    216             this.recycleBin.TabStop = true; 
    217             this.recycleBin.UseVisualStyleBackColor = true; 
    218             this.recycleBin.CheckedChanged += new System.EventHandler(this.data_CheckedChanged); 
     102            resources.ApplyResources(this.typeCmb, "typeCmb"); 
     103            this.typeCmb.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 
     104            this.typeCmb.FormattingEnabled = true; 
     105            this.typeCmb.Name = "typeCmb"; 
     106            this.typeCmb.SelectedIndexChanged += new System.EventHandler(this.typeCmb_SelectedIndexChanged); 
     107            //  
     108            // typeSettingsPnl 
     109            //  
     110            resources.ApplyResources(this.typeSettingsPnl, "typeSettingsPnl"); 
     111            this.typeSettingsPnl.Name = "typeSettingsPnl"; 
    219112            //  
    220113            // TaskDataSelectionForm 
     
    224117            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; 
    225118            this.CancelButton = this.cancel; 
    226             this.Controls.Add(this.recycleBin); 
    227             this.Controls.Add(this.unusedClusterTips); 
     119            this.Controls.Add(this.typeSettingsPnl); 
     120            this.Controls.Add(this.typeCmb); 
     121            this.Controls.Add(this.typeLbl); 
    228122            this.Controls.Add(this.cancel); 
    229123            this.Controls.Add(this.ok); 
    230             this.Controls.Add(this.method); 
     124            this.Controls.Add(this.methodCmb); 
    231125            this.Controls.Add(this.methodLbl); 
    232             this.Controls.Add(this.unusedDisk); 
    233             this.Controls.Add(this.folderDelete); 
    234             this.Controls.Add(this.folderExclude); 
    235             this.Controls.Add(this.folderExcludeLbl); 
    236             this.Controls.Add(this.folderInclude); 
    237             this.Controls.Add(this.folderIncludeLbl); 
    238             this.Controls.Add(this.folderBrowse); 
    239             this.Controls.Add(this.folderPath); 
    240             this.Controls.Add(this.fileBrowse); 
    241             this.Controls.Add(this.filePath); 
    242             this.Controls.Add(this.unused); 
    243             this.Controls.Add(this.folder); 
    244             this.Controls.Add(this.file); 
    245126            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; 
    246127            this.MaximizeBox = false; 
     
    256137        #endregion 
    257138 
    258         private System.Windows.Forms.RadioButton file; 
    259         private System.Windows.Forms.RadioButton folder; 
    260         private System.Windows.Forms.RadioButton unused; 
    261         private System.Windows.Forms.TextBox filePath; 
    262         private System.Windows.Forms.Button fileBrowse; 
    263         private System.Windows.Forms.TextBox folderPath; 
    264         private System.Windows.Forms.Button folderBrowse; 
    265         private System.Windows.Forms.Label folderIncludeLbl; 
    266         private System.Windows.Forms.TextBox folderInclude; 
    267         private System.Windows.Forms.Label folderExcludeLbl; 
    268         private System.Windows.Forms.TextBox folderExclude; 
    269         private System.Windows.Forms.CheckBox folderDelete; 
    270         private System.Windows.Forms.ComboBox unusedDisk; 
    271139        private System.Windows.Forms.Label methodLbl; 
    272         private System.Windows.Forms.ComboBox method; 
     140        private System.Windows.Forms.ComboBox methodCmb; 
    273141        private System.Windows.Forms.Button ok; 
    274142        private System.Windows.Forms.Button cancel; 
    275         private System.Windows.Forms.OpenFileDialog fileDialog; 
    276         private System.Windows.Forms.FolderBrowserDialog folderDialog; 
    277143        private System.Windows.Forms.ErrorProvider errorProvider; 
    278         private System.Windows.Forms.CheckBox unusedClusterTips; 
    279         private System.Windows.Forms.RadioButton recycleBin; 
     144        private System.Windows.Forms.ComboBox typeCmb; 
     145        private System.Windows.Forms.Label typeLbl; 
     146        private System.Windows.Forms.Panel typeSettingsPnl; 
    280147    } 
    281148} 
  • trunk/eraser/Eraser/TaskDataSelectionForm.cs

    r2020 r2024  
    3838    public partial class TaskDataSelectionForm : Form 
    3939    { 
    40         private class DriveItem 
     40        private class ErasureType 
    4141        { 
     42            public ErasureType(string name, ErasureTarget target) 
     43            { 
     44                Name = name; 
     45                Target = target; 
     46            } 
     47 
    4248            public override string ToString() 
    4349            { 
    44                 return Label; 
     50                return Name; 
    4551            } 
    4652 
    47             public string Drive; 
    48             public string Label; 
    49             public Icon Icon; 
     53            public string Name; 
     54            public ErasureTarget Target; 
     55 
     56            /// <summary> 
     57            /// The configurer returned by the active erasure target type. 
     58            /// </summary> 
     59            public IErasureTargetConfigurer Configurer; 
    5060        } 
    5161 
     
    5565            InitializeComponent(); 
    5666            Theming.ApplyTheme(this); 
    57             file.Checked = true; 
    5867 
    59             //Populate the drives list 
    60             foreach (VolumeInfo volume in VolumeInfo.Volumes.Concat(VolumeInfo.NetworkDrives)) 
    61             { 
    62                 DriveType driveType = volume.VolumeType; 
    63                 if (driveType != DriveType.Unknown && 
    64                     driveType != DriveType.NoRootDirectory && 
    65                     driveType != DriveType.CDRom) 
    66                 { 
    67                     //Skip drives which are not mounted: we cannot erase their unused space. 
    68                     if (!volume.IsMounted) 
    69                         continue; 
     68            //Insert the types of erasure targets 
     69            typeCmb.Items.Add(new ErasureType("File", new FileTarget())); 
     70            typeCmb.Items.Add(new ErasureType("Files in Folder", new FolderTarget())); 
     71            typeCmb.Items.Add(new ErasureType("Unused disk space", new UnusedSpaceTarget())); 
     72            typeCmb.Items.Add(new ErasureType("Recycle Bin", new RecycleBinTarget())); 
     73            typeCmb.SelectedIndex = 0; 
    7074 
    71                     DriveItem item = new DriveItem(); 
    72                     string volumePath = volume.MountPoints[0]; 
    73                     DirectoryInfo root = new DirectoryInfo(volumePath); 
    74  
    75                     item.Drive = volumePath; 
    76                     item.Label = root.GetDescription(); 
    77                     item.Icon = root.GetIcon(); 
    78                     unusedDisk.Items.Add(item); 
    79                 } 
    80             } 
    81  
    82             if (unusedDisk.Items.Count != 0) 
    83                 unusedDisk.SelectedIndex = 0; 
    84  
     75             
    8576            //And the methods list 
    86             this.method.Items.Add(ErasureMethodRegistrar.Default); 
     77            this.methodCmb.Items.Add(ErasureMethodRegistrar.Default); 
    8778            foreach (ErasureMethod method in ManagerLibrary.Instance.ErasureMethodRegistrar) 
    88                 this.method.Items.Add(method); 
    89             if (this.method.Items.Count != 0) 
    90                 this.method.SelectedIndex = 0; 
     79                this.methodCmb.Items.Add(method); 
     80            if (this.methodCmb.Items.Count != 0) 
     81                this.methodCmb.SelectedIndex = 0; 
    9182        } 
    9283 
     
    10091            get 
    10192            { 
    102                 ErasureTarget result = null; 
    103                 if (file.Checked) 
    104                 { 
    105                     FileTarget fileTask = new FileTarget(); 
    106                     result = fileTask; 
     93                ErasureType type = (ErasureType)typeCmb.SelectedItem; 
     94                ErasureTarget result = type.Target; 
     95                type.Configurer.SaveTo(result); 
     96                result.Method = (ErasureMethod)methodCmb.SelectedItem; 
    10797 
    108                     fileTask.Path = filePath.Text; 
    109                 } 
    110                 else if (folder.Checked) 
    111                 { 
    112                     FolderTarget folderTask = new FolderTarget(); 
    113                     result = folderTask; 
    114  
    115                     folderTask.Path = folderPath.Text; 
    116                     folderTask.IncludeMask = folderInclude.Text; 
    117                     folderTask.ExcludeMask = folderExclude.Text; 
    118                     folderTask.DeleteIfEmpty = folderDelete.Checked; 
    119                 } 
    120                 else if (unused.Checked) 
    121                 { 
    122                     UnusedSpaceTarget unusedSpaceTask = new UnusedSpaceTarget(); 
    123                     result = unusedSpaceTask; 
    124  
    125                     unusedSpaceTask.Drive = ((DriveItem)unusedDisk.SelectedItem).Drive; 
    126                     unusedSpaceTask.EraseClusterTips = unusedClusterTips.Checked; 
    127                 } 
    128                 else 
    129                 { 
    130                     RecycleBinTarget recycleBinTask = new RecycleBinTarget(); 
    131                     result = recycleBinTask; 
    132                 } 
    133  
    134                 result.Method = (ErasureMethod)this.method.SelectedItem; 
    13598                return result; 
    13699            } 
     
    138101            { 
    139102                //Set the erasure method. 
    140                 foreach (object item in method.Items) 
     103                foreach (object item in methodCmb.Items) 
    141104                    if (((ErasureMethod)item).Guid == value.Method.Guid) 
    142                         method.SelectedItem = item; 
     105                        methodCmb.SelectedItem = item; 
    143106 
    144                 //Then the data to be erased. 
    145                 FileTarget fileTarget = value as FileTarget; 
    146                 FolderTarget folderTarget = value as FolderTarget; 
    147                 UnusedSpaceTarget unusedSpaceTarget = value as UnusedSpaceTarget; 
     107                //Set the active erasure type. 
     108                foreach (ErasureType type in typeCmb.Items) 
     109                { 
     110                    if (type.Target.GetType() == value.GetType()) 
     111                    { 
     112                        typeCmb.SelectedItem = type; 
    148113 
    149                 if (fileTarget != null) 
    150                 { 
    151                     file.Checked = true; 
    152                     filePath.Text = fileTarget.Path; 
     114                        type.Target = value; 
     115                        type.Configurer = value.Configurer; 
     116                        if (type.Configurer != null) 
     117                            type.Configurer.LoadFrom(value); 
     118                        break; 
     119                    } 
    153120                } 
    154                 else if (folderTarget != null) 
    155                 { 
    156                     folder.Checked = true; 
    157  
    158                     folderPath.Text = folderTarget.Path; 
    159                     folderInclude.Text = folderTarget.IncludeMask; 
    160                     folderExclude.Text = folderTarget.ExcludeMask; 
    161                     folderDelete.Checked = folderTarget.DeleteIfEmpty; 
    162                 } 
    163                 else if (unusedSpaceTarget != null) 
    164                 { 
    165                     unused.Checked = true; 
    166                     foreach (object item in unusedDisk.Items) 
    167                         if (((DriveItem)item).Drive == unusedSpaceTarget.Drive) 
    168                             unusedDisk.SelectedItem = item; 
    169                     unusedClusterTips.Checked = unusedSpaceTarget.EraseClusterTips; 
    170                 } 
    171                 else if (value is RecycleBinTarget) 
    172                 { 
    173                     recycleBin.Checked = true; 
    174                 } 
    175                 else 
    176                     throw new ArgumentException("Unknown erasure target."); 
    177121            } 
    178122        } 
    179123 
    180         private void method_SelectedIndexChanged(object sender, EventArgs e) 
     124        private void typeCmb_SelectedIndexChanged(object sender, EventArgs e) 
    181125        { 
    182             if (!(method.SelectedItem is UnusedSpaceErasureMethod) && 
    183                 method.SelectedItem != ErasureMethodRegistrar.Default) 
     126            //Remove the old controls 
     127            while (typeSettingsPnl.Controls.Count > 0) 
     128                typeSettingsPnl.Controls.RemoveAt(0); 
     129 
     130            //Then add in the new configurer 
     131            ErasureType type = (ErasureType)typeCmb.SelectedItem; 
     132            if (type.Configurer == null) 
    184133            { 
    185                 if (unused.Checked) 
    186                 { 
    187                     file.Checked = true; 
    188                     errorProvider.SetError(unused, S._("The erasure method selected does " + 
    189                         "not support unused disk space erasures.")); 
    190                 } 
    191                 unused.Enabled = false; 
     134                type.Configurer = type.Target.Configurer; 
     135                if (type.Configurer == null) 
     136                    return; 
    192137            } 
    193             else if (!unused.Enabled) 
    194             { 
    195                 unused.Enabled = true; 
    196                 errorProvider.Clear(); 
    197             } 
    198         } 
    199138 
    200         private void data_CheckedChanged(object sender, EventArgs e) 
    201         { 
    202             filePath.Enabled = fileBrowse.Enabled = file.Checked; 
    203             folderPath.Enabled = folderBrowse.Enabled = folderIncludeLbl.Enabled = 
    204                 folderInclude.Enabled = folderExcludeLbl.Enabled = folderExclude.Enabled = 
    205                 folderDelete.Enabled = folder.Checked; 
    206             unusedDisk.Enabled = unusedClusterTips.Enabled = unused.Checked; 
    207             errorProvider.Clear(); 
    208         } 
    209  
    210         private void fileBrowse_Click(object sender, EventArgs e) 
    211         { 
    212             fileDialog.FileName = filePath.Text; 
    213             if (fileDialog.ShowDialog() == DialogResult.OK) 
    214                 filePath.Text = fileDialog.FileName; 
    215         } 
    216  
    217         private void folderBrowse_Click(object sender, EventArgs e) 
    218         { 
    219             try 
    220             { 
    221                 folderDialog.SelectedPath = folderPath.Text; 
    222                 if (folderDialog.ShowDialog() == DialogResult.OK) 
    223                     folderPath.Text = folderDialog.SelectedPath; 
    224             } 
    225             catch (NotSupportedException) 
    226             { 
    227                 MessageBox.Show(this, S._("The path you selected is invalid."), S._("Eraser"), 
     139            if (!(type.Configurer is Control)) 
     140                MessageBox.Show(S._("The erasure target type could be configured, but it does " + 
     141                    "not provide a user interface for configuring."), S._("Select Data to Erase "), 
    228142                    MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, 
    229143                    Localisation.IsRightToLeft(this) ? 
    230144                        MessageBoxOptions.RtlReading | MessageBoxOptions.RightAlign : 0); 
    231             } 
    232         } 
    233145 
    234         private void unusedDisk_DrawItem(object sender, DrawItemEventArgs e) 
    235         { 
    236             if (e.Index == -1) 
    237                 return; 
    238  
    239             Graphics g = e.Graphics; 
    240             DriveItem item = (DriveItem)unusedDisk.Items[e.Index]; 
    241             Color textColour = e.ForeColor; 
    242             PointF textPos = e.Bounds.Location; 
    243             textPos.X += item.Icon.Width + 4; 
    244             textPos.Y += 2; 
    245  
    246             //Set the text colour and background colour if the control is disabled 
    247             if ((e.State & DrawItemState.Disabled) == 0) 
    248                 e.DrawBackground(); 
    249             else 
    250             { 
    251                 g.FillRectangle(new SolidBrush(SystemColors.ButtonFace), e.Bounds); 
    252                 textColour = SystemColors.GrayText; 
    253             } 
    254  
    255             g.DrawIcon(item.Icon, e.Bounds.X + 2, e.Bounds.Y); 
    256             g.DrawString(item.Label, e.Font, new SolidBrush(textColour), textPos); 
    257             if ((e.State & DrawItemState.Focus) != 0) 
    258                 e.DrawFocusRectangle(); 
     146            Control control = type.Configurer as Control; 
     147            typeSettingsPnl.Controls.Add(control); 
     148            control.Dock = DockStyle.Fill; 
    259149        } 
    260150 
    261151        private void ok_Click(object sender, EventArgs e) 
    262152        { 
    263             if (file.Checked && filePath.Text.Length == 0) 
    264                 errorProvider.SetError(filePath, S._("Invalid file path")); 
    265             else if (folder.Checked && folderPath.Text.Length == 0) 
    266                 errorProvider.SetError(folderPath, S._("Invalid folder path")); 
    267             else 
     153            ErasureType type = (ErasureType)typeCmb.SelectedItem; 
     154            if (methodCmb.SelectedItem != ErasureMethodRegistrar.Default && 
     155                !type.Target.SupportsMethod((ErasureMethod)methodCmb.SelectedItem)) 
     156            { 
     157                errorProvider.SetError(methodCmb, S._("The erasure method selected does " + 
     158                    "not support unused disk space erasures.")); 
     159            } 
     160            else if (type.Configurer.SaveTo(type.Target)) 
    268161            { 
    269162                errorProvider.Clear(); 
  • trunk/eraser/Eraser/TaskDataSelectionForm.resx

    r603 r2024  
    119119  </resheader> 
    120120  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
    121   <data name="file.AutoSize" type="System.Boolean, mscorlib"> 
    122     <value>True</value> 
    123   </data> 
    124   <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
    125   <data name="file.Location" type="System.Drawing.Point, System.Drawing"> 
    126     <value>8, 44</value> 
    127   </data> 
    128   <data name="file.Size" type="System.Drawing.Size, System.Drawing"> 
    129     <value>43, 19</value> 
    130   </data> 
    131   <data name="file.TabIndex" type="System.Int32, mscorlib"> 
    132     <value>3</value> 
    133   </data> 
    134   <data name="file.Text" xml:space="preserve"> 
    135     <value>File</value> 
    136   </data> 
    137   <data name="&gt;&gt;file.Name" xml:space="preserve"> 
    138     <value>file</value> 
    139   </data> 
    140   <data name="&gt;&gt;file.Type" xml:space="preserve"> 
    141     <value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    142   </data> 
    143   <data name="&gt;&gt;file.Parent" xml:space="preserve"> 
    144     <value>$this</value> 
    145   </data> 
    146   <data name="&gt;&gt;file.ZOrder" xml:space="preserve"> 
    147     <value>18</value> 
    148   </data> 
    149   <data name="folder.AutoSize" type="System.Boolean, mscorlib"> 
    150     <value>True</value> 
    151   </data> 
    152   <data name="folder.Location" type="System.Drawing.Point, System.Drawing"> 
    153     <value>8, 98</value> 
    154   </data> 
    155   <data name="folder.Size" type="System.Drawing.Size, System.Drawing"> 
    156     <value>95, 19</value> 
    157   </data> 
    158   <data name="folder.TabIndex" type="System.Int32, mscorlib"> 
    159     <value>6</value> 
    160   </data> 
    161   <data name="folder.Text" xml:space="preserve"> 
    162     <value>Files in folder</value> 
    163   </data> 
    164   <data name="&gt;&gt;folder.Name" xml:space="preserve"> 
    165     <value>folder</value> 
    166   </data> 
    167   <data name="&gt;&gt;folder.Type" xml:space="preserve"> 
    168     <value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    169   </data> 
    170   <data name="&gt;&gt;folder.Parent" xml:space="preserve"> 
    171     <value>$this</value> 
    172   </data> 
    173   <data name="&gt;&gt;folder.ZOrder" xml:space="preserve"> 
    174     <value>17</value> 
    175   </data> 
    176   <data name="unused.AutoSize" type="System.Boolean, mscorlib"> 
    177     <value>True</value> 
    178   </data> 
    179   <data name="unused.Location" type="System.Drawing.Point, System.Drawing"> 
    180     <value>8, 235</value> 
    181   </data> 
    182   <data name="unused.Size" type="System.Drawing.Size, System.Drawing"> 
    183     <value>122, 19</value> 
    184   </data> 
    185   <data name="unused.TabIndex" type="System.Int32, mscorlib"> 
    186     <value>14</value> 
    187   </data> 
    188   <data name="unused.Text" xml:space="preserve"> 
    189     <value>Unused disk space</value> 
    190   </data> 
    191   <data name="&gt;&gt;unused.Name" xml:space="preserve"> 
    192     <value>unused</value> 
    193   </data> 
    194   <data name="&gt;&gt;unused.Type" xml:space="preserve"> 
    195     <value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    196   </data> 
    197   <data name="&gt;&gt;unused.Parent" xml:space="preserve"> 
    198     <value>$this</value> 
    199   </data> 
    200   <data name="&gt;&gt;unused.ZOrder" xml:space="preserve"> 
    201     <value>16</value> 
    202   </data> 
    203   <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
    204   <data name="filePath.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> 
    205     <value>Top, Left, Right</value> 
    206   </data> 
    207   <data name="filePath.Location" type="System.Drawing.Point, System.Drawing"> 
    208     <value>31, 69</value> 
    209   </data> 
    210   <data name="filePath.Size" type="System.Drawing.Size, System.Drawing"> 
    211     <value>206, 23</value> 
    212   </data> 
    213   <data name="filePath.TabIndex" type="System.Int32, mscorlib"> 
    214     <value>4</value> 
    215   </data> 
    216   <data name="&gt;&gt;filePath.Name" xml:space="preserve"> 
    217     <value>filePath</value> 
    218   </data> 
    219   <data name="&gt;&gt;filePath.Type" xml:space="preserve"> 
    220     <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    221   </data> 
    222   <data name="&gt;&gt;filePath.Parent" xml:space="preserve"> 
    223     <value>$this</value> 
    224   </data> 
    225   <data name="&gt;&gt;filePath.ZOrder" xml:space="preserve"> 
    226     <value>15</value> 
    227   </data> 
    228   <data name="fileBrowse.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> 
    229     <value>Top, Right</value> 
    230   </data> 
    231   <data name="fileBrowse.Location" type="System.Drawing.Point, System.Drawing"> 
    232     <value>243, 68</value> 
    233   </data> 
    234   <data name="fileBrowse.Size" type="System.Drawing.Size, System.Drawing"> 
    235     <value>75, 23</value> 
    236   </data> 
    237   <data name="fileBrowse.TabIndex" type="System.Int32, mscorlib"> 
    238     <value>5</value> 
    239   </data> 
    240   <data name="fileBrowse.Text" xml:space="preserve"> 
    241     <value>Browse...</value> 
    242   </data> 
    243   <data name="&gt;&gt;fileBrowse.Name" xml:space="preserve"> 
    244     <value>fileBrowse</value> 
    245   </data> 
    246   <data name="&gt;&gt;fileBrowse.Type" xml:space="preserve"> 
    247     <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    248   </data> 
    249   <data name="&gt;&gt;fileBrowse.Parent" xml:space="preserve"> 
    250     <value>$this</value> 
    251   </data> 
    252   <data name="&gt;&gt;fileBrowse.ZOrder" xml:space="preserve"> 
    253     <value>14</value> 
    254   </data> 
    255   <data name="folderPath.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> 
    256     <value>Top, Left, Right</value> 
    257   </data> 
    258   <data name="folderPath.Location" type="System.Drawing.Point, System.Drawing"> 
    259     <value>31, 123</value> 
    260   </data> 
    261   <data name="folderPath.Size" type="System.Drawing.Size, System.Drawing"> 
    262     <value>206, 23</value> 
    263   </data> 
    264   <data name="folderPath.TabIndex" type="System.Int32, mscorlib"> 
    265     <value>7</value> 
    266   </data> 
    267   <data name="&gt;&gt;folderPath.Name" xml:space="preserve"> 
    268     <value>folderPath</value> 
    269   </data> 
    270   <data name="&gt;&gt;folderPath.Type" xml:space="preserve"> 
    271     <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    272   </data> 
    273   <data name="&gt;&gt;folderPath.Parent" xml:space="preserve"> 
    274     <value>$this</value> 
    275   </data> 
    276   <data name="&gt;&gt;folderPath.ZOrder" xml:space="preserve"> 
    277     <value>13</value> 
    278   </data> 
    279   <data name="folderBrowse.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> 
    280     <value>Top, Right</value> 
    281   </data> 
    282   <data name="folderBrowse.Location" type="System.Drawing.Point, System.Drawing"> 
    283     <value>243, 123</value> 
    284   </data> 
    285   <data name="folderBrowse.Size" type="System.Drawing.Size, System.Drawing"> 
    286     <value>75, 23</value> 
    287   </data> 
    288   <data name="folderBrowse.TabIndex" type="System.Int32, mscorlib"> 
    289     <value>8</value> 
    290   </data> 
    291   <data name="folderBrowse.Text" xml:space="preserve"> 
    292     <value>Browse...</value> 
    293   </data> 
    294   <data name="&gt;&gt;folderBrowse.Name" xml:space="preserve"> 
    295     <value>folderBrowse</value> 
    296   </data> 
    297   <data name="&gt;&gt;folderBrowse.Type" xml:space="preserve"> 
    298     <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    299   </data> 
    300   <data name="&gt;&gt;folderBrowse.Parent" xml:space="preserve"> 
    301     <value>$this</value> 
    302   </data> 
    303   <data name="&gt;&gt;folderBrowse.ZOrder" xml:space="preserve"> 
    304     <value>12</value> 
    305   </data> 
    306   <data name="folderIncludeLbl.AutoSize" type="System.Boolean, mscorlib"> 
    307     <value>True</value> 
    308   </data> 
    309   <data name="folderIncludeLbl.Location" type="System.Drawing.Point, System.Drawing"> 
    310     <value>28, 155</value> 
    311   </data> 
    312   <data name="folderIncludeLbl.Size" type="System.Drawing.Size, System.Drawing"> 
    313     <value>80, 15</value> 
    314   </data> 
    315   <data name="folderIncludeLbl.TabIndex" type="System.Int32, mscorlib"> 
    316     <value>9</value> 
    317   </data> 
    318   <data name="folderIncludeLbl.Text" xml:space="preserve"> 
    319     <value>Include Mask:</value> 
    320   </data> 
    321   <data name="&gt;&gt;folderIncludeLbl.Name" xml:space="preserve"> 
    322     <value>folderIncludeLbl</value> 
    323   </data> 
    324   <data name="&gt;&gt;folderIncludeLbl.Type" xml:space="preserve"> 
    325     <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    326   </data> 
    327   <data name="&gt;&gt;folderIncludeLbl.Parent" xml:space="preserve"> 
    328     <value>$this</value> 
    329   </data> 
    330   <data name="&gt;&gt;folderIncludeLbl.ZOrder" xml:space="preserve"> 
    331     <value>11</value> 
    332   </data> 
    333   <data name="folderInclude.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> 
    334     <value>Top, Left, Right</value> 
    335   </data> 
    336   <data name="folderInclude.Location" type="System.Drawing.Point, System.Drawing"> 
    337     <value>129, 152</value> 
    338   </data> 
    339   <data name="folderInclude.Size" type="System.Drawing.Size, System.Drawing"> 
    340     <value>189, 23</value> 
    341   </data> 
    342   <data name="folderInclude.TabIndex" type="System.Int32, mscorlib"> 
    343     <value>10</value> 
    344   </data> 
    345   <data name="&gt;&gt;folderInclude.Name" xml:space="preserve"> 
    346     <value>folderInclude</value> 
    347   </data> 
    348   <data name="&gt;&gt;folderInclude.Type" xml:space="preserve"> 
    349     <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    350   </data> 
    351   <data name="&gt;&gt;folderInclude.Parent" xml:space="preserve"> 
    352     <value>$this</value> 
    353   </data> 
    354   <data name="&gt;&gt;folderInclude.ZOrder" xml:space="preserve"> 
    355     <value>10</value> 
    356   </data> 
    357   <data name="folderExcludeLbl.AutoSize" type="System.Boolean, mscorlib"> 
    358     <value>True</value> 
    359   </data> 
    360   <data name="folderExcludeLbl.Location" type="System.Drawing.Point, System.Drawing"> 
    361     <value>28, 184</value> 
    362   </data> 
    363   <data name="folderExcludeLbl.Size" type="System.Drawing.Size, System.Drawing"> 
    364     <value>81, 15</value> 
    365   </data> 
    366   <data name="folderExcludeLbl.TabIndex" type="System.Int32, mscorlib"> 
    367     <value>11</value> 
    368   </data> 
    369   <data name="folderExcludeLbl.Text" xml:space="preserve"> 
    370     <value>Exclude Mask:</value> 
    371   </data> 
    372   <data name="&gt;&gt;folderExcludeLbl.Name" xml:space="preserve"> 
    373     <value>folderExcludeLbl</value> 
    374   </data> 
    375   <data name="&gt;&gt;folderExcludeLbl.Type" xml:space="preserve"> 
    376     <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    377   </data> 
    378   <data name="&gt;&gt;folderExcludeLbl.Parent" xml:space="preserve"> 
    379     <value>$this</value> 
    380   </data> 
    381   <data name="&gt;&gt;folderExcludeLbl.ZOrder" xml:space="preserve"> 
    382     <value>9</value> 
    383   </data> 
    384   <data name="folderExclude.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> 
    385     <value>Top, Left, Right</value> 
    386   </data> 
    387   <data name="folderExclude.Location" type="System.Drawing.Point, System.Drawing"> 
    388     <value>129, 181</value> 
    389   </data> 
    390   <data name="folderExclude.Size" type="System.Drawing.Size, System.Drawing"> 
    391     <value>189, 23</value> 
    392   </data> 
    393   <data name="folderExclude.TabIndex" type="System.Int32, mscorlib"> 
    394     <value>12</value> 
    395   </data> 
    396   <data name="&gt;&gt;folderExclude.Name" xml:space="preserve"> 
    397     <value>folderExclude</value> 
    398   </data> 
    399   <data name="&gt;&gt;folderExclude.Type" xml:space="preserve"> 
    400     <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    401   </data> 
    402   <data name="&gt;&gt;folderExclude.Parent" xml:space="preserve"> 
    403     <value>$this</value> 
    404   </data> 
    405   <data name="&gt;&gt;folderExclude.ZOrder" xml:space="preserve"> 
    406     <value>8</value> 
    407   </data> 
    408   <data name="folderDelete.AutoSize" type="System.Boolean, mscorlib"> 
    409     <value>True</value> 
    410   </data> 
    411   <data name="folderDelete.Location" type="System.Drawing.Point, System.Drawing"> 
    412     <value>31, 210</value> 
    413   </data> 
    414   <data name="folderDelete.Size" type="System.Drawing.Size, System.Drawing"> 
    415     <value>140, 19</value> 
    416   </data> 
    417   <data name="folderDelete.TabIndex" type="System.Int32, mscorlib"> 
    418     <value>13</value> 
    419   </data> 
    420   <data name="folderDelete.Text" xml:space="preserve"> 
    421     <value>Delete folder if empty</value> 
    422   </data> 
    423   <data name="&gt;&gt;folderDelete.Name" xml:space="preserve"> 
    424     <value>folderDelete</value> 
    425   </data> 
    426   <data name="&gt;&gt;folderDelete.Type" xml:space="preserve"> 
    427     <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    428   </data> 
    429   <data name="&gt;&gt;folderDelete.Parent" xml:space="preserve"> 
    430     <value>$this</value> 
    431   </data> 
    432   <data name="&gt;&gt;folderDelete.ZOrder" xml:space="preserve"> 
    433     <value>7</value> 
    434   </data> 
    435   <data name="unusedDisk.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> 
    436     <value>Top, Left, Right</value> 
    437   </data> 
    438   <data name="unusedDisk.Location" type="System.Drawing.Point, System.Drawing"> 
    439     <value>31, 260</value> 
    440   </data> 
    441   <data name="unusedDisk.Size" type="System.Drawing.Size, System.Drawing"> 
    442     <value>287, 24</value> 
    443   </data> 
    444   <data name="unusedDisk.TabIndex" type="System.Int32, mscorlib"> 
    445     <value>15</value> 
    446   </data> 
    447   <data name="&gt;&gt;unusedDisk.Name" xml:space="preserve"> 
    448     <value>unusedDisk</value> 
    449   </data> 
    450   <data name="&gt;&gt;unusedDisk.Type" xml:space="preserve"> 
    451     <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    452   </data> 
    453   <data name="&gt;&gt;unusedDisk.Parent" xml:space="preserve"> 
    454     <value>$this</value> 
    455   </data> 
    456   <data name="&gt;&gt;unusedDisk.ZOrder" xml:space="preserve"> 
    457     <value>6</value> 
    458   </data> 
    459121  <data name="methodLbl.AutoSize" type="System.Boolean, mscorlib"> 
    460122    <value>True</value> 
    461123  </data> 
     124  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
    462125  <data name="methodLbl.Location" type="System.Drawing.Point, System.Drawing"> 
    463126    <value>5, 9</value> 
     
    482145  </data> 
    483146  <data name="&gt;&gt;methodLbl.ZOrder" xml:space="preserve"> 
     147    <value>6</value> 
     148  </data> 
     149  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     150  <data name="methodCmb.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> 
     151    <value>Top, Left, Right</value> 
     152  </data> 
     153  <data name="methodCmb.Location" type="System.Drawing.Point, System.Drawing"> 
     154    <value>129, 6</value> 
     155  </data> 
     156  <data name="methodCmb.Size" type="System.Drawing.Size, System.Drawing"> 
     157    <value>189, 23</value> 
     158  </data> 
     159  <data name="methodCmb.TabIndex" type="System.Int32, mscorlib"> 
     160    <value>2</value> 
     161  </data> 
     162  <data name="&gt;&gt;methodCmb.Name" xml:space="preserve"> 
     163    <value>methodCmb</value> 
     164  </data> 
     165  <data name="&gt;&gt;methodCmb.Type" xml:space="preserve"> 
     166    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
     167  </data> 
     168  <data name="&gt;&gt;methodCmb.Parent" xml:space="preserve"> 
     169    <value>$this</value> 
     170  </data> 
     171  <data name="&gt;&gt;methodCmb.ZOrder" xml:space="preserve"> 
    484172    <value>5</value> 
    485   </data> 
    486   <data name="method.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> 
    487     <value>Top, Left, Right</value> 
    488   </data> 
    489   <data name="method.Location" type="System.Drawing.Point, System.Drawing"> 
    490     <value>129, 6</value> 
    491   </data> 
    492   <data name="method.Size" type="System.Drawing.Size, System.Drawing"> 
    493     <value>189, 23</value> 
    494   </data> 
    495   <data name="method.TabIndex" type="System.Int32, mscorlib"> 
    496     <value>2</value> 
    497   </data> 
    498   <data name="&gt;&gt;method.Name" xml:space="preserve"> 
    499     <value>method</value> 
    500   </data> 
    501   <data name="&gt;&gt;method.Type" xml:space="preserve"> 
    502     <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    503   </data> 
    504   <data name="&gt;&gt;method.Parent" xml:space="preserve"> 
    505     <value>$this</value> 
    506   </data> 
    507   <data name="&gt;&gt;method.ZOrder" xml:space="preserve"> 
    508     <value>4</value> 
    509173  </data> 
    510174  <data name="ok.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> 
     
    533197  </data> 
    534198  <data name="&gt;&gt;ok.ZOrder" xml:space="preserve"> 
    535     <value>3</value> 
     199    <value>4</value> 
    536200  </data> 
    537201  <data name="cancel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> 
     
    560224  </data> 
    561225  <data name="&gt;&gt;cancel.ZOrder" xml:space="preserve"> 
    562     <value>2</value> 
    563   </data> 
    564   <metadata name="fileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> 
    565     <value>17, 17</value> 
    566   </metadata> 
    567   <data name="fileDialog.Filter" xml:space="preserve"> 
    568     <value>All files (*.*)|*.*</value> 
    569   </data> 
    570   <metadata name="folderDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> 
    571     <value>157, 17</value> 
    572   </metadata> 
    573   <data name="folderDialog.Description" xml:space="preserve"> 
    574     <value>Select a folder to erase.</value> 
     226    <value>3</value> 
    575227  </data> 
    576228  <metadata name="errorProvider.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> 
     
    586238    <value>330, 375</value> 
    587239  </data> 
    588   <data name="recycleBin.AutoSize" type="System.Boolean, mscorlib"> 
     240  <data name="typeSettingsPnl.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> 
     241    <value>Top, Bottom, Left, Right</value> 
     242  </data> 
     243  <data name="typeSettingsPnl.Location" type="System.Drawing.Point, System.Drawing"> 
     244    <value>8, 64</value> 
     245  </data> 
     246  <data name="typeSettingsPnl.Size" type="System.Drawing.Size, System.Drawing"> 
     247    <value>310, 270</value> 
     248  </data> 
     249  <data name="typeSettingsPnl.TabIndex" type="System.Int32, mscorlib"> 
     250    <value>22</value> 
     251  </data> 
     252  <data name="&gt;&gt;typeSettingsPnl.Name" xml:space="preserve"> 
     253    <value>typeSettingsPnl</value> 
     254  </data> 
     255  <data name="&gt;&gt;typeSettingsPnl.Type" xml:space="preserve"> 
     256    <value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
     257  </data> 
     258  <data name="&gt;&gt;typeSettingsPnl.Parent" xml:space="preserve"> 
     259    <value>$this</value> 
     260  </data> 
     261  <data name="&gt;&gt;typeSettingsPnl.ZOrder" xml:space="preserve"> 
     262    <value>0</value> 
     263  </data> 
     264  <data name="typeCmb.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> 
     265    <value>Top, Left, Right</value> 
     266  </data> 
     267  <data name="typeCmb.Location" type="System.Drawing.Point, System.Drawing"> 
     268    <value>129, 35</value> 
     269  </data> 
     270  <data name="typeCmb.Size" type="System.Drawing.Size, System.Drawing"> 
     271    <value>189, 23</value> 
     272  </data> 
     273  <data name="typeCmb.TabIndex" type="System.Int32, mscorlib"> 
     274    <value>21</value> 
     275  </data> 
     276  <data name="&gt;&gt;typeCmb.Name" xml:space="preserve"> 
     277    <value>typeCmb</value> 
     278  </data> 
     279  <data name="&gt;&gt;typeCmb.Type" xml:space="preserve"> 
     280    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
     281  </data> 
     282  <data name="&gt;&gt;typeCmb.Parent" xml:space="preserve"> 
     283    <value>$this</value> 
     284  </data> 
     285  <data name="&gt;&gt;typeCmb.ZOrder" xml:space="preserve"> 
     286    <value>1</value> 
     287  </data> 
     288  <data name="typeLbl.AutoSize" type="System.Boolean, mscorlib"> 
    589289    <value>True</value> 
    590290  </data> 
    591   <data name="recycleBin.Location" type="System.Drawing.Point, System.Drawing"> 
    592     <value>8, 315</value> 
    593   </data> 
    594   <data name="recycleBin.Size" type="System.Drawing.Size, System.Drawing"> 
    595     <value>85, 19</value> 
    596   </data> 
    597   <data name="recycleBin.TabIndex" type="System.Int32, mscorlib"> 
    598     <value>17</value> 
    599   </data> 
    600   <data name="recycleBin.Text" xml:space="preserve"> 
    601     <value>Recycle Bin</value> 
    602   </data> 
    603   <data name="&gt;&gt;recycleBin.Name" xml:space="preserve"> 
    604     <value>recycleBin</value> 
    605   </data> 
    606   <data name="&gt;&gt;recycleBin.Type" xml:space="preserve"> 
    607     <value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    608   </data> 
    609   <data name="&gt;&gt;recycleBin.Parent" xml:space="preserve"> 
    610     <value>$this</value> 
    611   </data> 
    612   <data name="&gt;&gt;recycleBin.ZOrder" xml:space="preserve"> 
    613     <value>0</value> 
    614   </data> 
    615   <data name="unusedClusterTips.AutoSize" type="System.Boolean, mscorlib"> 
    616     <value>True</value> 
    617   </data> 
    618   <data name="unusedClusterTips.Location" type="System.Drawing.Point, System.Drawing"> 
    619     <value>31, 290</value> 
    620   </data> 
    621   <data name="unusedClusterTips.Size" type="System.Drawing.Size, System.Drawing"> 
    622     <value>113, 19</value> 
    623   </data> 
    624   <data name="unusedClusterTips.TabIndex" type="System.Int32, mscorlib"> 
    625     <value>16</value> 
    626   </data> 
    627   <data name="unusedClusterTips.Text" xml:space="preserve"> 
    628     <value>Erase cluster tips</value> 
    629   </data> 
    630   <data name="&gt;&gt;unusedClusterTips.Name" xml:space="preserve"> 
    631     <value>unusedClusterTips</value> 
    632   </data> 
    633   <data name="&gt;&gt;unusedClusterTips.Type" xml:space="preserve"> 
    634     <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    635   </data> 
    636   <data name="&gt;&gt;unusedClusterTips.Parent" xml:space="preserve"> 
    637     <value>$this</value> 
    638   </data> 
    639   <data name="&gt;&gt;unusedClusterTips.ZOrder" xml:space="preserve"> 
    640     <value>1</value> 
     291  <data name="typeLbl.Location" type="System.Drawing.Point, System.Drawing"> 
     292    <value>5, 38</value> 
     293  </data> 
     294  <data name="typeLbl.Size" type="System.Drawing.Size, System.Drawing"> 
     295    <value>70, 15</value> 
     296  </data> 
     297  <data name="typeLbl.TabIndex" type="System.Int32, mscorlib"> 
     298    <value>20</value> 
     299  </data> 
     300  <data name="typeLbl.Text" xml:space="preserve"> 
     301    <value>Target type:</value> 
     302  </data> 
     303  <data name="&gt;&gt;typeLbl.Name" xml:space="preserve"> 
     304    <value>typeLbl</value> 
     305  </data> 
     306  <data name="&gt;&gt;typeLbl.Type" xml:space="preserve"> 
     307    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
     308  </data> 
     309  <data name="&gt;&gt;typeLbl.Parent" xml:space="preserve"> 
     310    <value>$this</value> 
     311  </data> 
     312  <data name="&gt;&gt;typeLbl.ZOrder" xml:space="preserve"> 
     313    <value>2</value> 
    641314  </data> 
    642315  <data name="$this.Font" type="System.Drawing.Font, System.Drawing"> 
     
    649322    <value>Select Data to Erase</value> 
    650323  </data> 
    651   <data name="&gt;&gt;fileDialog.Name" xml:space="preserve"> 
    652     <value>fileDialog</value> 
    653   </data> 
    654   <data name="&gt;&gt;fileDialog.Type" xml:space="preserve"> 
    655     <value>System.Windows.Forms.OpenFileDialog, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    656   </data> 
    657   <data name="&gt;&gt;folderDialog.Name" xml:space="preserve"> 
    658     <value>folderDialog</value> 
    659   </data> 
    660   <data name="&gt;&gt;folderDialog.Type" xml:space="preserve"> 
    661     <value>System.Windows.Forms.FolderBrowserDialog, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    662   </data> 
    663324  <data name="&gt;&gt;errorProvider.Name" xml:space="preserve"> 
    664325    <value>errorProvider</value> 
Note: See TracChangeset for help on using the changeset viewer.